Раздел «Интеграции», API ботов и авторизация от имени сотрудника
В Пачке обновился раздел Интеграции: боты пространства и их карточки с настройками, токенами и вебхуками, витрина ботов и страница API с персональными токенами, входами в CLI и авторизациями. Администратор видит на ней все выданные в пространстве доступы и может отозвать любой. Документация ботов собрана заново под этот раздел: Обзор, Создание бота, Настройки бота, Токены бота, Доступы к чатам и сообщениям, Общение с ботом и Витрина.
В документации появился новый раздел Авторизация от имени сотрудника. Он про ботов, которые работают с данными сотрудника его правами: сотрудник один раз соглашается на экране согласия, и дальше бот действует от его имени в Пачке и в связке с другими сервисами. Раздел описывает настройку авторизации, получение токена, согласие и отзыв доступа, а в чек-листе запуска собрано всё, что должно быть включено у бота.
Публичный API ботов теперь умеет всё, что раздел Интеграции: бота можно создать пустым, как в интерфейсе, выпустить ему несколько токенов со своими правами, включить авторизацию от имени сотрудника и заполнить страницу в витрине. Подробнее — в разделах Токены бота и Настройка авторизации.
Были добавлены новые методы:
- GETСписок токенов бота
- POSTНовый токен бота
- PUTИзменение токена бота
- POSTПеревыпуск токена бота
- DELETEУдаление токена бота
- GETКаталог прав бота
- POSTРотация секрета клиента
- PUTЗагрузка аватара чата
- DELETEУдаление аватара чата
Ещё изменения:
- Журнал аудита записывает выдачу и отзыв каждого доступа к API: персональных
токенов, входов в CLI, токенов ботов и авторизаций от имени сотрудника. В
деталях событий видно вид токена, его название, владельца и права.
Появились события
bot_token_deleted,oauth_token_revokedиbot_oauth_client_secret_issued. Подробнее — в разделе Токены и авторизации в журнале. - Новый метод PUTОтметка чата непрочитанным помечает чат непрочитанным для владельца токена, как одноимённое действие в интерфейсе.
- Аватар беседы или канала ставится и убирается через API, а ссылка на него
приходит в новом поле
avatar_urlчата. - Мульти-гость работает с API наравне с сотрудником: создаёт персональные токены, входит в CLI и авторизует ботов. Через API он видит то же, что в интерфейсе. Подробнее — в разделе Мульти-гость в API.
- Если скоуп у токена есть, а текущая роль владельца не позволяет действие,
ответ
403приходит с кодомrole_forbidden: повторная авторизация тут не поможет. Подробнее — в разделе Ошибки авторизации. - Настройка «Игнорировать свои сообщения» не присылает боту его собственные реакции, а реакции других участников на сообщения бота приходят всегда.
- Бота с настройкой «Ограничить одним чатом», который уже состоит в беседе или канале, нельзя добавить во второй такой чат и через API. В теги такого бота не добавить, а при включении настройки он выходит из всех тегов.
- Метод PUTРедактирование сотрудника у бота меняет только имя,
ник, теги и
suspended, остальные поля в запросе пропускает. - В вебхуке о ссылке появились тип чата, его идентификатор и тред, как в вебхуке о новом сообщении.
- В формах у радиокнопок и чекбоксов до 20 вариантов.
- Поиск по сотрудникам, чатам и сообщениям и поиск в списке сотрудников отвечают отдельной ошибкой, если запрос не уложился по времени.
- Голосовое сообщение длиннее 30 минут отклоняется.
- В пространстве с продвинутым шифрованием текст сообщения ограничен 27 000 байт. Подробнее — в разделе Шифрование и безопасный контур.
- Информацию о напоминании получает каждый, кому доступен его чат, по тому же правилу, что у фильтра по чатам в списке напоминаний.
Были обновлены следующие методы: POSTНовый бот, PUTРедактирование бота, GETИнформация о боте, GETСписок ботов, GETСписок ботов пространства, GETЖурнал аудита событий, POSTДобавление пользователей, POSTНовый чат, GETСписок чатов, GETИнформация о чате, PUTРедактирование чата, GETСписок чатов пространства, PUTРедактирование сотрудника, GETСписок сотрудников, GETСписок тегов, GETПоиск сотрудников, GETПоиск чатов, GETПоиск сообщений, POSTНовое сообщение, PUTРедактирование сообщения, POSTОткрытие представления, POSTНовый черновик, PUTРедактирование черновика, GETИнформация о напоминании.
Bot: операции Get Many Tokens, Create Token, Update Token, Reissue Token и Delete Token — у бота может быть несколько токенов, у каждого своё имя и права. Операция Get Scopes отдаёт каталог прав, которые можно выдать боту.Bot: операция Rotate Client Secret — новый client_secret для авторизации от имени сотрудникаBot: у Create и Update появились поля OAuth Client и Promo — авторизация от имени сотрудника и страница бота в витрине, а также Kind и Unfurl Domains. У Create — Empty для бота без токена, у Update — Single Chat.Chat: операция Mark Unread — отметка чата непрочитанным для владельца токенаChat: операции Update Avatar и Delete Avatar — аватар беседы или канала. В ответах с чатами появилось поле avatar_url.Security: фильтр событий пополнился восемью событиями — выпуск, изменение, перевыпуск и удаление токена бота, выпуск и обновление секрета клиента, выключение авторизации и отзыв токена самим приложениемTrigger: событие о ссылке приносит entity_type, entity_id и thread, как событие о новом сообщенииBot: значение Anyone поля Who Can Add описано как публичный бот, которого гости и мульти-гости не добавляютMessage и Task: подсказки к полю Content и к фильтру Chat IDs описывают, что меняется для мульти-гостяMessage, Draft и Task: подсказка к полю Content называет предел длины текста — 40 000 байтMessage: подсказка к полю Parent Message ID описывает ответ с цитатой в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщениеBot: подсказка к полю Ignore Self Messages говорит, что настройка не присылает боту и его собственные реакцииCredentials: подсказка Webhook Allowed IPs перечисляет все три адреса, с которых Пачка отправляет вебхукиpachca bots list-tokens, create-token, update-token, reissue-token и delete-token — токены бота, у каждого своё имя и права. pachca bots list-scopes — каталог прав, которые можно выдать боту.pachca bots rotate-client-secret — новый client_secret для авторизации от имени сотрудникаpachca bots create и bots update: флаги --oauth-client и --promo для авторизации от имени сотрудника и страницы бота в витрине, --kind и --unfurl-domains. У bots create — --empty для бота без токена, у bots update — --single-chat.pachca chats mark-unread — отметка чата непрочитаннымpachca chats update-avatar и chats remove-avatar — аватар беседы или канала. В выводе команд с чатами появилось поле avatar_url.pachca security list — флаг --event-key принимает восемь новых событий: bot_token_created, bot_token_updated, bot_token_reissued, bot_token_deleted, bot_oauth_client_secret_issued, bot_oauth_client_secret_rotated, bot_oauth_client_disabled и oauth_token_revokedpachca search users, search chats, search messages и users list: в справке описан ответ 504 с кодом timeout, если поиск не уложился по времени, а у файлов в messages create, messages update и drafts — предел голосового в 30 минутpachca auth login — вход через браузер передаёт имя устройства, по которому вход узнаётся в списке токенов CLIpachca guide: сценарии разворачивания ссылок и поллинга описывают раздел «Интеграции» — событие ссылок с доменами и история событий без Webhook URLpachca messages create, messages update и tasks list: подсказки к --content и --chat-ids описывают, что меняется для мульти-гостяpachca messages create, messages update, drafts create, drafts update, tasks create и tasks update: в справке к --content указан предел длины текста — 40 000 байт, а в пространстве с продвинутым шифрованием 27 000pachca messages create: подсказка к --parent-message-id описывает ответ с цитатой в любом чате, в том числе в треде. В описаниях тредов сказано, какой идентификатор куда передавать: id — чтобы написать в тред, chat_id — чтобы прочитать его сообщения.401 CLI подсказывает, что делать дальше: войти заново, если вход через браузер отозван или завершён, или сохранить новый токен. В подсказку подставлен профиль, с которым запускалась команда.pachca views open: в справке у блоков radio и checkbox до 20 вариантовpachca bots create и bots update: справка к --ignore-self-messages говорит, что настройка не присылает боту и его собственные реакцииpachca bots list-events: в справке у события отправки формы сказано, что chat_id фиксируется при открытии формы, а не при её отправкеpachca chats create, members add и users update: в справке описаны отказы для бота с настройкой «Ограничить одним чатом» — single_chat_bot_occupied, если он уже состоит в другой беседе или канале, и single_chat_bot_tag_denied при добавлении в тег. У users update сказано, что у бота меняются только имя, ник, теги и suspended.pachca tasks get: в справке сказано, что напоминание видят все, кому доступен его чат, по тому же правилу, что у фильтра --chat-ids в tasks listСаморегистрация вебхука бота (PUT /bot/webhook) и Ротация собственного токена бота (POST /bot/recreate_token) отвечают своими моделями BotSelfResponse и BotSelfTokenResponse: кроме id и настроек вебхука, в них есть oauth_clientaccess_token в ответе Новый бот (POST /bots) стало необязательным: у бота, созданного с empty: true, токена нет. Объект webhook в запросе Редактирование бота (PUT /bots/{id}) тоже больше не обязателен.Список токенов бота (GET /bots/{id}/tokens), Новый токен бота (POST /bots/{id}/tokens), Изменение токена бота (PUT /bots/{id}/tokens/{token_id}), Перевыпуск токена бота (POST /bots/{id}/tokens/{token_id}/reissue), Удаление токена бота (DELETE /bots/{id}/tokens/{token_id}) и Каталог прав бота (GET /bots/{id}/scopes)Ротация секрета клиента (POST /bots/{id}/rotate_client_secret)Новый бот (POST /bots) и Редактирование бота (PUT /bots/{id}): поля oauth_client и promo в запросе, oauth_client, oauth_client_enabled, promo и client_secret в ответе, а также поле empty для пустого ботаname, nickname, avatar_url, creator_id, created_at, authorized_users_count, last_used_at и permissions, у вебхука — kind, unfurl_domains и last_request_at. kind, unfurl_domains и single_chat принимаются и при редактировании.oauth_client у ботов в Список ботов пространства (GET /company/bots)Отметка чата непрочитанным (PUT /chats/{id}/unread) и скоуп chats:mark_unreadЗагрузка аватара чата (PUT /chats/{id}/avatar) и Удаление аватара чата (DELETE /chats/{id}/avatar), поле avatar_url в объекте чатаbot_token_created, bot_token_updated, bot_token_reissued, bot_token_deleted, bot_oauth_client_secret_issued, bot_oauth_client_secret_rotated, bot_oauth_client_disabled и oauth_token_revoked и модели их деталей. У деталей bot_scopes_updated, bot_webhook_settings_updated и bot_oauth_client_updated появились bot_id и actor_id.AuditDetailsToken и AuditDetailsBotTokenUpdated: в деталях событий токенов приходят вид токена token_kind, название, владелец resource_owner_id и скоупы. У oauth_authorization_revoked появился user_id, у событий входа с устройства — device_name.bot_add_denied в ValidationErrorCode — так Добавление пользователей (POST /chats/{id}/members) и Новый чат (POST /chats) отвечают на бота, которого вам не разрешает добавить его настройка «Кто может добавлять бота в чаты»single_chat_bot_occupied, single_chat_bot_tag_denied и bot_changed_concurrently в ValidationErrorCode: так Новый чат (POST /chats) и Добавление пользователей (POST /chats/{id}/members) отвечают 409 на бота с настройкой «Ограничить одним чатом», который уже состоит в другой беседе или канале, а Редактирование сотрудника (PUT /users/{id}) — 422 на попытку добавить такого бота в тег или если настройки бота поменялись во время запросаtimeout и ответ 504 у Поиск сотрудников (GET /search/users), Поиск чатов (GET /search/chats), Поиск сообщений (GET /search/messages) и Список сотрудников (GET /users) — поиск не уложился по времениentity_type, entity_id и thread в вебхуке о ссылке (LinkSharedWebhookPayload)