Лето 2026
Суточный лимит сообщений, отключение 2FA в журнале аудита и сроки ссылок на файлы
У отправки появился суточный предел — 5 000 сообщений в один чат за скользящие
24 часа, сообщения в тред считаются в чат родительского. Рядом действует общий
предел по всем чатам сразу — 30 запросов за 5 секунд. Отказ приходит с 429, и
у него два вида: суточный предел отдаёт обычную ошибку, а лимит на частоту
запросов — текст, а не JSON.
У кнопок описаны пределы: до 8 в строке, не больше 32 строк и 100 на сообщение.
Размер файла size описан 64-битным числом, а ссылка на вложение живёт до
7 дней. Удаление сообщения стирает вложения из хранилища сразу.
Подробнее — в разделах Лимиты, Ошибки, Кнопки и Загрузка файлов.
Ответ 409 описан у методов, где он возможен, и называет конфликтующее поле в
errors[].key — например, email при повторном адресе почты сотрудника.
- POSTНовый сотрудник
- PUTРедактирование сотрудника
- POSTНовый тег
- PUTРедактирование тега
- POSTЗакрепить сообщение
Журнал аудита пополнился событием user_2fa_disabled — сотрудник отключил себе
двухфакторную аутентификацию.
Ссылка на файл из формы живёт 2 часа, а сам файл хранится сутки после отправки —
Обработка форм. Вложенный .html Пачка показывает
просмотром прямо в переписке: скрипты не выполняются, картинки и стили нужно
вшивать в документ — Оформление ответов.
В поле content исходящего вебхука приходят цитаты и списки, а подчёркивание не
отражается. Описания блоков формы, напоминаний и
разметки сверены с поведением API. На странице
Лимиты описан отдельный предел для выборки списка чатов номером
страницы.
Security: фильтр событий пополнился значением User 2fa Disabled — сотрудник отключил себе двухфакторную аутентификациюpachca security list — флаг --event-key принимает значение user_2fa_disabledpachca api POST /messages --spec — размер файла size описан 64-битным числом, у ссылки url указан срок действия до 7 дней, а у кнопок появились пределы: url до 1024 символов и не больше 32 строк в buttonspachca api POST /views/open --spec — у радиокнопки блока radio изначальный выбор задаётся полем checked, как у чекбоксов, а не selected. У пункта списка предел value — 255 символов, а сам options стал обязательнымpachca api POST /tasks --spec и pachca api PUT /tasks/{id} --spec — у priority показаны допустимые границы 1–3, которые проверяет APIpachca api --spec показывает ответ 409 у методов сотрудника, тега и закрепления сообщения и ответ 429 у POST /messages — суточный предел сообщений в чатpachca api GET /tasks --spec — у фильтров chat_ids и performer_ids показан предел в 100 идентификаторов, который проверяет APIsize у файла сообщения и у записи видеозвонка описано 64-битным числом — размер файла может превышать 2 ГБ. Методы Новое сообщение (POST /messages), Редактирование сообщения (PUT /messages/{id}), payload вебхука о видеозвонкеselected у радиокнопки блока radio переименовано в checked — так его называет форма. Модель ViewBlockSelectableOption, метод Открыть форму (POST /views/open)options у блоков select, radio и checkbox стало обязательным — форма без пунктов отклоняется валидациейdescription у пункта выпадающего списка — модель ViewBlockSelectOptionuser_2fa_disabled в перечислении типов аудит-событийЧаты и боты всего пространства, фильтры напоминаний
Владелец пространства может выгрузить перечень всех бесед и каналов, включая закрытые, где он не состоит, и перечень всех ботов, включая тех, кто недоступен ему для редактирования. Настройки таких ботов не раскрываются: приходят только имя и никнейм. Оба метода доступны только Владельцу пространства на тарифе «Корпорация» и требуют отдельных скоупов. Подробнее — в разделе Права и роли.
Список напоминаний научился фильтровать выдачу: по состоянию, автору, ответственным и чатам. Фильтр по чатам заодно расширяет выборку — возвращаются все напоминания указанных чатов, а не только ваши.
Ответ 403 с кодом insufficient_scope теперь содержит заголовок
WWW-Authenticate с недостающим скоупом: причину отказа можно разобрать, не
читая тело ответа. Подробнее — в разделе
Авторизация.
Журнал аудита больше не теряет события при переходе на следующую страницу, когда за одну секунду их записано больше, чем вмещает страница.
Chat: новая операция Get Many Workspace Chats — все беседы и каналы пространства, включая закрытые, с фильтром Activity по состоянию чатаBot: новая операция Get Many Workspace Bots — все боты пространства, у недоступных для редактирования заполнены только Name и NicknameTask: операция Get Many — фильтры Status, Chat IDs, Performer IDs и Author IDSecurity: фильтр событий пополнился значениями Company Chats Accessed и Company Bots AccessedMessage: у вложения с незаполненными Size и Duration Ms эти поля больше не уходят в API нулями. duration_ms: 0 API отклонял ошибкой валидации, и отправка сообщения с файлом падала, хотя руками ничего не заполняли403 insufficient_scope называет недостающий скоуп — он берётся из заголовка WWW-Authenticatepachca chats list-company — все беседы и каналы пространства, включая закрытые, с флагом --activity для выбора состоянияpachca bots list-company — все боты пространства, с флагом --query для фильтра по имениpachca tasks list — флаги --status, --chat-ids, --performer-ids и --author-idpachca security list — фильтр --event-key принимает company_chats_accessed и company_bots_accessedinsufficient_scope берётся из заголовка WWW-Authenticate, а не из текста сообщенияСписок чатов пространства (GET /company/chats)Список ботов пространства (GET /company/bots) и модель CompanyBotResponsestatus, chat_ids, performer_ids и author_id в методе Список напоминаний (GET /tasks)company_chats_accessed и company_bots_accessed в AuditEventKey, значения company_chats:read и company_bots:read в OAuthScopeВход в CLI через браузер, архивные чаты в списке
В CLI появился вход через браузер: команда pachca auth login
вместо выписывания токена в интерфейсе. Токен живёт час, продлевается сам и
хранится в хранилище ключей ОС, а pachca auth logout закрывает доступ на
сервере. Вставка готового токена осталась — это путь для CI и агентов.
Подробнее — CLI: авторизация.
Список чатов научился отдавать архивные. По умолчанию, как и раньше,
возвращаются только активные чаты, а параметр archived добавляет к ним
архивные — при любом значении availability. Отличить один от другого можно по
новому полю archived объекта чата: оно приходит во всех ответах с чатом,
независимо от параметров запроса.
Скоупы group_tags:read и user_status:read стали доступны роли «Сотрудник» и
токенам ботов — теги и статусы сотрудников в API теперь видны тем же, кому они
видны в интерфейсе.
Неизвестное значение entity_type при отправке сообщения больше не приводит к
отправке в чат со случайно совпавшим идентификатором: метод отвечает 400 с
кодом invalid. Регистр значения по-прежнему не важен.
В журнале аудита появились три типа событий: изменение параметров OAuth-клиента бота, выдача клиенту доступа к данным пользователя и отзыв такого доступа. Состав деталей каждого — в гайде Журнал аудита событий.
Chat: операция Get Many — поле Archived для выдачи архивных чатов вместе с активнымиGroup Tag и User: у чтения тегов и статуса сотрудника убрана пометка о необходимости прав администратора — скоупы group_tags:read и user_status:read доступны сотрудникам и ботамSecurity: фильтр событий пополнился значениями Bot OAuth Client Updated, OAuth Authorization Granted и OAuth Authorization RevokedMessage: Unfurl (поле Link Previews)pachca auth login — вход через браузер вместо ручной вставки токена. Токен живёт час и продлевается сам; --token и PACHCA_TOKEN остаются для CI и агентов--insecure-storage или PACHCA_SECRET_STORE=filepachca auth status и pachca auth list — способ входа, срок жизни токена, выданные права и где хранится токенpachca auth logout — гасит токен входа через браузер на сервере, а не только удаляет профиль с машиныPACHCA_SCOPE_ERROR и поле scopepachca auth status --remote — права по данным сервера, а не сохранённые при входеpachca auth login --token - — чтение токена из потока ввода, чтобы секрет не попадал в историю оболочкиpachca auth switch — сообщает о нечитаемом секрете и истёкшем токене сразу при переключенииpachca doctor — отдельная проверка хранилища ключей, способ входа и срок токена; заблокированное хранилище больше не выдаётся за недействительный токенpachca doctor — проверяет адрес API из настроек, а не всегда облачныйpachca chats list — флаг --archived для выдачи архивных чатов вместе с активнымиpachca security list — фильтр --event-key принимает bot_oauth_client_updated, oauth_authorization_granted и oauth_authorization_revokedarchived в модели чата и одноимённый параметр запроса в методе Список чатов (GET /chats)bot_oauth_client_updated, oauth_authorization_granted и oauth_authorization_revoked в AuditEventKey и модели их деталейПроверка имени файла, уточнения в журнале аудита и страница «Права и роли»
Имя файла в сообщении теперь проверяется: расширение в name должно совпадать
с расширением файла в key, иначе метод ответит 422. Так один тип файла
больше нельзя замаскировать под другой. Базовую часть имени по-прежнему можно
менять, подробнее — в разделе Загрузка файлов.
Уточнили описание журнала аудита. Детали событий видеозвонка теперь описаны
отдельно для начала звонка, его завершения и готовой записи, у изменения
профиля появился признак обновления через SSO, а детали удаления бота и
перевыпуска его токена больше не описаны как пустые. Поля ip_address и
user_agent отмечены как необязательные: у событий, записанных без запроса
пользователя, они приходят пустыми.
Были обновлены следующие методы:
Ещё в описание исходящего вебхука о сообщении добавили поле changed_at — оно
приходило и раньше, но в документации его не было.
Появилась новая страница Права и роли. На ней собрано, как связаны роль в пространстве и роль в чате, кто и что видит в закрытых беседах и каналах, и какие права нужны частым методам.
Заодно перестроили гайд Журнал аудита событий: в нём появились структура записи, состав деталей для каждого типа события, разбор фильтров и приём для регулярной выгрузки в SIEM.
Message: в описании поля Files сказано, что расширение в name должно совпадать с расширением файла в keypachca api POST /messages --spec и --docs: у поля files[].name описано требование к расширениюpachca api GET /audit_events --spec: уточнён состав деталей событий видеозвонков, user_updated, bot_deleted и bot_token_recreatedpachca messages list: в примерах появился шаг сценария «Получить список активных тредов за период»ip_address и user_agent в записи журнала аудита стали nullableAuditDetailsVideoCallStarted, AuditDetailsVideoCallFinished и AuditDetailsVideoCallRecording (была одна AuditDetailsVideoCall на начало и завершение)started_message_id в деталях всех трёх событий видеозвонка, recording_id и file_id — в деталях готовой записиcontext в деталях события user_updated и модель AuditDetailsBot для событий bot_deleted и bot_token_recreatedchanged_at в payload исходящего вебхука о сообщении (MessageWebhookPayload)files[].name в методах POST /messages и PUT /messages/{id}: расширение должно совпадать с расширением файла в keyУточнения в описании API
Подробнее описали поведение нескольких методов и полей. Работа API не менялась.
Были уточнены следующие методы:
- GETЖурнал аудита — параметр
end_timeвключает верхнюю границу: выборка за период захватывает событие, попавшее ровно на неё. - GETМой статус и GETСтатус сотрудника
— если статус не установлен, метод отвечает
200и теломnull.
Уточнены описания полей моделей:
- У 32 полей описано, в каком случае приходит
null. Например,last_activity_atпуст, пока сотрудник ни разу не заходил в Пачку. display_avatar_urlиdisplay_nameприходят только у сообщений от ботов.nameу реакции заполнено всегда.last_name,departmentиtitleу незаполненного значения приходят какnullлибо как пустая строка.first_nameприходит какnull, пока приглашённый сотрудник не завершил регистрацию, то есть покаinvite_statusравенsent.valueу дополнительного поля приходит какnull, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.
POST/PATCH) больше не повторяется автоматически при 5xxBot: ресурс открывается на Get Many вместо Recreate own bot tokenUser: у операций со статусом и аватаркой вернулся выбор сотрудника вместо числового поляUser → Update Avatar и Chat → Download Export работают при выборе сущности из списка или по ссылкеwebhook_timestamp отклоняется, если задан секрет подписиfiles direct-url: файл добавляется в форму последнимfiles direct-url не падает при успешной загрузке--profile не перебивается переменной PACHCA_TOKENchats download-export: имя файла из Content-Disposition не уводит запись за пределы указанной папки-o csv: ячейки с =, +, -, @ экранируются, объекты и массивы выводятся как JSONdetails в журнале аудита (GET /audit_events) читается во всех языкахApiError: поле payload принимает вложенный объектViewBlockUnion) не теряют данныеRaw с исходным JSONfirst_name у сотрудника, value у дополнительного поля, display_avatar_url и display_name у сообщения стали опциональнымиReaction.name больше не nullablenull; исправлены примеры callback_id и private_metadata для формadditionalProperties даёт значение произвольного типа, а не строку. В Kotlin для него используется JsonElementСамостоятельные треды и аудит видеозвонков
Появился метод POSTНовый самостоятельный тред — создание треда, не связанного с сообщением. Тело запроса не требуется, создатель становится единственным участником треда. Метод требует скоуп threads:create. Поскольку у такого треда нет исходного сообщения, поля message_id и message_chat_id в объекте треда теперь могут возвращаться как null — это касается всех методов работы с тредами.
В журнале аудита появились типы событий видеозвонков: video_call_started, video_call_finished и video_call_recording_ready. Их можно фильтровать параметром event_key. В деталях события возвращаются chat_id, длительность и (для записи) размер файла.
Thread: операция Create a standalone thread — создание треда без привязки к сообщениюSecurity: в фильтр событий добавлены video_call_started, video_call_finished, video_call_recording_readypachca threads create — создание самостоятельного треда без привязки к сообщению--help больше не смешиваются между командами с общим путёмНовый самостоятельный тред (POST /threads) — создание треда без привязки к сообщениюThread поля message_id и message_chat_id стали nullable (null для самостоятельного треда)video_call_started, video_call_finished, video_call_recording_ready и модели деталей AuditDetailsVideoCall, AuditDetailsVideoCallRecordingСписок и удаление ботов, права доступа бота, вебхуки видеозвонков
Появились методы для управления ботами. Метод GETСписок ботов возвращает ботов, которые вы можете редактировать, с поиском по имени. Метод DELETEУдаление бота удаляет бота: прежний токен сразу инвалидируется, бот исключается из чатов, его исходящий вебхук удаляется. Оба метода требуют скоуп bots:read и bots:write соответственно.
При создании и редактировании бота добавились настройки прав доступа: who_can_add — кто может добавлять бота в чаты (creator, creator_admin, creator_admin_user, anyone), и can_edit — роли, которым, помимо создателя, разрешено редактировать настройки бота (admin, chat_owners). При создании также можно передать single_chat — ограничить бота одной беседой или каналом (личные чаты и треды в ограничение не входят). Все три поля возвращаются в объекте бота.
Появился новый тип исходящего вебхука — события видеозвонков: video_call_started, video_call_finished и video_call_recording_ready. Вебхук приходит для видеозвонков в чатах, где состоит бот. Подробнее о payload — в гайде Настройка и типы событий.
В журнале аудита появился тип события bot_deleted — удаление бота. Его можно фильтровать параметром event_key.
В поиске сотрудников у параметра sort появилось значение creation — сортировка по дате создания (в дополнение к by_score и alphabetical).
Get Many (список ботов) и Deletewho_can_add, can_edit, single_chat в операциях Create и Updatevideo_call_started, video_call_finished, video_call_recording_readyCreation (по дате создания)pachca bots list — список ботов с поиском по имени (--query)pachca bots delete — удаление бота по его idpachca bots create и bots update — права доступа бота: --who-can-add, --can-edit, --single-chatpachca search users — значение сортировки --sort creation (по дате создания)Список ботов (GET /bots) — список ботов с поиском по имениУдаление бота (DELETE /bots/{id})who_can_add, can_edit, single_chatVideoCallWebhookPayload и события video_call_started, video_call_finished, video_call_recording_readybot_deletedGET /search/users): значение сортировки creation (по дате создания)VideoCallWebhookPayload)Ротация токена бота и новые настройки вебхука
Токен бота теперь можно перевыпускать через API. Метод POSTРотация токена бота доступен администратору, владельцу компании или создателю бота по скоупу bots:write. Метод POSTРотация собственного токена бота позволяет боту перевыпустить токен самому себе по скоупу bot_self:write. Прежний токен инвалидируется сразу, новый возвращается в ответе один раз — сохраните его.
При создании и редактировании бота добавились две настройки вебхука: ignore_self_messages — игнорировать входящие сообщения, отправленные самим ботом (защита от зацикливания), и events_history_enabled — сохранять историю событий для получения через метод GETИстория событий. Оба поля также возвращаются в объекте бота.
В журнале аудита появились новые типы событий, связанные с управлением ботами: bot_token_recreated (ротация токена), bot_scopes_updated (изменение скоупов токена) и bot_webhook_settings_updated (изменение настроек вебхука). Их можно фильтровать параметром event_key.
Bot: новая операция Recreate Token — ротация токена бота по IDBot: новая операция Recreate Token Self — бот перевыпускает собственный токенBot: настройки вебхука Ignore Self Messages и Events History Enabled на Create/Update и в ответеChat (Request Export, Download Export), unfurl — в Message, информация о токене — в новом OAuth. Старые workflow (Chat Export/Link Preview/Profile → Get Info) продолжают работатьfiles/custom-properties/oauth вместо common, экспорт чата → chats, unfurl → messages. Старые имена продолжают работать (скрытые алиасы)pachca bots recreate-token — ротация токена бота по его id (нужны права администратора, владельца или создателя бота)pachca bots recreate-token-self — бот перевыпускает собственный токен своим же токеномpachca bots create и bots update — настройки вебхука --ignore-self-messages и --events-history-enabledРотация токена бота (POST /bots/{id}/recreate_token)Ротация собственного токена бота (POST /bot/recreate_token)ignore_self_messages, events_history_enabledbot_token_recreated, bot_scopes_updated, bot_webhook_settings_updatedclient.files, дополнительные поля — client.customProperties, информация о токене — client.oauth, unfurl — client.messages.unfurl() (бывш. createLinkPreviews). Старые имена (client.common, client.linkPreviews.createLinkPreviews(), client.profile.getTokenInfo()) продолжают работать как deprecated-алиасы — существующий код не ломаетсяclient.common и т.п.) сохраняются как рабочие, но скрытые из примеров аксессоры (обратная совместимость SDK)Настройки входящего вебхука бота и сортировка в поиске сообщений
При создании и редактировании бота теперь можно настроить его входящий вебхук: шаблон форматирования template, шаблонизатор template_engine (liquid или mustache), поле верификации challenge_key и показ превью ссылок link_preview_enabled. Эти же поля возвращаются в объекте бота. Подробнее о шаблонах и верификации — в гайде Входящие вебхуки.
В поиске сообщений появился параметр sort — сортировка результатов: created_at (по дате создания, по умолчанию) или relevance (по релевантности).
Create/Update и в ответе — Template, Template Engine, Challenge Key, Link Preview EnabledSort (сортировка Created At или Relevance)pachca bots create — настройки входящего вебхука: --template, --template-engine, --challenge-key, --link-preview-enabledpachca bots update — настройки входящего вебхука: --template, --template-engine, --challenge-key, --link-preview-enabledpachca search list-messages — параметр --sort (сортировка: created_at или relevance)template, template_engine, challenge_key, link_preview_enabledsort в поиске сообщений (GET /search/messages): created_at или relevanceNameError в авто-ретрае при ответах 429 и 5xxNameError на 429/5xx)Настраиваемые скоупы ботов и саморегистрация вебхука
Теперь при создании и редактировании бота можно задать скоупы его токена — параметр scopes. Если он не указан, бот получает набор по умолчанию. Текущие скоупы бота возвращаются в объекте бота в поле scopes.
Бот может самостоятельно изменить URL своего исходящего вебхука своим же токеном — без участия администратора и без знания собственного user_id. Для этого нужен скоуп bot_self:webhook:write.
Scopes (выбор скоупов токена) и поле scopes в ответеUpdate Webhook — саморегистрация исходящего вебхука бота его токеномpachca bots create — параметр --scopes (выбор скоупов токена бота)pachca bots update — параметр --scopes (изменение скоупов токена бота)pachca bots update-webhook — саморегистрация исходящего вебхука бота его собственным токеномscopes (выбор скоупов токена) и поле scopes в ответеСаморегистрация вебхука бота (PUT /bot/webhook)Создание ботов через API, голосовые сообщения
Теперь бота можно создать и получить через API, а не только в интерфейсе. При создании вы получите access_token бота — сразу сохраните его, повторно получить токен можно только через интерфейс.
Новые и обновлённые методы для ботов:
Появилась поддержка голосовых сообщений. В сообщении возвращается объект voice_content с длительностью, формой волны и расшифровкой, а при отправке файла с file_type = voice принимаются параметры duration_ms и waveform.
В payload вебхука реакции поле created_at теперь приходит и при удалении реакции. Также в деталях события аудита DLP поле action_message может быть null, если у действия правила не задан текст.
Create и Getvoice_content и параметры файла duration_ms / waveformpachca bots create — создание бота и получение его access_tokenpachca bots get — получение параметров ботаpachca bots update — новые поля --name, --nickname, --events, --trigger-on, --commandsvoice_content и параметры файлов --duration-ms / --waveform для голосовыхНовый бот (POST /bots) и Информация о боте (GET /bots/{id})voice_content в модели сообщения и параметры файлов duration_ms / waveform для голосовыхWebhook-модели и polling в SDK
SDK стали точнее типизировать payload вебхуков и получили helpers для polling истории событий. Это упрощает обработку вебхуков без публичного webhook URL и сохраняет discriminator-поля для маршрутизации событий в коде.
Был обновлен следующий метод:
type и дополнительный дискриминатор eventtype и дополнительные литералы вроде event[] / {} и не теряются из-за omitemptyMarshalJSON, чтобы сохранять явные пустые контейнеры в JSON