{"openapi":"3.0.0","info":{"title":"Pachca API","version":"1.0.0"},"tags":[{"name":"OAuth"},{"name":"Chats"},{"name":"Profile"},{"name":"Users"},{"name":"Group tags"},{"name":"Members"},{"name":"Threads"},{"name":"Messages"},{"name":"Read members"},{"name":"Reactions"},{"name":"Search"},{"name":"Tasks"},{"name":"Drafts"},{"name":"Views"},{"name":"Bots"},{"name":"Security"},{"name":"Custom Properties"},{"name":"Files"}],"paths":{"/audit_events":{"get":{"operationId":"SecurityOperations_getAuditEvents","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","required":false,"description":"Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","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","required":false,"description":"Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","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","required":false,"description":"Фильтр по конкретному типу события","schema":{"$ref":"#/components/schemas/AuditEventKey","example":"user_login"},"example":"user_login","explode":false},{"name":"actor_id","in":"query","required":false,"description":"Идентификатор пользователя, выполнившего действие","schema":{"type":"string","example":"98765"},"example":"98765","explode":false},{"name":"actor_type","in":"query","required":false,"description":"Тип актора","schema":{"type":"string","example":"User"},"example":"User","explode":false},{"name":"entity_id","in":"query","required":false,"description":"Идентификатор затронутой сущности","schema":{"type":"string","example":"98765"},"example":"98765","explode":false},{"name":"entity_type","in":"query","required":false,"description":"Тип сущности","schema":{"type":"string","example":"User"},"example":"User","explode":false},{"name":"limit","in":"query","required":false,"description":"Количество записей для возврата","schema":{"type":"integer","format":"int32","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/AuditEvent"}},"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":["Security"],"x-paginated":true,"x-requirements":{"scope":"audit_events:read","plan":"corporation"}}},"/bot/recreate_token":{"post":{"operationId":"BotOperations_selfRecreateBotToken","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","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/BotCreateResponse"}},"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"},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"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":"bot_self:write"}}},"/bot/webhook":{"put":{"operationId":"BotOperations_selfUpdateBotWebhook","description":"Саморегистрация вебхука бота\n\nМетод позволяет боту самостоятельно изменить `URL` своего исходящего вебхука своим же токеном — без участия администратора и без знания собственного `id`. Меняется вебхук того бота, которому принадлежит токен. Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`.","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/BotResponse"}},"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"}}}}}},"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"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotWebhookSelfUpdateRequest"},"example":{"webhook":{"outgoing_url":"https://www.website.com/tasks/new"}}}}},"x-requirements":{"scope":"bot_self:webhook:write"}}},"/bots":{"get":{"operationId":"BotOperations_listBots","description":"Список ботов\n\nБоты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию.\n\nПараметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят — их показывают один раз при создании и при ротации.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты.","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.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BotResponse"}},"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"}}],"meta":{"paginate":{"next_page":"eyJpZCI6MTczODgxNn0"}}}}}},"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":["Bots"],"x-paginated":true,"x-requirements":{"scope":"bots:read"}},"post":{"operationId":"BotOperations_createBot","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":[],"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/BotCreateResponse"}},"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"},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"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":["Bots"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$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"]}}}}},"x-requirements":{"scope":"bots:write"}}},"/bots/{id}":{"get":{"operationId":"BotOperations_getBot","description":"Информация о боте\n\nНастройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nМетод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит. На остальных метод ответит `403`.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots).","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":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/BotResponse"}},"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"}}}}}},"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":"bots:read"}},"put":{"operationId":"BotOperations_updateBot","description":"Редактирование бота\n\nМеняет настройки бота: перезаписываются только переданные поля.\n\nПоле `single_chat` принимается только при создании бота. В этом методе оно молча игнорируется: ответ приходит успешный, а режим бота не меняется.\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком, а новый набор скоупов сразу применяется к действующему токену бота — перевыпускать его не нужно.\n\nВы не можете редактировать бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота).","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":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/BotResponse"}},"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":["Bots"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotUpdateRequest"}}}},"x-requirements":{"scope":"bots:write"}},"delete":{"operationId":"BotOperations_deleteBot","description":"Удаление бота\n\nУбирает бота из пространства насовсем. Прежний `access_token` бота сразу инвалидируется, бот исключается из всех чатов, его исходящий вебхук удаляется.\n\nУдаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор бота","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":{"$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":"bots:write"}}},"/bots/{id}/recreate_token":{"post":{"operationId":"BotOperations_recreateBotToken","description":"Ротация токена бота\n\nМетод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`.\n\nНовый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена.\n\n\nРотация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты.","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":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/BotCreateResponse"}},"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"},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"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":"bots:write"}}},"/chats":{"post":{"operationId":"ChatOperations_createChat","description":"Новый чат\n\nСоздаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся.\n\nДля создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread).\n\nУчастников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_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/Chat"}},"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":["Chats"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCreateRequest"}}}},"x-requirements":{"scope":"chats:create"}},"get":{"operationId":"ChatOperations_listChats","description":"Список чатов\n\nПо умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал.\n\nТреды в списке не приходят никогда, для них есть [Список тредов](GET /threads).\n\n`archived=true` не переключает выдачу на архив, а добавляет архивные чаты к активным.","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":"Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.","schema":{"type":"boolean","example":false},"example":false,"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.","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"}}}},"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":"Экспорт сообщений\n\nЗаказ выгрузки сообщений пространства за период. Архив готовится в фоне, поэтому ответ приходит пустым и идентификатора выгрузки не содержит.\n\nНомер готовой выгрузки приходит в поле `export_id` вебхука на адрес из `webhook_url`. Заказавший дополнительно получает письмо и уведомление в Пачке со ссылкой вида `/full_exports/{id}` — число в ней и есть идентификатор. Адрес вебхука необязателен, но без него программе номер взять неоткуда: остаются только письмо и уведомление заказавшему.\n\nС этим идентификатором архив забирают методом [Скачать архив экспорта](GET /chats/exports/{id}).","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":"Скачать архив экспорта\n\nВ ответ на запрос сервер вернёт `302 Found` с заголовком `Location`, содержащим временную ссылку на скачивание файла. Большинство HTTP-клиентов автоматически следуют редиректу и скачивают файл.\n\nСсылка действует 5 минут, поэтому скачивайте архив сразу после запроса. Сам архив хранится 7 дней, а скачать его может только тот, кто заказал выгрузку. Другому сотруднику с тем же правом метод откажет.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор экспорта","schema":{"type":"integer","format":"int32","example":22322},"example":22322}],"responses":{"302":{"description":"Redirection","headers":{"location":{"required":true,"description":"Временная ссылка на архив в хранилище, действует 5 минут","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":"Информация о чате\n\nКарточка чата вместе с составом участников и привязанными тегами.\n\nЗакрытая беседа, в которой вызывающий не состоит, отвечает `403`, а не `404`: существование чата этим методом не скрывается. Открытый канал своего пространства отдаётся и тому, кто в него не вступал. Владельцу пространства метод тоже не открывает чужие закрытые чаты — весь их перечень отдаёт [Список чатов пространства](GET /company/chats).\n\nВ `member_ids` приходят только действующие участники: приостановленные в список не попадают, хотя членство у них сохраняется.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор чата","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":"Обертка ответа с данными"}}}},"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":"Редактирование чата\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","required":true,"description":"Идентификатор чата","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":"Обертка ответа с данными"}}}},"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":"Архивация чата\n\nОтправляет беседу или канал в архив: чат пропадает из списков у всех участников, новые сообщения в него не принимаются, а история сохраняется.\n\nАрхивация не только замораживает чат. Из него исключаются все гости, а теги от него отвязываются. Приведённые тегом сотрудники при этом остаются обычными участниками, но состав чата больше не поддерживается сам. Метод [Разархивация чата](PUT /chats/{id}/unarchive) не возвращает ни гостей, ни привязку тегов.\n\nТреды, заведённые в чате, остаются открытыми: писать в них можно и после архивации.\n\nЛичный чат и тред в архив не отправляются. Повторная архивация уже архивного чата отвечает `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_addTags","description":"Добавление тегов\n\nПривязывает теги к беседе или каналу, чтобы состав чата поддерживался сам.\n\nПосле добавления тега все его участники автоматически становятся участниками чата. Состав участников тега и чата синхронизируется автоматически: при добавлении нового участника в тег он сразу появляется в чате, при удалении из тега — удаляется из чата.\n\nЕсли хотя бы один из переданных тегов не найден, метод отвечает `404` и не привязывает ни одного. Тег, который к чату уже привязан, повторно не привязывается, а его участники всё равно догружаются в чат.\n\nПривязать тег может участник закрытой беседы и любой сотрудник пространства в открытом чате, а отцепить — только владелец или администратор чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).","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. "},"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":["Members"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTagsRequest"}}}},"x-requirements":{"scope":"chat_members:write"}}},"/chats/{id}/group_tags/{tag_id}":{"delete":{"operationId":"ChatMemberOperations_removeTag","description":"Исключение тега\n\nОтцепляет тег от беседы или канала и выводит оттуда сотрудников, которых держал только он.\n\nВыход происходит фоном, уже после ответа: метод отвечает `204` сразу, а состав чата меняется через несколько мгновений. Останутся владелец чата, те, кого приводит другой тег этого же чата, и те, кого добавляли в чат вручную.\n\nСнять тег с чата может владелец или администратор чата. Привязать его обратно можно методом [Добавление тегов](POST /chats/{id}/group_tags).","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":"Идентификатор тега","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":{"$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"}}},"/chats/{id}/leave":{"delete":{"operationId":"ChatMemberOperations_leaveChat","description":"Выход из чата\n\nВладелец токена выходит из беседы, канала или треда сам. Из треда выходят по его `chat_id`. В закрытой беседе остальные видят системное сообщение о выходе, в открытом чате и канале — нет.\n\nВыйти нельзя, если сотрудника держит в чате привязанный тег: метод ответит `403`, пока тег не снимут с сотрудника или с чата. Из личной переписки выйти тоже нельзя, а вот из архивного чата можно.\n\nВернуться в открытый чат можно самому, в закрытый — только если кто-то из участников добавит обратно. Другого сотрудника выводит [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).","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. "},"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":["Members"],"x-requirements":{"scope":"chats:leave"}}},"/chats/{id}/members":{"get":{"operationId":"ChatMemberOperations_listMembers","description":"Список участников чата\n\nКто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`.\n\nВладелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства.\n\nВ выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор чата","schema":{"type":"integer","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.","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":{"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":["Members"],"x-paginated":true,"x-requirements":{"scope":"chat_members:read"}},"post":{"operationId":"ChatMemberOperations_addMembers","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","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. "},"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":["Members"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMembersRequest"}}}},"x-requirements":{"scope":"chat_members:write"}}},"/chats/{id}/members/{user_id}":{"delete":{"operationId":"ChatMemberOperations_removeMember","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","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. "},"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":["Members"],"x-requirements":{"scope":"chat_members:write"}},"put":{"operationId":"ChatMemberOperations_updateMemberRole","description":"Редактирование роли\n\nМеняет роль участника беседы или канала. Роль в чате с ролью в пространстве не связана: рядовой сотрудник может быть администратором чата, а повышение в пространстве роли в чатах не меняет.\n\nРоль `editor` существует только в каналах. Себе роль сменить нельзя, как и тому, кто в чате не состоит: метод ответит ошибкой. Повторная установка той же роли считается ошибкой, а не повтором.\n\nВладельцу чата роль изменить нельзя. Он всегда имеет права администратора чата.","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":{"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":["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","description":"Разархивация чата\n\nВозвращает беседу или канал из архива: чат снова появляется в списках, и в него снова можно писать.\n\nЕсли чат и так не в архиве, метод всё равно отвечает успехом.","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"}}},"/company/bots":{"get":{"operationId":"CompanyBotOperations_listCompanyBots","description":"Список ботов пространства\n\nВсе боты пространства, включая тех, кто недоступен вам для редактирования. У таких ботов приходят только имя и ник, остальные настройки — `null`.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/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.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CompanyBotResponse"}},"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":{"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"}]}}}}},"tags":["Bots"],"x-paginated":true,"x-requirements":{"scope":"company_bots:read","plan":"corporation"}}},"/company/chats":{"get":{"operationId":"CompanyChatOperations_listCompanyChats","description":"Список чатов пространства\n\nБеседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются.\n\nПо умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`.","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":"Количество возвращаемых сущностей за один запрос","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}],"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":"Обертка ответа с данными и пагинацией"}}}},"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"}]}}}}},"tags":["Chats"],"x-paginated":true,"x-requirements":{"scope":"company_chats:read","plan":"corporation"}}},"/custom_properties":{"get":{"operationId":"CommonOperations_listProperties","description":"Список дополнительных полей\n\nСхема дополнительных полей пространства: идентификатор, название и тип каждого. Такие поля доступны только для сотрудников и напоминаний, наборы у них независимые, а нужный выбирает параметр `entity_type`. Значения приходят в самой сущности — в карточке сотрудника или в напоминании. Идентификаторы отсюда нужны, чтобы эти значения задавать.\n\nПоля типов «Файл» и «Множественный выбор» через API недоступны и в выдачу не попадают. Базовые поля карточки — имя, телефон, почта, отдел, теги — тоже: это не дополнительные поля.\n\nНабор полей задаёт администратор пространства, он же их переименовывает и удаляет. Поэтому список стоит перечитывать перед работой: обращение к полю, которого уже нет, возвращает ошибку.","parameters":[{"name":"entity_type","in":"query","required":true,"description":"Тип сущности","schema":{"$ref":"#/components/schemas/SearchEntityType","example":"User"},"example":"User","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CustomPropertyDefinition"}}},"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":["Custom Properties"],"x-requirements":{"scope":"custom_properties:read"}}},"/direct_url":{"post":{"operationId":"DirectUploadOperations_uploadFile","description":"Загрузка файла\n\nВторой шаг загрузки: сам файл уходит в хранилище формой `multipart/form-data`. Поля формы и адрес берутся из ответа метода [Получение подписи, ключа и других параметров](POST /uploads) и передаются как есть, в том же порядке, а файл идёт последним полем.\n\nЗапрос уходит не в 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":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/FileUploadRequest"}}}},"x-external-url":"directUrl","x-requirements":{"auth":false}}},"/drafts":{"post":{"operationId":"DraftOperations_createDraft","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":[],"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":"Обертка ответа с данными"}}}},"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"}}}},"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"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftCreateRequest"}}}},"x-requirements":{"scope":"drafts:write"}},"get":{"operationId":"DraftOperations_listDrafts","description":"Список черновиков\n\nСвои черновики, от новых к старым.\n\nПо умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром `type`. Отличить их в ответе можно по полю `schedule`.\n\nПара `entity_type` и `entity_id` сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой.","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","in":"query","required":false,"description":"Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.","schema":{"type":"integer","format":"int32","example":334},"example":334,"explode":false},{"name":"limit","in":"query","required":false,"description":"Количество возвращаемых сущностей за один запрос","schema":{"type":"integer","format":"int32","minimum":1,"maximum":50,"example":25,"default":50},"example":25,"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/Draft"}},"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":{"anyOf":[{"$ref":"#/components/schemas/ApiError"},{"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"tags":["Drafts"],"x-paginated":true,"x-requirements":{"scope":"drafts:read"}}},"/drafts/{id}":{"get":{"operationId":"DraftOperations_getDraft","description":"Информация о черновике\n\nЧерновик. У отложенного сообщения сюда же приходит его расписание.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор черновика","schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Draft"}},"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"}}}}},"tags":["Drafts"],"x-requirements":{"scope":"drafts:read"}},"put":{"operationId":"DraftOperations_updateDraft","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","required":true,"description":"Идентификатор черновика","schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"responses":{"200":{"description":"The request has succeeded.","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":{"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":["Drafts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftUpdateRequest"}}}},"x-requirements":{"scope":"drafts:write"}},"delete":{"operationId":"DraftOperations_deleteDraft","description":"Удаление черновика\n\nУбирает свой черновик насовсем: восстановить его нельзя, вложения удаляются вместе с ним. У отложенного сообщения удаление и есть отмена отправки.\n\nРаботает, даже если в чат уже нельзя писать. Повторный вызов отвечает `404`.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор черновика","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":{"$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":["Drafts"],"x-requirements":{"scope":"drafts:write"}}},"/files/{id}":{"get":{"operationId":"FileOperations_downloadFile","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","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":"Новый тег\n\nСоздаёт тег. Тег — это способ держать состав чатов сам собой: его привязывают к беседе или каналу, и все, у кого этот тег есть, оказываются там автоматически.\n\nСотрудников в тег добавляют не здесь, а в карточке каждого — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`. Свежий тег создаётся пустым, с `users_count: 0`. К чату его привязывает метод [Добавление тегов](POST /chats/{id}/group_tags).\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Создавать теги могут владелец пространства и администратор, боту метод недоступен.","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":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"tags":["Group tags"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupTagRequest"}}}},"x-requirements":{"scope":"group_tags:write"}},"get":{"operationId":"GroupTagOperations_listTags","description":"Список тегов\n\nВсе теги пространства с числом сотрудников в каждом. Видны они одинаково всем ролям, независимо от того, к каким чатам привязаны.\n\nПараметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён.\n\nКто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users).","parameters":[{"name":"names","in":"query","required":false,"description":"Массив названий тегов, по которым вы хотите отфильтровать список","schema":{"$ref":"#/components/schemas/TagNamesFilter","example":["Design","Product"]},"example":["Design","Product"]},{"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/GroupTag"}},"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":["Group tags"],"x-paginated":true,"x-requirements":{"scope":"group_tags:read"}}},"/group_tags/{id}":{"get":{"operationId":"GroupTagOperations_getTag","description":"Информация о теге\n\nНазвание тега и число сотрудников в нём.\n\nВ `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор тега","schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/GroupTag"}},"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":["Group tags"],"x-requirements":{"scope":"group_tags:read"}},"put":{"operationId":"GroupTagOperations_updateTag","description":"Редактирование тега\n\nПереименовывает тег. Состав сотрудников и привязки к чатам при этом не меняются: у всех, кто был в теге, он остаётся, только под новым названием.\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Переименовывать теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор тега","schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"responses":{"200":{"description":"The request has succeeded.","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"}}}},"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":["Group tags"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupTagRequest"}}}},"x-requirements":{"scope":"group_tags:write"}},"delete":{"operationId":"GroupTagOperations_deleteTag","description":"Удаление тега\n\nУбирает тег из пространства: он снимается со всех сотрудников и отвязывается от всех чатов.\n\nИз чатов при этом никто не выходит. Сотрудники, которых тег привёл в беседу или канал, остаются там обычными участниками, и дальше их состав тегом уже не поддерживается. Чтобы вывести их из конкретного чата, пользуйтесь методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}) до удаления самого тега.\n\nУдалять теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор тега","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":{"$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":["Group tags"],"x-requirements":{"scope":"group_tags:write"}}},"/group_tags/{id}/users":{"get":{"operationId":"GroupTagOperations_getTagUsers","description":"Список сотрудников тега\n\nКто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают.\n\nСостав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор тега","schema":{"type":"integer","format":"int32","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":{"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":{"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":["Group tags"],"x-paginated":true,"x-requirements":{"scope":"group_tags:read"}}},"/messages":{"post":{"operationId":"MessageOperations_createMessage","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":[],"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/Message"}},"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"}}}},"429":{"description":"Client error","headers":{"Retry-After":{"required":true,"schema":{"type":"integer","format":"int32"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"tags":["Messages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreateRequest"}}}},"x-requirements":{"scope":"messages:create"}},"get":{"operationId":"ChatMessageOperations_listChatMessages","description":"Список сообщений чата\n\nЛента сообщений беседы, канала, треда или личной переписки — по `chat_id` нужного чата.\n\nСообщения приходят от новых к старым, то есть первыми идут последние сообщения чата. За более ранними обращайтесь с параметрами `limit` и `cursor`.\n\nУдалённые сообщения в список не попадают.\n\nСообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Идентификатор треда приходит в поле `thread` родительского сообщения.","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","in":"query","required":false,"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":"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/Message"}},"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.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"tags":["Messages"],"x-paginated":true,"x-requirements":{"scope":"messages:read"}}},"/messages/{id}":{"get":{"operationId":"MessageOperations_getMessage","description":"Информация о сообщении\n\nСообщение вместе с автором, вложениями и кнопками.\n\nУдалённое сообщение метод всё равно отдаёт — с пустым `content` и заполненным `deleted_at`, без файлов и реакций.\n\nСсылки на файлы в ответе временные. Обычный файл отдаётся прямой ссылкой на хранилище, а защищённый и зашифрованный — адресом API, по которому нужен токен со скоупом `files:read`.","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/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":{"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"],"x-requirements":{"scope":"messages:read"}},"put":{"operationId":"MessageOperations_updateMessage","description":"Редактирование сообщения\n\nМеняет текст, файлы и кнопки уже отправленного сообщения. В интерфейсе у него появляется пометка о правке.\n\nПравить можно только свои сообщения, и только обычные: системное, пересланное и голосовое метод не меняет. Ограничений по давности отправки нет.\n\nФайлы и кнопки заменяются целиком: пустой массив снимает их все, а отсутствие поля в теле оставляет как было. Любая правка убирает превью ссылок, и заново оно не строится.","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/Message"}},"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":["Messages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageUpdateRequest"}}}},"x-requirements":{"scope":"messages:update"}},"delete":{"operationId":"MessageOperations_deleteMessage","description":"Удаление сообщения\n\nУдаление сообщения доступно отправителю, админам и редакторам в чате. В личных сообщениях оба пользователя являются редакторами. Ограничений по давности отправки сообщения нет.\n\nТекст, файлы и реакции пропадают у всех и не восстанавливаются, закрепление снимается, а в переписке на месте сообщения остаётся пометка «Сообщение удалено».\n\nТред, заведённый под этим сообщением, остаётся вместе со всей перепиской в нём. Повторное удаление отвечает `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"}}}},"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":["Messages"],"x-requirements":{"scope":"messages:delete"}}},"/messages/{id}/link_previews":{"post":{"operationId":"LinkPreviewOperations_unfurl","description":"Unfurl (разворачивание ссылок)\n\nПодставляет в сообщение предпросмотр ссылки, собранный самим ботом: заголовок, описание и картинку. Так внутренние адреса компании, которые Пачка сама открыть не может, показываются в переписке карточкой.\n\nМетод доступен только боту, у которого исходящий вебхук настроен на разворачивание ссылок. Такой бот получает событие `message_link_shared` и отвечает на него этим методом, причём состоять в чате с сообщением ему не нужно — достаточно, чтобы чат был в его пространстве.\n\nДомен ссылки должен быть в списке разрешённых у бота, а сама ссылка — присутствовать в тексте сообщения, иначе метод ответит ошибкой. Ответ приходит пустым даже тогда, когда ни одно превью не применилось: результат проверяют повторным чтением сообщения.","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. "},"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":["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":"Закрепление сообщения\n\nЗакрепляет сообщение в шапке беседы или канала, где его видят все участники. Ограничения на число закреплённых сообщений нет.\n\nВ тредах метод не работает. Уже закреплённое сообщение отвечает `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":{"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"}},"tags":["Messages"],"x-requirements":{"scope":"pins:write"}},"delete":{"operationId":"MessageOperations_unpinMessage","description":"Открепление сообщения\n\nСнимает закрепление с сообщения. Если сообщение не было закреплено, ответ всё равно `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"],"x-requirements":{"scope":"pins:write"}}},"/messages/{id}/reactions":{"post":{"operationId":"ReactionOperations_addReaction","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","required":true,"description":"Идентификатор сообщения","schema":{"type":"integer","format":"int32","example":7231942},"example":7231942}],"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"}}}},"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":["Reactions"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactionRequest"}}}},"x-requirements":{"scope":"reactions:write"}},"delete":{"operationId":"ReactionOperations_removeReaction","description":"Удаление реакции\n\nСнимает с сообщения свою реакцию.\n\nЧужая реакция и реакция, которой нет, отвечают `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":{"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":{"$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":["Reactions"],"x-requirements":{"scope":"reactions:write"}},"get":{"operationId":"ReactionOperations_listReactions","description":"Список реакций\n\nВсе реакции на сообщении и кто их поставил: в каждой записи приходит `user_id` и сам символ.\n\nУ удалённого сообщения список пуст — реакции пропадают вместе с текстом и файлами.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор сообщения","schema":{"type":"integer","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.","content":{"application/json":{"schema":{"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"}}}},"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":["Reactions"],"x-paginated":true,"x-requirements":{"scope":"reactions:read"}}},"/messages/{id}/read_member_ids":{"get":{"operationId":"ReadMemberOperations_listReadMembers","description":"Список прочитавших сообщение\n\nКто из участников чата дочитал ленту до этого сообщения. Отдаётся плоский массив идентификаторов.\n\nСамого вызывающего и автора сообщения в списке не будет никогда — считаются только остальные участники. Для сообщения в треде это участники треда, а не родительского чата.\n\nИмён метод не отдаёт. За ними ходят методом [Информация о сотруднике](GET /users/{id}) по каждому идентификатору.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор сообщения","schema":{"type":"integer","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.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"integer","format":"int32"}},"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.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"tags":["Read members"],"x-paginated":true,"x-requirements":{"scope":"messages:read"}}},"/messages/{id}/thread":{"post":{"operationId":"ThreadOperations_createThread","description":"Новый тред\n\nЗаводит тред под сообщением — место, где обсуждают сказанное, не засоряя ленту чата. Тред — это отдельный доступ: в него можно позвать сотрудника, не открывая ему сам чат, и он увидит только тред и родительское сообщение.\n\nВ новый тред сразу попадают тот, кто его создал, автор сообщения, все, кто ставил на сообщение реакции, и участники чата, включившие уведомления о тредах. Упомянутых в родительском сообщении — и поимённо, и тегом — добавляет фоновая задача сразу после создания, поэтому в первом ответе их может ещё не быть. Общие упоминания вроде `@all` в тред никого не приводят, а упомянутого, которого нет в самом чате, тред не подхватит.\n\nПустой тред разговором ещё не является: сразу отправьте в него первое сообщение методом [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Названия у треда нет, и удалить его нельзя ни через API, ни в приложении.\n\nЕсли у сообщения уже был создан тред, то в ответе на запрос вернётся информация об уже созданном ранее треде. Тред под сообщением, которое само лежит в треде, завести нельзя: вложенных тредов в Пачке нет.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор сообщения","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","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Thread"}},"description":"Обертка ответа с данными"}}}},"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":["Threads"],"x-requirements":{"scope":"threads:create"}}},"/oauth/token/info":{"get":{"operationId":"OAuthOperations_getTokenInfo","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","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AccessTokenInfo"}},"description":"Обертка ответа с данными"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}}},"tags":["OAuth"]}},"/profile":{"get":{"operationId":"ProfileOperations_getProfile","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","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/User"}},"description":"Обертка ответа с данными"}}}},"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"}}}}},"tags":["Profile"],"x-requirements":{"scope":"profile:read"}}},"/profile/avatar":{"put":{"operationId":"ProfileAvatarOperations_updateProfileAvatar","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":[],"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"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"tags":["Profile"],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"Файл изображения для аватара"}},"required":["image"]}}}},"x-requirements":{"scope":"profile_avatar:write"}},"delete":{"operationId":"ProfileAvatarOperations_deleteProfileAvatar","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":{"$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"}]}}}}},"tags":["Profile"],"x-requirements":{"scope":"profile_avatar:write"}}},"/profile/status":{"get":{"operationId":"ProfileOperations_getStatus","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","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"}}}}},"tags":["Profile"],"x-requirements":{"scope":"profile_status:read"}},"put":{"operationId":"ProfileOperations_updateStatus","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":[],"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"}}}},"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":"Удаление своего статуса\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":{"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}}},"tags":["Profile"],"x-requirements":{"scope":"profile_status:write"}}},"/search/chats":{"get":{"operationId":"SearchOperations_searchChats","description":"Поиск чатов\n\nИщет беседы и каналы по названию, прощая опечатки. Находит и открытые чаты пространства, куда вызывающий не вступал, а закрытые — только те, где он состоит.\n\nЛичные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата.\n\nМетод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages).","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","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":"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.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Chat"}},"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"}}}},"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":["Search"],"x-paginated":true,"x-requirements":{"scope":"search:chats"}}},"/search/messages":{"get":{"operationId":"SearchOperations_searchMessages","description":"Поиск сообщений\n\nИщет по тексту сообщений и по именам вложенных файлов, но только в чатах, где владелец токена состоит. Открытый канал, в который он не вступал, в поиск не попадает, хотя ленту его читать можно. Сообщения тредов в выдачу входят.\n\nСлова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает.\n\nПо умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше.","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","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.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"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"}}}},"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":["Search"],"x-paginated":true,"x-requirements":{"scope":"search:messages"}}},"/search/users":{"get":{"operationId":"SearchOperations_searchUsers","description":"Поиск сотрудников\n\nИщет сотрудников по имени и фамилии, нику, должности и отделу. Опечатки прощаются только в имени и фамилии, остальным полям нужно точное слово.\n\nПо почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`.\n\nУдалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные.","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","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}],"responses":{"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/SearchPaginationMeta"}},"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":["Search"],"x-paginated":true,"x-requirements":{"scope":"search:users"}}},"/tasks":{"post":{"operationId":"TaskOperations_createTask","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":[],"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/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":{"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"}},"get":{"operationId":"TaskOperations_listTasks","description":"Список напоминаний\n\nНапоминания, доступные владельцу токена.\n\nБез параметра `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}],"responses":{"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":"Информация о напоминании\n\nНапоминание вместе с его автором, ответственными и чатом, к которому оно привязано.\n\nНапоминание видят его автор, ответственные и участники чата, к которому оно привязано. Участия в чате хватает, чтобы прочитать, но не чтобы изменить: править и удалять напоминание могут только автор и ответственные.","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":{"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":["Tasks"],"x-requirements":{"scope":"tasks:read"}},"put":{"operationId":"TaskOperations_updateTask","description":"Редактирование напоминания\n\nМеняет напоминание: перезаписываются только переданные поля.\n\nПередать напоминание другому сотруднику — это тоже правка: добавьте его в `performer_ids` вместо прежнего.\n\nВыполненное напоминание закрывают этим же методом: `status: \"done\"` ставит галочку и оставляет напоминание в списке, `status: \"undone\"` возвращает его в работу.\n\nДоступно автору и ответственным. Участник чата, где висит напоминание, его видит, но менять не может. Привязку к чату изменить нельзя: чтобы перевесить напоминание в другой чат, удалите его и создайте заново с нужным `chat_id`.","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":"Обертка ответа с данными"}}}},"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/TaskUpdateRequest"}}}},"x-requirements":{"scope":"tasks:update"}},"delete":{"operationId":"TaskOperations_deleteTask","description":"Удаление напоминания\n\nУбирает напоминание насовсем: восстановить его нельзя, и у ответственных оно тоже пропадает. Если напоминание уехало в подключённый календарь, событие удаляется и там.\n\nДоступно автору и ответственным. Повторный вызов отвечает `404`.\n\nЗакрыть выполненное напоминание, сохранив его в списке, можно методом [Редактирование напоминания](PUT /tasks/{id}) со `status: \"done\"`.","parameters":[{"name":"id","in":"path","required":true,"description":"Идентификатор напоминания","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":{"$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":["Tasks"],"x-requirements":{"scope":"tasks:delete"}}},"/threads":{"post":{"operationId":"ThreadOperations_createStandaloneThread","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","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Thread"}},"description":"Обертка ответа с данными"},"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"}}}},"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":["Threads"],"x-requirements":{"scope":"threads:create"}},"get":{"operationId":"ThreadOperations_listThreads","description":"Список тредов\n\nТреды, доступные владельцу токена.\n\nВозвращаются треды, где вы состоите в самом треде или в чате, в котором он заведён. Участия в треде достаточно: входить в чат с родительским сообщением не нужно, самостоятельные треды тоже приходят. А вот треды из открытых чатов пространства, где вы не состоите, в список не попадают, хотя сами чаты вам доступны.\n\nСортировка — по убыванию времени последнего сообщения в треде.\n\nВ элементе списка нет ни названия, ни текста: только идентификаторы треда, его чата и родительского сообщения. Чтобы понять, о чём тред, прочитайте его сообщения методом [Список сообщений чата](GET /messages) по `chat_id`, а нужный тред по содержанию ищут методом [Поиск сообщений](GET /search/messages).","parameters":[{"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","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/Thread"}},"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":["Threads"],"x-paginated":true,"x-requirements":{"scope":"threads:read"}}},"/threads/{id}":{"get":{"operationId":"ThreadOperations_getThread","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","required":true,"description":"Идентификатор треда","schema":{"type":"integer","format":"int32","example":265142},"example":265142}],"responses":{"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":{"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":["Threads"],"x-requirements":{"scope":"threads:read"}}},"/uploads":{"post":{"operationId":"UploadOperations_getUploadParams","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":{"$ref":"#/components/schemas/UploadParams"}}}},"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":["Files"],"x-requirements":{"scope":"uploads:write"}}},"/users":{"post":{"operationId":"UserOperations_createUser","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":[],"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":"Список сотрудников\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","required":false,"description":"Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).","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` или `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/User"}},"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":["Users"],"x-paginated":true,"x-requirements":{"scope":"users:read"}}},"/users/{id}":{"get":{"operationId":"UserOperations_getUser","description":"Информация о сотруднике\n\nКарточка сотрудника.\n\nПриостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`.\n\nПочта и телефон приходят `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":"Редактирование сотрудника\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","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":"UserOperations_deleteUser","description":"Удаление сотрудника\n\nУбирает сотрудника из пространства. Отменить это нельзя: вернуть его можно только новым приглашением, и это будет уже другой сотрудник.\n\nЧто происходит: он выходит из всех бесед и каналов, кроме личных переписок, с него снимаются все теги, задачи, где он был единственным исполнителем, удаляются, а из остальных он убирается. Написанные им сообщения и файлы остаются на месте.\n\nВладельца пространства удалить нельзя — метод ответит `403`. Повторный вызов отвечает `404`: удалённого сотрудника метод уже не находит.\n\nЕсли сотрудник уходит в отпуск или увольнение ещё не финальное, пользуйтесь методом [Редактирование сотрудника](PUT /users/{id}) с `suspended: true`. Приостановка обратима и сохраняет чаты, теги и задачи.","parameters":[{"name":"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":{"$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:delete"}}},"/users/{user_id}/avatar":{"put":{"operationId":"UserAvatarOperations_updateUserAvatar","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","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":"Удаление аватара сотрудника\n\nУбирает аватар другому сотруднику, дальше в интерфейсе показываются инициалы. Доступно владельцу пространства и администратору, боту метод недоступен, а аватар владельца пространства убирает только он сам.\n\nЕсли аватара не было, ответ всё равно `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":"Статус сотрудника\n\nСтатус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте».\n\nЕсли статус не установлен, метод возвращает `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":"Новый статус сотрудника\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","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":"Удаление статуса сотрудника\n\nСнимает статус с другого сотрудника вместе с режимом «Нет на месте» и его текстом. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли статуса не было, ответ всё равно `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":"Открытие представления\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":[],"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":"Ответ на отправку формы\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","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":"История событий\n\nЖурнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас.\n\nЖурнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» во вкладке «Исходящий webhook». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал.\n\nМетод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число.\n\nСам журнал не очищается: прочитанные события удаляйте методом [Удаление события](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":"Удаление события\n\nУбирает событие из журнала бота. Разбирая журнал, удаляйте событие сразу после обработки: журнал не очищается сам, и всё, что осталось, придёт снова при повторном запросе.\n\nМетод работает только с токеном того бота, которому принадлежит событие.","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":{"$ref":"#/components/schemas/OAuthScope"},"description":"Список скоупов токена","example":["messages:read","chats:read"]},"created_at":{"type":"string","format":"date-time","description":"Дата создания токена","example":"2025-01-15T10:30:00.000Z"},"revoked_at":{"type":"string","format":"date-time","nullable":true,"description":"Дата отзыва токена. Всегда `null`: по отозванному токену метод возвращает 401.","example":null},"expires_in":{"type":"integer","format":"int32","nullable":true,"description":"Время жизни токена в секундах. `null` у бессрочного токена — такие выдаёт интерфейс. У токена, полученного входом из CLI, здесь `3600`: он живёт час и продлевается сам.","example":null},"last_used_at":{"type":"string","format":"date-time","nullable":true,"description":"Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.","example":"2025-02-24T14:20:00.000Z"}},"description":"Токен доступа"},"AddMembersRequest":{"type":"object","required":["member_ids"],"properties":{"member_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, которые станут участниками","example":[186,187]},"silent":{"type":"boolean","description":"Не создавать в чате системное сообщение о добавлении участника","example":true}},"description":"Запрос на добавление участников в чат"},"AddTagsRequest":{"type":"object","required":["group_tag_ids"],"properties":{"group_tag_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов тегов, которые станут участниками","example":[86,18]}},"description":"Запрос на добавление тегов в чат"},"ApiError":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorItem"},"description":"Массив ошибок"}},"description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","x-error":true},"ApiErrorItem":{"type":"object","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","nullable":true,"description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value"},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"allOf":[{"$ref":"#/components/schemas/ValidationErrorCode"}],"description":"Код ошибки","example":"blank"},"payload":{"type":"object","additionalProperties":{},"nullable":true,"description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null}},"description":"Детальная информация об ошибке"},"AuditDetailsBot":{"type":"object","required":["bot_id","actor_id"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора."}},"description":"При: bot_deleted, bot_token_recreated"},"AuditDetailsBotOAuthClient":{"type":"object","required":["client_id","changes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента бота"},"changes":{"type":"object","additionalProperties":{},"description":"Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение)."}},"description":"При: bot_oauth_client_updated"},"AuditDetailsBotScopes":{"type":"object","required":["added_scopes","removed_scopes"],"properties":{"added_scopes":{"type":"array","items":{"type":"string"},"description":"Скоупы, добавленные токену бота"},"removed_scopes":{"type":"array","items":{"type":"string"},"description":"Скоупы, отозванные у токена бота"}},"description":"При: bot_scopes_updated"},"AuditDetailsBotWebhookSettings":{"type":"object","required":["changes"],"properties":{"changes":{"type":"object","additionalProperties":{},"description":"Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение)."}},"description":"При: bot_webhook_settings_updated"},"AuditDetailsChatId":{"type":"object","required":["chat_id"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"}},"description":"При: tag_removed_from_chat"},"AuditDetailsChatPermission":{"type":"object","required":["public_access"],"properties":{"public_access":{"type":"boolean","description":"Публичный доступ"}},"description":"При: chat_permission_changed"},"AuditDetailsChatRenamed":{"type":"object","required":["old_name","new_name"],"properties":{"old_name":{"type":"string","description":"Прежнее название чата"},"new_name":{"type":"string","description":"Новое название чата"}},"description":"При: chat_renamed"},"AuditDetailsDeviceAuthorizationApproved":{"type":"object","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому разрешён вход"},"scopes":{"type":"array","items":{"type":"string"},"description":"Скоупы, на которые согласился сотрудник"}},"description":"При: oauth_device_authorization_approved"},"AuditDetailsDeviceAuthorizationDenied":{"type":"object","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому отказано во входе"},"scopes":{"type":"array","items":{"type":"string"},"description":"Скоупы, которые клиент запрашивал"}},"description":"При: oauth_device_authorization_denied"},"AuditDetailsDlp":{"type":"object","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","nullable":true,"description":"Описание действия. `null`, если у действия правила текст не задан."},"conditions_matched":{"type":"boolean","description":"Результат проверки условий правила (true — условия сработали)"}},"description":"При: dlp_violation_detected"},"AuditDetailsEmpty":{"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."},"AuditDetailsInitiator":{"type":"object","required":["initiator_id"],"properties":{"initiator_id":{"type":"integer","format":"int32","description":"Идентификатор инициатора действия"}},"description":"При: user_added_to_tag, user_removed_from_tag, user_chat_leave"},"AuditDetailsInviter":{"type":"object","required":["inviter_id"],"properties":{"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор пригласившего"}},"description":"При: user_chat_join"},"AuditDetailsKms":{"type":"object","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":"Причина операции"}},"description":"При: kms_encrypt, kms_decrypt"},"AuditDetailsOAuthAuthorizationGranted":{"type":"object","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому выдан доступ"},"scopes":{"type":"array","items":{"type":"string"},"description":"Скоупы, на которые выдан доступ"}},"description":"При: oauth_authorization_granted"},"AuditDetailsOAuthAuthorizationRevoked":{"type":"object","required":["client_id","revoked_tokens_count"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, у которого отозван доступ"},"revoked_tokens_count":{"type":"integer","format":"int32","description":"Количество отозванных токенов"}},"description":"При: oauth_authorization_revoked"},"AuditDetailsRoleChanged":{"type":"object","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":"Идентификатор инициатора"}},"description":"При: user_role_changed"},"AuditDetailsSearch":{"type":"object","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","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","started_message_id"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходит видеозвонок"},"started_message_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет."}},"description":"При: video_call_started"},"AuditEvent":{"type":"object","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":{"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"}],"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","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-клиента бота","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":["image_url"],"properties":{"image_url":{"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":{"type":"object","required":["webhook"],"properties":{"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}},"required":["name"],"description":"Объект параметров вебхука создаваемого бота"}},"description":"Запрос на создание бота"},"BotCreateResponse":{"type":"object","required":["id","webhook","access_token"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"allOf":[{"$ref":"#/components/schemas/BotWebhook"}],"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":{"type":"object","required":["id","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"allOf":[{"$ref":"#/components/schemas/BotWebhook"}],"description":"Объект параметров вебхука"}},"description":"Параметры бота"},"BotTemplateEngine":{"type":"string","enum":["liquid","mustache"],"description":"Шаблонизатор для форматирования входящих вебхуков","x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"}},"BotTriggerOn":{"type":"string","enum":["commands","all_messages","unfurl"],"description":"Условие срабатывания исходящего вебхука бота","x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"}},"BotUpdateRequest":{"type":"object","required":["webhook"],"properties":{"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"]}},"description":"Объект параметров вебхука редактируемого бота"}},"description":"Запрос на обновление бота"},"BotWebhook":{"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":"Параметры вебхука бота"},"BotWebhookSelfUpdateRequest":{"type":"object","required":["webhook"],"properties":{"webhook":{"type":"object","properties":{"outgoing_url":{"type":"string","description":"URL исходящего вебхука. Пустая строка отключает вебхук.","example":"https://www.website.com/tasks/new"}},"required":["outgoing_url"],"description":"Объект параметров вебхука"}},"description":"Запрос на саморегистрацию вебхука бота"},"BotWhoCanAdd":{"type":"string","enum":["creator","creator_admin","creator_admin_user","anyone"],"description":"Кто может добавлять бота в чаты","x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"}},"Button":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":255,"description":"Текст, отображаемый на кнопке","example":"Подробнее"},"url":{"type":"string","maxLength":1024,"description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details"},"data":{"type":"string","maxLength":255,"description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome"}},"description":"Кнопка"},"ButtonWebhookPayload":{"type":"object","required":["type","event","message_id","trigger_id","data","user_id","chat_id","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["button"],"description":"Тип объекта","example":"button","x-enum-descriptions":{"button":"Для кнопки всегда button"}},"event":{"type":"string","enum":["click"],"description":"Тип события","example":"click","x-enum-descriptions":{"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}},"description":"Структура исходящего вебхука о нажатии кнопки"},"Chat":{"type":"object","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","maxLength":255,"description":"Название","example":"🤿 aqua"},"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","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, участников","example":[185,186,187]},"group_tag_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов тегов, участников","example":[9111]},"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"}},"description":"Чат"},"ChatActivity":{"type":"string","enum":["active","archived"],"description":"Состояние чатов в выборке","x-enum-descriptions":{"active":"Только активные чаты","archived":"Только архивные чаты"}},"ChatAvailability":{"type":"string","enum":["is_member","public"],"description":"Доступность чатов для пользователя","x-enum-descriptions":{"is_member":"Чаты, где пользователь является участником","public":"Все открытые чаты компании, вне зависимости от участия в них пользователя"}},"ChatCreateRequest":{"type":"object","required":["chat"],"properties":{"chat":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Название","example":"🤿 aqua"},"member_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, которые станут участниками","example":[186,187]},"group_tag_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов тегов, которые станут участниками","example":[86,18]},"channel":{"type":"boolean","description":"Является каналом","example":true,"default":false},"public":{"type":"boolean","description":"Открытый доступ","example":false,"default":false}},"required":["name"],"description":"Собранный объект параметров создаваемого чата"}},"description":"Запрос на создание чата"},"ChatMemberRole":{"type":"string","enum":["admin","editor","member"],"description":"Роль участника чата","x-enum-descriptions":{"admin":"Админ","editor":"Редактор (доступно только для каналов)","member":"Участник или подписчик"}},"ChatMemberRoleFilter":{"type":"string","enum":["all","owner","admin","editor","member"],"description":"Роль участника чата (с фильтром все)","x-enum-descriptions":{"all":"Любая роль","owner":"Создатель","admin":"Админ","editor":"Редактор","member":"Участник/подписчик"}},"ChatMemberWebhookPayload":{"type":"object","required":["type","event","chat_id","user_ids","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["chat_member"],"description":"Тип объекта","example":"chat_member","x-enum-descriptions":{"chat_member":"Для участника чата всегда chat_member"}},"event":{"allOf":[{"$ref":"#/components/schemas/MemberEventType"}],"description":"Тип события","example":"add"},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором изменился состав участников","example":9012},"thread_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор треда. `null`, если участники добавлены в обычный чат или канал, а не в тред.","example":5678},"user_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, с которыми произошло событие","example":[2345,6789]},"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}},"description":"Структура исходящего вебхука об участниках чата"},"ChatSortField":{"type":"string","enum":["id","last_message_at"],"description":"Поле сортировки чатов","x-enum-descriptions":{"id":"По идентификатору чата","last_message_at":"По дате и времени создания последнего сообщения"}},"ChatSubtype":{"type":"string","enum":["discussion","thread"],"description":"Тип чата","x-enum-descriptions":{"discussion":"Канал или беседа","thread":"Тред"}},"ChatUpdateRequest":{"type":"object","required":["chat"],"properties":{"chat":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Название","example":"Бассейн"},"public":{"type":"boolean","description":"Открытый доступ","example":true}},"description":"Собранный объект параметров обновляемого чата"}},"description":"Запрос на обновление чата"},"CompanyBotResponse":{"type":"object","required":["id","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"allOf":[{"$ref":"#/components/schemas/CompanyBotWebhook"}],"description":"Объект параметров вебхука"}},"description":"Параметры бота пространства"},"CompanyBotWebhook":{"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"},"nullable":true,"description":"События, на которые подписан бот","example":["message_new"]},"trigger_on":{"allOf":[{"$ref":"#/components/schemas/BotTriggerOn"}],"nullable":true,"description":"Условие срабатывания исходящего вебхука","example":"commands"},"commands":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Команды бота (триггер-слова)","example":["/task"]},"scopes":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Скоупы (права доступа) токена бота","example":["messages:create"]},"template":{"type":"string","nullable":true,"description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽"},"template_engine":{"allOf":[{"$ref":"#/components/schemas/BotTemplateEngine"}],"nullable":true,"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid"},"challenge_key":{"type":"string","nullable":true,"description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge"},"link_preview_enabled":{"type":"boolean","nullable":true,"description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","nullable":true,"description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","nullable":true,"description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","nullable":true,"description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","items":{"$ref":"#/components/schemas/BotCanEdit"},"nullable":true,"description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"]},"who_can_add":{"allOf":[{"$ref":"#/components/schemas/BotWhoCanAdd"}],"nullable":true,"description":"Кто может добавлять бота в чаты","example":"creator"}},"description":"Параметры вебхука бота пространства. Настройки бота, недоступного вам для редактирования, приходят как `null` — остаются только имя и никнейм."},"CompanyMemberWebhookPayload":{"type":"object","required":["type","event","user_ids","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["company_member"],"description":"Тип объекта","example":"company_member","x-enum-descriptions":{"company_member":"Для участника пространства всегда company_member"}},"event":{"allOf":[{"$ref":"#/components/schemas/UserEventType"}],"description":"Тип события","example":"invite"},"user_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, с которыми произошло событие","example":[2345,6789]},"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}},"description":"Структура исходящего вебхука об участниках пространства"},"CustomProperty":{"type":"object","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","maxLength":32,"description":"Название поля","example":"Город"},"data_type":{"allOf":[{"$ref":"#/components/schemas/CustomPropertyDataType"}],"description":"Тип поля","example":"string"},"value":{"type":"string","nullable":true,"maxLength":768,"description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург"}},"description":"Дополнительное поле"},"CustomPropertyDataType":{"type":"string","enum":["string","number","date","link"],"description":"Тип данных дополнительного поля","x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"}},"CustomPropertyDefinition":{"type":"object","required":["id","name","data_type"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","maxLength":32,"description":"Название поля","example":"Город"},"data_type":{"allOf":[{"$ref":"#/components/schemas/CustomPropertyDataType"}],"description":"Тип поля","example":"string"}},"description":"Дополнительное поле"},"Draft":{"type":"object","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":{"allOf":[{"$ref":"#/components/schemas/MessageEntityType"}],"nullable":true,"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion"},"entity_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334},"chat_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093},"files":{"type":"array","items":{"$ref":"#/components/schemas/File"},"description":"Прикреплённые файлы"},"voice_content":{"type":"object","allOf":[{"$ref":"#/components/schemas/VoiceContent"}],"nullable":true,"description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки."},"schedule":{"type":"object","allOf":[{"$ref":"#/components/schemas/DraftSchedule"}],"nullable":true,"description":"Расписание отправки. `null` у обычного черновика."},"next_send_at":{"type":"string","format":"date-time","nullable":true,"description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z"},"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"}},"description":"Черновик или отложенное сообщение"},"DraftCreateRequest":{"type":"object","required":["draft"],"properties":{"draft":{"type":"object","properties":{"entity_type":{"allOf":[{"$ref":"#/components/schemas/MessageEntityType"}],"description":"Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion"},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334},"content":{"type":"string","description":"Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате.","example":196093},"files":{"type":"array","items":{"$ref":"#/components/schemas/DraftFileRequest"},"maxItems":10,"description":"Прикрепляемые файлы, не больше десяти"},"schedule":{"type":"object","allOf":[{"$ref":"#/components/schemas/DraftScheduleRequest"}],"nullable":true,"description":"Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик."}},"required":["entity_type","entity_id"],"description":"Собранный объект параметров черновика"}},"description":"Запрос на создание черновика"},"DraftFileRequest":{"type":"object","required":["key","name"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.","example":3560},"key":{"type":"string","maxLength":1000,"description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png"},"name":{"type":"string","maxLength":255,"description":"Название файла, которое вы хотите отображать пользователю","example":"logo.png"},"file_type":{"allOf":[{"$ref":"#/components/schemas/FileType"}],"description":"Тип файла","example":"image"},"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","maxLength":256,"description":"Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).","example":"4,8,12,20,16,10,6,3"}},"description":"Прикрепляемый к черновику файл"},"DraftRepetition":{"type":"object","required":["interval"],"properties":{"interval":{"allOf":[{"$ref":"#/components/schemas/DraftRepetitionInterval"}],"description":"Периодичность","example":"weekly"},"days":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3]},"nth_day":{"type":"integer","format":"int32","nullable":true,"description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2}},"description":"Правило повтора отложенного сообщения"},"DraftRepetitionInterval":{"type":"string","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"description":"Периодичность повтора отложенного сообщения","x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"}},"DraftRepetitionRequest":{"type":"object","required":["interval"],"properties":{"interval":{"allOf":[{"$ref":"#/components/schemas/DraftRepetitionInterval"}],"description":"Периодичность","example":"weekly"},"days":{"type":"array","items":{"type":"integer","format":"int32"},"maxItems":7,"description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.","example":[1,3]},"nth_day":{"type":"integer","format":"int32","nullable":true,"minimum":1,"maximum":5,"description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.","example":2}},"description":"Правило повтора в запросе"},"DraftSchedule":{"type":"object","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","nullable":true,"description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z"},"repetition":{"allOf":[{"$ref":"#/components/schemas/DraftRepetition"}],"description":"Правило повтора"}},"description":"Расписание отправки отложенного сообщения"},"DraftScheduleRequest":{"type":"object","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","nullable":true,"description":"Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.","example":"2026-12-31T12:00:00.000Z"},"repetition":{"allOf":[{"$ref":"#/components/schemas/DraftRepetitionRequest"}],"description":"Правило повтора"}},"description":"Расписание отправки в запросе"},"DraftType":{"type":"string","enum":["regular","scheduled","all"],"description":"Что возвращать в списке черновиков","x-enum-descriptions":{"regular":"Обычные черновики","scheduled":"Отложенные сообщения","all":"И черновики, и отложенные сообщения"}},"DraftUpdateRequest":{"type":"object","required":["draft"],"properties":{"draft":{"type":"object","properties":{"content":{"type":"string","description":"Текст черновика","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ.","example":196093},"files":{"type":"array","items":{"$ref":"#/components/schemas/DraftFileRequest"},"maxItems":10,"description":"Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были."},"schedule":{"type":"object","allOf":[{"$ref":"#/components/schemas/DraftScheduleRequest"}],"nullable":true,"description":"Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`."}},"description":"Собранный объект изменяемых параметров черновика"}},"description":"Запрос на обновление черновика"},"ExportRequest":{"type":"object","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","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов.","example":[1381521]},"skip_chats_file":{"type":"boolean","description":"Пропуск формирования файла со списком чатов (chats.json)","example":false,"default":false}},"description":"Запрос на экспорт сообщений"},"File":{"type":"object","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":{"allOf":[{"$ref":"#/components/schemas/FileType"}],"description":"Тип файла","example":"image"},"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","nullable":true,"description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920},"height":{"type":"integer","format":"int32","nullable":true,"description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080},"duration_ms":{"type":"integer","format":"int32","nullable":true,"description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400}},"description":"Файл"},"FileTarget":{"type":"string","enum":["pdf_preview","pdf_first_page","thumb","image"],"description":"Что отдать вместо исходного файла","x-enum-descriptions":{"pdf_preview":"Документ, переведённый в PDF","pdf_first_page":"Первая страница документа картинкой","thumb":"Уменьшенная копия изображения","image":"Изображение как есть"}},"FileType":{"type":"string","enum":["file","image","audio","voice","video"],"description":"Тип файла","x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"}},"FileUploadRequest":{"type":"object","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":"Файл для загрузки"}},"required":["Content-Disposition","acl","policy","x-amz-credential","x-amz-algorithm","x-amz-date","x-amz-signature","key","file"]},"Forwarding":{"type":"object","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","nullable":true,"description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null},"original_thread_message_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null},"original_thread_parent_chat_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null}},"description":"Информация о пересланном сообщении"},"GroupTag":{"type":"object","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","maxLength":255,"description":"Название тега","example":"Design"},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"description":"Тег"},"GroupTagRequest":{"type":"object","required":["group_tag"],"properties":{"group_tag":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Название тега","example":"Новое название тега"}},"required":["name"]}},"description":"Запрос на создание или редактирование тега"},"InviteStatus":{"type":"string","enum":["confirmed","sent"],"description":"Статус приглашения пользователя","x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"}},"LinkPreview":{"type":"object","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","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}},"required":["key","name"],"description":"Изображение"}},"description":"Данные для предпросмотра ссылки"},"LinkPreviewsRequest":{"type":"object","required":["link_previews"],"properties":{"link_previews":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LinkPreview"},"description":"`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении","x-record-key-example":"https://website.com/articles/123"}},"description":"Запрос на разворачивание ссылок"},"LinkSharedWebhookPayload":{"type":"object","required":["type","event","chat_id","message_id","links","user_id","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["message"],"description":"Тип объекта","example":"message","x-enum-descriptions":{"message":"Для разворачивания ссылок всегда message"}},"event":{"type":"string","enum":["link_shared"],"description":"Тип события","example":"link_shared","x-enum-descriptions":{"link_shared":"Обнаружена ссылка на отслеживаемый домен"}},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором обнаружена ссылка","example":23438},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, содержащего ссылку","example":268092},"links":{"type":"array","items":{"$ref":"#/components/schemas/WebhookLink"},"description":"Массив обнаруженных ссылок на отслеживаемые домены"},"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}},"description":"Структура исходящего вебхука о разворачивании ссылок"},"MemberEventType":{"type":"string","enum":["add","remove"],"description":"Тип события webhook для участников","x-enum-descriptions":{"add":"Добавление","remove":"Удаление"}},"Message":{"type":"object","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":{"allOf":[{"$ref":"#/components/schemas/MessageEntityType"}],"description":"Тип сущности, к которой относится сообщение","example":"discussion"},"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","items":{"$ref":"#/components/schemas/File"},"description":"Прикрепленные файлы"},"voice_content":{"type":"object","allOf":[{"$ref":"#/components/schemas/VoiceContent"}],"nullable":true,"description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`."},"buttons":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/Button"}},"nullable":true,"description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок."},"thread":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда","example":2637266155}},"required":["id","chat_id"],"nullable":true,"description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда."},"forwarding":{"type":"object","allOf":[{"$ref":"#/components/schemas/Forwarding"}],"nullable":true,"description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным."},"parent_message_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null},"display_avatar_url":{"type":"string","nullable":true,"description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null},"display_name":{"type":"string","nullable":true,"description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null},"changed_at":{"type":"string","format":"date-time","nullable":true,"description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z"},"deleted_at":{"type":"string","format":"date-time","nullable":true,"description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null}},"description":"Сообщение"},"MessageCreateRequest":{"type":"object","required":["message"],"properties":{"message":{"type":"object","properties":{"entity_type":{"allOf":[{"$ref":"#/components/schemas/MessageEntityType"}],"description":"Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.","example":"discussion","default":"discussion"},"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","items":{"type":"object","properties":{"key":{"type":"string","maxLength":1000,"description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png"},"name":{"type":"string","maxLength":255,"description":"Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.","example":"logo.png"},"file_type":{"allOf":[{"$ref":"#/components/schemas/FileType"}],"description":"Тип файла","example":"image"},"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","minimum":1,"description":"Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.","example":5400},"waveform":{"type":"string","maxLength":256,"description":"Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.","example":"4,8,12,20,16,10,6,3"}},"required":["key","name","file_type","size"]},"description":"Прикрепляемые файлы"},"buttons":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/Button"}},"maxItems":32,"description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.","example":[[{"text":"Подробнее","url":"https://example.com/details"},{"text":"Отлично!","data":"awesome"}]]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`.","example":194270},"display_avatar_url":{"type":"string","maxLength":255,"description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"https://example.com/avatar.png"},"display_name":{"type":"string","maxLength":255,"description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"Бот Поддержки"},"skip_invite_mentions":{"type":"boolean","description":"Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред.","example":false,"default":false}},"required":["entity_id","content"],"description":"Собранный объект параметров создаваемого сообщения"},"link_preview":{"type":"boolean","description":"Отображение предпросмотра первой найденной ссылки в тексте сообщения","example":false,"default":false}},"description":"Запрос на создание сообщения"},"MessageEntityType":{"type":"string","enum":["discussion","thread","user"],"description":"Тип сущности для сообщений","x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"}},"MessageSearchSort":{"type":"string","enum":["created_at","relevance"],"description":"Сортировка результатов поиска сообщений","x-enum-descriptions":{"created_at":"По дате создания (хронология)","relevance":"По релевантности"}},"MessageSortField":{"type":"string","enum":["id"],"description":"Поле сортировки сообщений","x-enum-descriptions":{"id":"По идентификатору сообщения"}},"MessageUpdateRequest":{"type":"object","required":["message"],"properties":{"message":{"type":"object","properties":{"content":{"type":"string","description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).","example":"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет."},"files":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":1000,"description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png"},"name":{"type":"string","maxLength":255,"description":"Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.","example":"logo.png"},"file_type":{"allOf":[{"$ref":"#/components/schemas/FileType"}],"description":"Тип файла","example":"image","default":"file"},"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","minimum":1,"description":"Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.","example":5400},"waveform":{"type":"string","maxLength":256,"description":"Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется.","example":"4,8,12,20,16,10,6,3"}},"required":["key","name"]},"description":"Прикрепляемые файлы"},"buttons":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/Button"}},"maxItems":32,"description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив.","example":[[{"text":"Подробнее","url":"https://example.com/details"}]]},"display_avatar_url":{"type":"string","description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"https://example.com/avatar.png"},"display_name":{"type":"string","description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"Бот Поддержки"}},"description":"Собранный объект параметров редактируемого сообщения"}},"description":"Запрос на редактирование сообщения"},"MessageWebhookPayload":{"type":"object","required":["type","id","event","entity_type","entity_id","content","user_id","created_at","url","chat_id","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["message"],"description":"Тип объекта","example":"message","x-enum-descriptions":{"message":"Для сообщений всегда message"}},"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":1245817},"event":{"allOf":[{"$ref":"#/components/schemas/WebhookEventType"}],"description":"Тип события","example":"new"},"entity_type":{"allOf":[{"$ref":"#/components/schemas/MessageEntityType"}],"description":"Тип сущности, к которой относится сообщение","example":"discussion"},"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","nullable":true,"description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2025-05-15T14:35:00.000Z"},"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","nullable":true,"description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":3456},"thread":{"type":"object","allOf":[{"$ref":"#/components/schemas/WebhookMessageThread"}],"nullable":true,"description":"Тред, в котором отправлено сообщение. `null`, если сообщение отправлено не в треде. В отличие от поля `thread` в объекте сообщения REST API, здесь описывается тред, внутри которого находится сообщение."},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"description":"Структура исходящего вебхука о сообщении"},"OAuthError":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"description":"Ошибка OAuth авторизации (используется для 401 и 403)","x-error":true},"OAuthScope":{"type":"string","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"],"description":"Скоуп доступа OAuth токена","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"]},"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":"Создание, изменение и удаление черновиков и отложенных сообщений"}},"OpenViewRequest":{"type":"object","required":["type","trigger_id","view"],"properties":{"type":{"type":"string","enum":["modal"],"description":"Способ открытия представления","example":"modal","x-enum-descriptions":{"modal":"Модальное окно"}},"trigger_id":{"type":"string","description":"Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки)","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"private_metadata":{"type":"string","maxLength":3000,"description":"Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой.","example":"{\"timeoff_id\":4378}"},"callback_id":{"type":"string","maxLength":255,"description":"Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь.","example":"timeoff_request_form"},"view":{"type":"object","properties":{"title":{"type":"string","maxLength":24,"description":"Заголовок представления","example":"Уведомление об отпуске"},"close_text":{"type":"string","maxLength":24,"description":"Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается.","example":"Закрыть","default":"Отменить"},"submit_text":{"type":"string","maxLength":24,"description":"Текст кнопки отправки формы","example":"Отправить заявку","default":"Отправить"},"blocks":{"type":"array","items":{"$ref":"#/components/schemas/ViewBlockUnion"},"maxItems":100,"description":"Массив блоков представления"}},"required":["title","blocks"],"description":"Собранный объект представления"}},"description":"Представление"},"PaginationMeta":{"type":"object","required":["paginate"],"properties":{"paginate":{"type":"object","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}},"required":["next_page"],"description":"Вспомогательная информация"}},"description":"Метаданные пагинации"},"Reaction":{"type":"object","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:"}},"description":"Реакция на сообщение"},"ReactionEventType":{"type":"string","enum":["new","delete"],"description":"Тип события webhook для реакций","x-enum-descriptions":{"new":"Создание","delete":"Удаление"}},"ReactionRequest":{"type":"object","required":["code"],"properties":{"code":{"type":"string","description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","example":"👍"},"name":{"type":"string","description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","example":":+1:"}},"description":"Запрос на добавление реакции"},"ReactionWebhookPayload":{"type":"object","required":["type","event","chat_id","message_id","code","name","user_id","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["reaction"],"description":"Тип объекта","example":"reaction","x-enum-descriptions":{"reaction":"Для реакций всегда reaction"}},"event":{"allOf":[{"$ref":"#/components/schemas/ReactionEventType"}],"description":"Тип события","example":"new"},"chat_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор чата, в котором находится сообщение. Поле всегда присутствует в payload. В редких случаях (например, если сообщение было удалено к моменту отправки вебхука) может быть `null`.","example":9012},"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}},"description":"Структура исходящего вебхука о реакции"},"SearchEntityType":{"type":"string","enum":["User","Task"],"description":"Тип сущности для поиска","x-enum-descriptions":{"User":"Пользователь","Task":"Задача"}},"SearchPaginationMeta":{"type":"object","required":["total","paginate"],"properties":{"total":{"type":"integer","format":"int32","description":"Общее количество найденных результатов","example":42},"paginate":{"type":"object","properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"}},"required":["next_page"],"description":"Вспомогательная информация"}},"description":"Мета-информация для пагинации поисковых результатов"},"SearchSortOrder":{"type":"string","enum":["by_score","alphabetical","creation"],"description":"Сортировка результатов поиска","x-enum-descriptions":{"by_score":"По релевантности","alphabetical":"По алфавиту","creation":"По дате создания"}},"SortOrder":{"type":"string","enum":["asc","desc"],"description":"Порядок сортировки","x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"}},"StatusUpdateRequest":{"type":"object","required":["status"],"properties":{"status":{"type":"object","properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","maxLength":50,"description":"Текст статуса","example":"Очень занят"},"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","maxLength":1024,"description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.","example":"Вернусь после 15:00"}},"required":["emoji","title"]}},"description":"Запрос на установку статуса"},"SubmitViewResponseRequest":{"type":"object","required":["submit_id"],"properties":{"submit_id":{"type":"string","description":"Идентификатор отправки формы из вебхука `view_submit`","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"errors":{"type":"object","additionalProperties":{"type":"string"},"description":"Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное.","example":{"date_end":"Дата окончания отпуска не может быть меньше даты начала"}}},"description":"Ответ бота на отправку формы"},"SubmitViewResponseResult":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","description":"Признак успешной обработки","example":true}},"description":"Результат ответа на отправку формы"},"TagNamesFilter":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Массив названий тегов","example":["Design","iOS"]},"Task":{"type":"object","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":{"allOf":[{"$ref":"#/components/schemas/TaskKind"}],"description":"Тип","example":"reminder"},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","nullable":true,"description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z"},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334},"status":{"allOf":[{"$ref":"#/components/schemas/TaskStatus"}],"description":"Статус напоминания","example":"undone"},"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","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12]},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","items":{"$ref":"#/components/schemas/CustomProperty"},"description":"Дополнительные поля напоминания"}},"description":"Напоминание"},"TaskCreateRequest":{"type":"object","required":["task"],"properties":{"task":{"type":"object","properties":{"kind":{"allOf":[{"$ref":"#/components/schemas/TaskKind"}],"description":"Тип","example":"reminder"},"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","minimum":1,"maximum":3,"description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","example":2,"default":1},"performer_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)","example":[12,13]},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязывается напоминание","example":456},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":78},"value":{"type":"string","description":"Устанавливаемое значение","example":"Синий склад"}},"required":["id","value"]},"description":"Задаваемые дополнительные поля"}},"required":["kind"],"description":"Собранный объект параметров создаваемого напоминания"}},"description":"Запрос на создание напоминания"},"TaskKind":{"type":"string","enum":["call","meeting","reminder","event","email"],"description":"Тип задачи","x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"}},"TaskStatus":{"type":"string","enum":["done","undone"],"description":"Статус напоминания","x-enum-descriptions":{"done":"Выполнено","undone":"Активно"}},"TaskUpdateRequest":{"type":"object","required":["task"],"properties":{"task":{"type":"object","properties":{"kind":{"allOf":[{"$ref":"#/components/schemas/TaskKind"}],"description":"Тип","example":"reminder","default":"reminder"},"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","minimum":1,"maximum":3,"description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","example":2},"performer_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»","example":[12]},"status":{"allOf":[{"$ref":"#/components/schemas/TaskStatus"}],"description":"Статус","example":"done"},"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","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":78},"value":{"type":"string","description":"Устанавливаемое значение","example":"Синий склад"}},"required":["id","value"]},"description":"Задаваемые дополнительные поля"}},"description":"Собранный объект параметров обновляемого напоминания"}},"description":"Запрос на обновление напоминания"},"Thread":{"type":"object","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","nullable":true,"description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686},"message_chat_id":{"type":"integer","format":"int64","nullable":true,"description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154},"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"}},"description":"Тред"},"UpdateMemberRoleRequest":{"type":"object","required":["role"],"properties":{"role":{"allOf":[{"$ref":"#/components/schemas/ChatMemberRole"}],"description":"Роль","example":"admin"}},"description":"Запрос на изменение роли участника"},"UploadParams":{"type":"object","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"}},"description":"Параметры для загрузки файла"},"User":{"type":"object","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","nullable":true,"maxLength":255,"description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег"},"last_name":{"type":"string","nullable":true,"maxLength":255,"description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров"},"nickname":{"type":"string","maxLength":255,"description":"Имя пользователя","example":"olegpetrov"},"email":{"type":"string","nullable":true,"maxLength":255,"description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com"},"phone_number":{"type":"string","nullable":true,"maxLength":255,"description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567"},"department":{"type":"string","nullable":true,"maxLength":255,"description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт"},"title":{"type":"string","nullable":true,"description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO"},"role":{"allOf":[{"$ref":"#/components/schemas/UserRole"}],"description":"Уровень доступа","example":"admin"},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"allOf":[{"$ref":"#/components/schemas/InviteStatus"}],"description":"Статус приглашения","example":"confirmed"},"inviter_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185},"list_tags":{"type":"array","items":{"type":"string"},"description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"]},"custom_properties":{"type":"array","items":{"$ref":"#/components/schemas/CustomProperty"},"description":"Дополнительные поля сотрудника"},"user_status":{"type":"object","allOf":[{"$ref":"#/components/schemas/UserStatus"}],"nullable":true,"description":"Статус. `null`, если у сотрудника не установлен статус."},"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","nullable":true,"description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z"},"time_zone":{"type":"string","nullable":true,"maxLength":32,"description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow"},"image_url":{"type":"string","nullable":true,"description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg"}},"description":"Сотрудник"},"UserCreateRequest":{"type":"object","required":["user"],"properties":{"user":{"type":"object","properties":{"first_name":{"type":"string","maxLength":255,"description":"Имя","example":"Олег"},"last_name":{"type":"string","maxLength":255,"description":"Фамилия","example":"Петров"},"email":{"type":"string","maxLength":255,"description":"Электронная почта","example":"olegp@example.com"},"phone_number":{"type":"string","maxLength":255,"description":"Телефон","example":"+79001234567"},"nickname":{"type":"string","maxLength":255,"description":"Имя пользователя","example":"olegpetrov"},"department":{"type":"string","maxLength":255,"description":"Департамент","example":"Продукт"},"title":{"type":"string","description":"Должность","example":"CIO"},"role":{"allOf":[{"$ref":"#/components/schemas/UserCreateRole"}],"description":"Уровень доступа","example":"user"},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false,"default":false},"list_tags":{"type":"array","items":{"type":"string"},"description":"Массив тегов, привязываемых к сотруднику","example":["Product","Design"]},"chat_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.","example":[12345]},"custom_properties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"value":{"type":"string","maxLength":768,"description":"Устанавливаемое значение","example":"Санкт-Петербург"}},"required":["id","value"]},"description":"Задаваемые дополнительные поля"}},"required":["email"]},"skip_email_notify":{"type":"boolean","description":"Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO.","example":false,"default":false}},"description":"Запрос на создание сотрудника"},"UserCreateRole":{"type":"string","enum":["admin","user","multi_guest","guest"],"description":"Роль пользователя, допустимая при создании сотрудника. В отличие от редактирования, при создании можно назначить роль `guest` — в этом случае параметр `chat_ids` обязателен и должен содержать ровно один чат.","x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"}},"UserEventType":{"type":"string","enum":["invite","confirm","update","suspend","activate","delete"],"description":"Тип события webhook для пользователей","x-enum-descriptions":{"invite":"Приглашение","confirm":"Подтверждение","update":"Обновление","suspend":"Приостановка","activate":"Активация","delete":"Удаление"}},"UserRole":{"type":"string","enum":["admin","user","multi_guest","guest"],"description":"Роль пользователя в системе","x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"}},"UserRoleInput":{"type":"string","enum":["admin","user","multi_guest"],"description":"Роль пользователя, допустимая при редактировании сотрудника. Роль `guest` недоступна для установки через API при редактировании — назначить роль `guest` можно только при создании сотрудника (см. `UserCreateRole`).","x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость"}},"UserStatus":{"type":"object","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","maxLength":50,"description":"Текст статуса","example":"Очень занят"},"expires_at":{"type":"string","format":"date-time","nullable":true,"description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z"},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","properties":{"text":{"type":"string","maxLength":1024,"description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov."}},"required":["text"],"nullable":true,"description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан."}},"description":"Статус пользователя"},"UserUpdateRequest":{"type":"object","required":["user"],"properties":{"user":{"type":"object","properties":{"first_name":{"type":"string","maxLength":255,"description":"Имя","example":"Олег"},"last_name":{"type":"string","maxLength":255,"description":"Фамилия","example":"Петров"},"email":{"type":"string","maxLength":255,"description":"Электронная почта","example":"olegpetrov@example.com"},"phone_number":{"type":"string","maxLength":255,"description":"Телефон","example":"+79001234567"},"nickname":{"type":"string","maxLength":255,"description":"Имя пользователя","example":"olegpetrov"},"department":{"type":"string","maxLength":255,"description":"Департамент","example":"Отдел разработки"},"title":{"type":"string","description":"Должность","example":"Старший разработчик"},"role":{"allOf":[{"$ref":"#/components/schemas/UserRoleInput"}],"description":"Уровень доступа","example":"user"},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false,"default":false},"list_tags":{"type":"array","items":{"type":"string"},"description":"Массив тегов, привязываемых к сотруднику","example":["Product","Design"]},"custom_properties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"value":{"type":"string","maxLength":768,"description":"Устанавливаемое значение","example":"Санкт-Петербург"}},"required":["id","value"]},"description":"Задаваемые дополнительные поля"}},"description":"Собранный объект параметров редактируемого сотрудника"}},"description":"Запрос на редактирование сотрудника"},"ValidationErrorCode":{"type":"string","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","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"],"description":"Коды ошибок валидации","x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"}},"VideoCallEventType":{"type":"string","enum":["started","finished","recording_ready"],"description":"Тип события видеозвонка","x-enum-descriptions":{"started":"Видеозвонок начался","finished":"Видеозвонок завершился","recording_ready":"Запись видеозвонка готова"}},"VideoCallWebhookPayload":{"type":"object","required":["type","event","video_room_id","chat_id","owner_id","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["video_call"],"description":"Тип объекта","example":"video_call","x-enum-descriptions":{"video_call":"Для видеозвонков всегда video_call"}},"event":{"allOf":[{"$ref":"#/components/schemas/VideoCallEventType"}],"description":"Тип события","example":"started"},"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","allOf":[{"$ref":"#/components/schemas/WebhookVideoCallThread"}],"nullable":true,"description":"Объект с параметрами треда, если видеозвонок проходит в треде. `null`, если звонок не в треде."},"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","items":{"$ref":"#/components/schemas/WebhookVideoCallMember"},"description":"Список участников звонка. Присутствует для события finished."},"recording_id":{"type":"integer","format":"int32","description":"Идентификатор записи. Присутствует для события recording_ready.","example":4567},"file_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор файла записи. Присутствует для события recording_ready. `null`, если файл ещё не привязан.","example":89012},"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}},"description":"Структура исходящего вебхука о видеозвонке"},"ViewBlock":{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Тип блока"},"text":{"type":"string","description":"Текст блока"},"name":{"type":"string","description":"Имя поля"},"label":{"type":"string","description":"Метка поля"},"initial_date":{"type":"string","format":"date-time","description":"Начальная дата"}},"description":"Блок представления для форм (базовая модель, используйте конкретные типы блоков)"},"ViewBlockCheckbox":{"type":"object","required":["type","name","label","options"],"properties":{"type":{"type":"string","enum":["checkbox"],"description":"Тип блока","example":"checkbox","x-enum-descriptions":{"checkbox":"Для чекбоксов всегда checkbox"}},"name":{"type":"string","maxLength":255,"description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"newsletters"},"label":{"type":"string","maxLength":150,"description":"Подпись к группе чекбоксов","example":"Рассылки"},"options":{"type":"array","items":{"$ref":"#/components/schemas/ViewBlockCheckboxOption"},"minItems":1,"maxItems":10,"description":"Массив чекбоксов"},"required":{"type":"boolean","description":"Обязательность","example":false,"default":false},"hint":{"type":"string","maxLength":2000,"description":"Подсказка, которая отображается под группой чекбоксов серым цветом","example":"Выберите интересующие вас рассылки"}},"description":"Блок checkbox — чекбоксы"},"ViewBlockCheckboxOption":{"type":"object","required":["text","value"],"properties":{"text":{"type":"string","maxLength":75,"description":"Отображаемый текст","example":"Ничего"},"value":{"type":"string","maxLength":255,"description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing"},"description":{"type":"string","maxLength":75,"description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде"},"checked":{"type":"boolean","description":"Изначально выбранный пункт","example":true}}},"ViewBlockDate":{"type":"object","required":["type","name","label"],"properties":{"type":{"type":"string","enum":["date"],"description":"Тип блока","example":"date","x-enum-descriptions":{"date":"Для выбора даты всегда date"}},"name":{"type":"string","maxLength":255,"description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"date_start"},"label":{"type":"string","maxLength":150,"description":"Подпись к полю","example":"Дата начала отпуска"},"initial_date":{"type":"string","format":"date","description":"Начальное значение в поле в формате YYYY-MM-DD","example":"2025-07-01"},"required":{"type":"boolean","description":"Обязательность","example":true,"default":false},"hint":{"type":"string","maxLength":2000,"description":"Подсказка, которая отображается под полем серым цветом","example":"Укажите дату начала отпуска"}},"description":"Блок date — выбор даты"},"ViewBlockDivider":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["divider"],"description":"Тип блока","example":"divider","x-enum-descriptions":{"divider":"Для разделителя всегда divider"}}},"description":"Блок divider — разделитель"},"ViewBlockFileInput":{"type":"object","required":["type","name","label"],"properties":{"type":{"type":"string","enum":["file_input"],"description":"Тип блока","example":"file_input","x-enum-descriptions":{"file_input":"Для загрузки файлов всегда file_input"}},"name":{"type":"string","maxLength":255,"description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"request_doc"},"label":{"type":"string","maxLength":150,"description":"Подпись к полю","example":"Заявление"},"filetypes":{"type":"array","items":{"type":"string"},"description":"Массив допустимых расширений файлов, указанные в виде строк (например, [\"png\",\"jpg\",\"gif\"]). Точка в начале не нужна, но допустима — она подставляется сама. Значение с косой чертой считается MIME-типом и остаётся как есть. Если это поле не указано, все расширения файлов будут приняты. Значение подставляется в фильтр окна выбора файла, поэтому расширение полученного файла проверяйте у себя.","example":["pdf","jpg","png"]},"max_files":{"type":"integer","format":"int32","minimum":1,"maximum":10,"description":"Максимальное количество файлов, которое может загрузить пользователь в это поле","example":1,"default":10},"required":{"type":"boolean","description":"Обязательность","example":true,"default":false},"hint":{"type":"string","maxLength":2000,"description":"Подсказка, которая отображается под полем серым цветом","example":"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)"}},"description":"Блок file_input — загрузка файлов"},"ViewBlockHeader":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["header"],"description":"Тип блока","example":"header","x-enum-descriptions":{"header":"Для заголовков всегда header"}},"text":{"type":"string","maxLength":150,"description":"Текст заголовка","example":"Основная информация"}},"description":"Блок header — заголовок"},"ViewBlockInput":{"type":"object","required":["type","name","label"],"properties":{"type":{"type":"string","enum":["input"],"description":"Тип блока","example":"input","x-enum-descriptions":{"input":"Для текстового поля всегда input"}},"name":{"type":"string","maxLength":255,"description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"info"},"label":{"type":"string","maxLength":150,"description":"Подпись к полю","example":"Описание отпуска"},"placeholder":{"type":"string","maxLength":150,"description":"Подсказка внутри поля ввода, пока оно пустое","example":"Куда собираетесь и что будете делать"},"multiline":{"type":"boolean","description":"Многострочное поле","example":true,"default":false},"initial_value":{"type":"string","maxLength":3000,"description":"Начальное значение в поле","example":"Начальный текст"},"min_length":{"type":"integer","format":"int32","minimum":0,"maximum":3000,"description":"Минимальная длина текста, который должен написать пользователь. Если пользователь напишет меньше, он получит ошибку.","example":10},"max_length":{"type":"integer","format":"int32","minimum":1,"maximum":3000,"description":"Максимальная длина текста, который должен написать пользователь. Если пользователь напишет больше, он получит ошибку.","example":500},"required":{"type":"boolean","description":"Обязательность","example":true,"default":false},"hint":{"type":"string","maxLength":2000,"description":"Подсказка, которая отображается под полем серым цветом","example":"Возможно вам подскаджут, какие места лучше посетить"}},"description":"Блок input — текстовое поле ввода"},"ViewBlockMarkdown":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["markdown"],"description":"Тип блока","example":"markdown","x-enum-descriptions":{"markdown":"Для форматированного текста всегда markdown"}},"text":{"type":"string","maxLength":12000,"description":"Текст","example":"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)"}},"description":"Блок markdown — форматированный текст"},"ViewBlockPlainText":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["plain_text"],"description":"Тип блока","example":"plain_text","x-enum-descriptions":{"plain_text":"Для обычного текста всегда plain_text"}},"text":{"type":"string","maxLength":12000,"description":"Текст","example":"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе."}},"description":"Блок plain_text — обычный текст"},"ViewBlockRadio":{"type":"object","required":["type","name","label","options"],"properties":{"type":{"type":"string","enum":["radio"],"description":"Тип блока","example":"radio","x-enum-descriptions":{"radio":"Для радиокнопок всегда radio"}},"name":{"type":"string","maxLength":255,"description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"accessibility"},"label":{"type":"string","maxLength":150,"description":"Подпись к группе радиокнопок","example":"Доступность"},"options":{"type":"array","items":{"$ref":"#/components/schemas/ViewBlockSelectableOption"},"minItems":1,"maxItems":10,"description":"Массив радиокнопок"},"required":{"type":"boolean","description":"Обязательность","example":true,"default":false},"hint":{"type":"string","maxLength":2000,"description":"Подсказка, которая отображается под группой радиокнопок серым цветом","example":"Если вы не планируете выходить на связь, то выберите вариант Ничего"}},"description":"Блок radio — радиокнопки"},"ViewBlockSelect":{"type":"object","required":["type","name","label","options"],"properties":{"type":{"type":"string","enum":["select"],"description":"Тип блока","example":"select","x-enum-descriptions":{"select":"Для выпадающего списка всегда select"}},"name":{"type":"string","maxLength":255,"description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"team"},"label":{"type":"string","maxLength":150,"description":"Подпись к выпадающему списку","example":"Выберите команду"},"options":{"type":"array","items":{"$ref":"#/components/schemas/ViewBlockSelectOption"},"minItems":1,"maxItems":100,"description":"Массив доступных пунктов в выпадающем списке"},"required":{"type":"boolean","description":"Обязательность","example":false,"default":false},"hint":{"type":"string","maxLength":2000,"description":"Подсказка, которая отображается под выпадающим списком серым цветом","example":"Выберите одну из команд"}},"description":"Блок select — выпадающий список"},"ViewBlockSelectOption":{"type":"object","required":["text","value"],"properties":{"text":{"type":"string","maxLength":75,"description":"Отображаемый текст","example":"Ничего"},"value":{"type":"string","maxLength":255,"description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing"},"description":{"type":"string","maxLength":75,"description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде"},"selected":{"type":"boolean","description":"Изначально выбранный пункт. Только один пункт может быть выбран.","example":true}},"description":"Пункт выпадающего списка (select). Изначальный выбор задаётся полем `selected`, а не `checked`, как у radio и checkbox."},"ViewBlockSelectableOption":{"type":"object","required":["text","value"],"properties":{"text":{"type":"string","maxLength":75,"description":"Отображаемый текст","example":"Ничего"},"value":{"type":"string","maxLength":255,"description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing"},"description":{"type":"string","maxLength":75,"description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде"},"checked":{"type":"boolean","description":"Изначально выбранная радиокнопка. Только одна радиокнопка может быть выбрана.","example":true}},"description":"Радиокнопка блока radio. Изначальный выбор задаётся полем `checked`, как у checkbox, а не `selected`, как у select."},"ViewBlockTime":{"type":"object","required":["type","name","label"],"properties":{"type":{"type":"string","enum":["time"],"description":"Тип блока","example":"time","x-enum-descriptions":{"time":"Для выбора времени всегда time"}},"name":{"type":"string","maxLength":255,"description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"newsletter_time"},"label":{"type":"string","maxLength":150,"description":"Подпись к полю","example":"Время рассылки"},"initial_time":{"type":"string","format":"time","description":"Начальное значение в поле в формате HH:mm. Значение в формате HH:mm:ss тоже принимается — секунды отбрасываются.","example":"11:00"},"required":{"type":"boolean","description":"Обязательность","example":false,"default":false},"hint":{"type":"string","maxLength":2000,"description":"Подсказка, которая отображается под полем серым цветом","example":"Укажите, в какое время присылать выбранные рассылки"}},"description":"Блок time — выбор времени"},"ViewBlockUnion":{"anyOf":[{"$ref":"#/components/schemas/ViewBlockHeader"},{"$ref":"#/components/schemas/ViewBlockPlainText"},{"$ref":"#/components/schemas/ViewBlockMarkdown"},{"$ref":"#/components/schemas/ViewBlockDivider"},{"$ref":"#/components/schemas/ViewBlockInput"},{"$ref":"#/components/schemas/ViewBlockSelect"},{"$ref":"#/components/schemas/ViewBlockRadio"},{"$ref":"#/components/schemas/ViewBlockCheckbox"},{"$ref":"#/components/schemas/ViewBlockDate"},{"$ref":"#/components/schemas/ViewBlockTime"},{"$ref":"#/components/schemas/ViewBlockFileInput"}],"description":"Union-тип для всех возможных блоков представления"},"ViewSubmitWebhookPayload":{"type":"object","required":["type","event","callback_id","private_metadata","chat_id","user_id","view_id","submit_id","data","webhook_timestamp"],"properties":{"type":{"type":"string","enum":["view"],"description":"Тип объекта","example":"view","x-enum-descriptions":{"view":"Для формы всегда view"}},"event":{"type":"string","enum":["submit"],"description":"Тип события","example":"submit","x-enum-descriptions":{"submit":"Отправка формы"}},"callback_id":{"type":"string","nullable":true,"description":"Идентификатор обратного вызова, указанный при открытии представления. `null`, если при открытии формы он не был указан.","example":"timeoff_request_form"},"private_metadata":{"type":"string","nullable":true,"description":"Приватные метаданные, указанные при открытии представления. `null`, если при открытии формы они не были указаны.","example":"{\"timeoff_id\":4378}"},"chat_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор чата, в котором была нажата кнопка, открывшая форму. Поле может быть `null` для форм, открытых до выкатки этого поля.","example":9012},"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","additionalProperties":{},"description":"Данные заполненных полей представления. Ключ — `name` блока, значение — введённые данные. У блока `file_input` значение приходит массивом объектов с полями `name`, `size` и `url`, ссылка действует 2 часа."},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1755075544}},"description":"Структура исходящего вебхука о заполнении формы"},"VoiceContent":{"type":"object","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","nullable":true,"description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт"}},"description":"Данные голосового сообщения"},"WebhookEvent":{"type":"object","required":["id","event_type","payload","created_at"],"properties":{"id":{"type":"string","description":"Идентификатор события","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"event_type":{"type":"string","description":"Тип события","example":"message_new"},"payload":{"allOf":[{"$ref":"#/components/schemas/WebhookPayloadUnion"}],"description":"Объект вебхука"},"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"}},"description":"Событие исходящего вебхука"},"WebhookEventType":{"type":"string","enum":["new","update","delete"],"description":"Тип события webhook","x-enum-descriptions":{"new":"Создание","update":"Обновление","delete":"Удаление"}},"WebhookLink":{"type":"object","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}},"description":"Объект ссылки в вебхуке разворачивания ссылок"},"WebhookMessageThread":{"type":"object","required":["message_id","message_chat_id"],"properties":{"message_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads).","example":12345},"message_chat_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя.","example":67890}},"description":"Объект треда в вебхуке сообщения"},"WebhookPayloadUnion":{"anyOf":[{"$ref":"#/components/schemas/MessageWebhookPayload"},{"$ref":"#/components/schemas/ReactionWebhookPayload"},{"$ref":"#/components/schemas/ButtonWebhookPayload"},{"$ref":"#/components/schemas/ViewSubmitWebhookPayload"},{"$ref":"#/components/schemas/ChatMemberWebhookPayload"},{"$ref":"#/components/schemas/CompanyMemberWebhookPayload"},{"$ref":"#/components/schemas/LinkSharedWebhookPayload"},{"$ref":"#/components/schemas/VideoCallWebhookPayload"}],"description":"Объединение всех типов payload вебхуков","x-union-deserializer":"webhook-payload"},"WebhookVideoCallMember":{"type":"object","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"}},"description":"Участник видеозвонка"},"WebhookVideoCallThread":{"type":"object","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","nullable":true,"description":"Идентификатор сообщения, к которому создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads).","example":268092},"message_chat_id":{"type":"integer","format":"int32","nullable":true,"description":"Идентификатор чата сообщения, к которому создан тред. `null` у треда без сообщения-родителя.","example":23438}},"description":"Параметры треда, в котором проходит видеозвонок"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"Bearer"}}},"servers":[{"url":"https://api.pachca.com/api/shared/v1","description":"Production server","variables":{}}]}