Public API Changelog — Integrations
Публичные изменения API внешних интеграций. Breaking changes помечаются BREAKING.
Формат записи: YYYY-MM-DD — раздел — что изменилось + ссылки на затронутые публичные доки.
2026-05-25 — Bot REST reference discoverability
Reference-документация Bot REST API обновлена для developer portal: добавлена
карта endpoint'ов, явный flow загрузки файлов через Bot Files API и ссылки на
attachments, Agent Runs, Execution Tasks и runtime_capability.token.
API contract не менялся.
Затронутые доки:
- overview.md
- concepts/bots.md
- guides/create-bot.md
- reference/bot-rest-api.md
- reference/message-format.md
2026-05-24 — Bot REST execution tasks
Bot REST API получил v1 endpoints для execution task widgets и связь с Agent Runs.
- Новый
POST /api/v1/bot/execution_tasks. - Новый
GET /api/v1/bot/execution_tasks/{widget_id}. - Новый
PATCH /api/v1/bot/execution_tasks/{widget_id}. - Новый
POST /api/v1/bot/execution_tasks/{widget_id}/cancel. POST /api/v1/bot/agent_runsпринимает optionalwidget_id.- Terminal
PATCH /api/v1/bot/agent_runs/{run_id}для linkedwidget_idобновляет task и передаёт только проверенные финальные файлы. runtime_capability.tokenscoped кspace_id,widget_id, optionalagent_run_id, allowed actions и expiry; token показывается один раз.
Затронутые доки:
- reference/bot-rest-api.md
- concepts/bots.md
- reference/message-format.md
- reference/error-codes.md
- overview.md
2026-05-23 — Bot REST file attachments
Bot REST API получил загрузку файлов через short-lived upload URL и прикрепление файлов к bot messages / final Agent Run messages.
- Новый
POST /api/v1/bot/files/upload_sessions. - Новый
POST /api/v1/bot/files/{file_id}/confirm. - Новый
GET /api/v1/bot/files/{file_id}/download_url. POST /api/v1/bot/messagesпринимаетattachments: [{"file_id": "..."}]; теперь нуженcontentили хотя бы один attachment.PATCH /api/v1/bot/agent_runs/{run_id}принимает final attachments только приstatus="completed"и возвращаетattachments+attachment_status.- Upload использует приватное хранилище PartyFlow; постоянные идентификаторы хранилища не возвращаются через публичный API.
Затронутые доки:
2026-05-20 — Bot Agent Runs / responsive status
Bot REST API получил Agent Runs для долгих AI-ответов: бот создаёт
placeholder-сообщение, затем обновляет безопасный статус через тот же message
flow. Пользователи видят обычные message.new / message.edited; отдельного
agent.run.* stream в MVP нет.
- Новый
POST /api/v1/bot/agent_runs. - Новый
PATCH /api/v1/bot/agent_runs/{run_id}с монотоннымsequence. - Новый
GET /api/v1/bot/agent_runs/{run_id}. - Новый
POST /api/v1/bot/agent_runs/{run_id}/cancel. POST /api/v1/bot/agent_runsтребуетIdempotency-Keyheader или body-полеidempotency_key; повтор с тем же ключом возвращает существующий run без второго placeholder, а reuse ключа для другого conversation/trigger возвращает409.- Agent Run writes требуют, чтобы бот был участником conversation, и ограничены
rate limit'ом с
429 Retry-After. bot_metadata_json.kind="agent_run"содержит server-generatedstatus_text,sequence,is_terminal,updated_at,completed_atи безопасныйerror_code.
Затронутые доки:
2026-05-14 — BREAKING Interactive callback payload canonical fields
Interactive callbacks и interactive poll payload теперь используют canonical
flat-поля без отдельной v2 версии: event_type, space_id,
actor_user_id, occurred_at.
space_idобязателен во всехbutton.click,select.submit,modal.submitpayload и берётся из server-authoritative контекста PartyFlow.- Старые поля
type,user_id,timestampудалены из interactive callback body иpayload_json. button.clickиselect.submitсодержатdata;select.submitдополнительно содержитselected_value;modal.submitсодержитvaluesи не содержитdata.
Затронутые доки:
- reference/interactive-components.md
- reference/bot-event-poll.md
- guides/bot-interactive-quickstart.md
- concepts/bots.md
- guides/create-bot.md
- overview.md
2026-05-13 — Unified bot message context
В bot-facing события сообщений добавлен единый объект conversation_context.
- Для
MESSAGE_CREATED,MESSAGE_UPDATED,MESSAGE_DELETEDв Bot Event Polling, Bot Webhook и outgoing webhookdataтеперь можно отличить DM, public/private беседу, обычный thread и Call Thread без эвристик по ID. - Bot DM SSE (
GET /api/v1/bot/stream) использует те же message-поля и тот жеconversation_context, плюс SSE-полеevent: "message.new". conversation_context.type— raw conversation type,scope—dm/public/private,subtype="call_thread"ставится только для треда гостевого voice-чата.- Старые flat-поля
conversation_id,thread_id,parent_message_idсохранены для обратной совместимости.
Затронутые доки:
- reference/bot-rest-api.md
- reference/bot-event-poll.md
- reference/bot-webhook.md
- reference/outgoing-webhooks.md
- concepts/bots.md
- guides/create-bot.md
2026-05-12 — Developer docs cleanup
No API changes. Из внешней документации убраны сведения, предназначенные для реализации UI-клиента PartyFlow. Разделы Integrations теперь описывают только bot-side и webhook-сценарии для внешних разработчиков.
2026-04-28 — Built-in slash commands: scope-drift cleanup
Закрыли расхождения между описанием и реализацией встроенных команд /poll и /remind:
/pollавто-реакции. В ответmessage.send.responseдля успешного/pollдобавлено полеauto_reactions: string[]со списком emoji (1️⃣…🔟) в порядке вариантов. Клиент-отправитель должен пройтисьmessage.toggleReactionпо этому списку, чтобы пользователи могли голосовать кликом по реакции. Поле отсутствует/пусто для ephemeral-ответов и команд без авто-реакций./remind @user. Теперь поддерживается напоминание другому участнику канала:/remind @alice "review" in 2h.@userдолжен быть вmention_detailsобычной системы упоминаний (как в чате). При срабатывании bot-сообщение содержитmention_user_ids: [target], поэтому целевой пользователь получает push./remind #channel— поддерживается: бот публикует напоминание в указанный канал. Имя резолвится по индексу, поэтому работает быстро даже на крупных space-ах. Авторизация — та же, что и у обычного сообщения: только каналы, где вы участник; private-каналы и не-найденные имена возвращают одинаковое"Канал #<name> не найден или у вас нет к нему доступа."(защита от enumeration). Тред исходного канала не наследуется в напоминание для#channel(тред принадлежит исходному каналу)./remind at HH:MMтеперь в локальной таймзоне отправителя. До этого время трактовалось как UTC —at 14:00могло прозвонить за полдня раньше/позже от ожидаемого. Таймзона берётся из профиля пользователя (timezone); при отсутствии — fallback в UTC. Confirmation-сообщение содержит таймзону для прозрачности ("… на 14:00 Europe/Moscow").
Затронутые доки:
- concepts/slash-commands.md — синтаксис, таймзона,
@user-цели.
Совместимость: запросы фронта не ломаются — auto_reactions опциональное, отсутствие @user в mention_details даёт ephemeral-ошибку (раньше поведение было то же — все таргеты молча превращались в me). Старые клиенты, не реагирующие на auto_reactions, продолжат показывать /poll как plain bot-сообщение без интерактивных голосов.
2026-04-19 — Управление outgoing webhooks и interactive config в Admin UI
Admin UI теперь поддерживает полный цикл управления outgoing webhook'ами и настройками интерактивных ботов: создание, просмотр, обновление, удаление, тестовую отправку, ротацию секретов и просмотр истории доставок.
Для interactive components админ может настроить или очистить callback URL и перевыпустить buttons_signing_secret. Plaintext-секрет возвращается только один раз: при первом включении или при ротации. В списках, уведомлениях и повторных ответах секрет не показывается.
Затронутые доки:
- reference/outgoing-webhooks.md — управление подписками через Admin UI.
- reference/interactive-components.md — настройка interactive config для бота.
Всё ещё Planned:
- Локализация error-сообщений для новых interactive config flows.
Post-publish fix (2026-04-19): уведомление об auto-disable подписки теперь отображается в Admin UI после 100 подряд неуспешных доставок.
2026-04-19 — Bot Read API, Custom Slash Commands, Interactive Components (GA)
Phase 2 дополняет outgoing webhooks тремя отдельно полезными возможностями — чтением истории канала ботом, кастомными slash-командами и интерактивными элементами (кнопки, select menus, модалки).
Bot Read API. Новый endpoint GET /api/v1/channels/{conversation_id}/messages позволяет боту получать историю канала под Bearer auth. Поддерживаются курсоры before_msg_index / after_msg_index / around_msg_index (один за раз), фильтр thread_id, delta-sync updated_since. Privacy-филтр — whitelist полей: read_receipts, edit_history, delivery_status, parent_preview и mention_details ботам не возвращаются. System-события (is_system: true, joins/renames) выдаются — они нужны AI summarizer'ам. Rate limit — 10 запросов/мин на канал × 100 запросов/мин на бота. Полный справочник — reference/bot-rest-api.md.
Custom slash commands. Бот регистрирует свои команды через POST /api/v1/bots/{bot_id}/commands и получает signing_secret (один раз). Когда пользователь вводит /deploy prod, PartyFlow шлёт HMAC-подписанный POST на callback_url с payload {command, command_id, args, text, user_id, conversation_id, trigger_id, ...}. Бот отвечает response_type: "in_channel" / "ephemeral" в течение 3 секунд ИЛИ пустым телом и дошлёт результат через POST /api/v1/bot/messages + заголовок X-PartyFlow-Trigger-Id (TTL 5 мин, single-use). Ограничения: имя ^[a-z][a-z0-9_-]{0,31}$, rate limit 30/мин на пользователя × команду + 300/мин на команду глобально, cap 25 команд на бота / 100 на space. Полный справочник — reference/slash-commands.md.
Interactive components. Бот прикрепляет кнопки, select menus и модалки к сообщениям через bot_metadata_json (schema {version: 1, blocks: [{type: "actions", elements: [...]}]}). При клике PartyFlow шлёт HMAC-подписанный POST на отдельный buttons_callback_url (конфигурируется через PATCH /api/v1/bot/interactive_config с отдельным buttons_signing_secret). Бот отвечает одним из: update_message (редактируется текущее сообщение), send_message (отправляется новое), ephemeral_text (показывается только кликавшему), open_modal (открывается форма, submit проходит отдельным запросом с single-use token TTL 15 мин), noop. Visibility: поле visibility_user_ids на элементе ограничивает, кто может видеть/кликать. Rate limit: 30 кликов/мин на пользователя × сообщение + 600 кликов/мин на бота глобально. Signed tokens v1.exp.sig автоматически проставляются PartyFlow при send/edit сообщения — боту их считать не нужно. Полный справочник: reference/interactive-components.md.
Затронутые доки:
- Новые: reference/slash-commands.md, reference/interactive-components.md.
- Обновлены: reference/bot-rest-api.md (добавлен раздел "Чтение истории канала"), overview.md (custom slash и interactive components переведены из Planned в Available), concepts/slash-commands.md (кастомные команды — available).
Всё ещё Planned:
- События
MEMBER_JOINED/MEMBER_LEFTв outgoing webhooks. - OAuth 2.0 provider и публичный App Directory.
- Performance / sustained-load гарантии (публичные SLO по p95 и throughput).
2026-04-18 — Outgoing webhooks (GA)
Outgoing webhooks переведены в General Availability. Теперь внешние сервисы могут получать события из каналов PartyFlow по HTTPS POST с HMAC-подписью.
Что доступно:
- Подписка на 7 event types:
MESSAGE_CREATED,MESSAGE_UPDATED,MESSAGE_DELETED,REACTION_ADDED,REACTION_REMOVED,CONVERSATION_CREATED,CONVERSATION_ARCHIVED. - Фильтры доставки: по
channel_ids(пусто = все каналы), поtrigger(all/mentionконкретного бота /keywordsс whole-token matching). - HMAC-SHA256 подпись (
X-PartyFlow-Signature: sha256=<hex>), signing stringv1:{timestamp}:{body}. Все подписи фиксируются перед первой отправкой — retry всегда с той же подписью. - Заголовки:
X-PartyFlow-Signature,X-PartyFlow-Timestamp,X-PartyFlow-Delivery-Id(UUIDv7, для idempotency),X-PartyFlow-Event,X-PartyFlow-Webhook-Version: 1. - Retry schedule: exponential backoff с конфигурируемыми
Initial/Max/MaxAttemptsи ±20% jitter. Production-дефолты —Initial = 5s,Max = 1h,MaxAttempts = 8, что даёт последовательность5s → 10s → 20s → 40s → 80s → 160s → 320sперед dead-letter; полное retry-window — ~10 минут 35 секунд. Honor'имRetry-Afterпри429/503(RFC 7231 header + JSON body + plaintext fallback, clamp 1s..1h). - Auto-disable подписки после 100 подряд dead-letter'ов.
- Опциональный context enrichment: до 50 последних сообщений канала в
payload.context.messages[]— для AI/LLM получателей. - SSRF-защита: URL проверяется на каждом create/update и перед каждой dispatch (DNS resolve, CIDR blocklist).
- HTTPS обязателен в production.
Затронутые доки:
- Новый reference/outgoing-webhooks.md.
- Обновлены concepts/webhooks.md, concepts/security.md, concepts/rate-limits.md, guides/verify-signatures.md, overview.md.
Всё ещё Planned:
- События
MEMBER_JOINED/MEMBER_LEFT(API уже есть, publisher пока не эмитит). - Кастомные slash-команды — пользователь регистрирует свой HTTP endpoint под
/команду. - Кнопки в сообщениях ботов.
- Расширенное управление outgoing подписками через Admin UI.
- Performance / sustained-load гарантии (публичные SLO по p95 и throughput).
2026-04-17 — Инициализация документации
- Создана папка
docs/public/integrations/. Готов базовый набор: overview, quickstart, security, changelog, два reference'а (HTTP webhook endpoint, Bot REST API). - Добавлены внутренние правила ведения публичной документации.
2026-04-16 — Push policy для webhook-сообщений
- Добавлены поля
silent,severity,mentions[]в payload incoming webhook'а. - Push теперь шлётся только при @mention (Slack-style policy).
severity: criticalпробивает quiet hours / DND получателя (но уважает явно заглушённые каналы).- Затронутые доки: reference/http-webhook-endpoint.md, quickstart.md.
2026-04-16 — HMAC обязателен по умолчанию
require_signature: trueтеперь default при создании webhook'а.- Для CI/CD и simple scripts admin может явно выбрать
require_signature: false(token-only режим). - Webhook в token-only режиме всё равно генерирует и хранит signing secret — это позволяет включить подпись позже без пересоздания.
- Затронутые доки: concepts/security.md, reference/http-webhook-endpoint.md, quickstart.md.
2026-04-16 — Ротация signing secret без смены URL
- Теперь доступна отдельная ротация signing secret: URL webhook'а не меняется, меняется только secret.
- Rotate token (старое поведение) по-прежнему меняет и URL, и signing secret одновременно.
- Затронутые доки: concepts/security.md.
2026-04-09 — Phase 1 GA
Phase 1 Integration Hub готова к production:
- Incoming webhooks (Slack + Pachca формат, auto-detect).
- Bot accounts + REST API.
- Встроенные slash-команды
/pollи/remind. - HMAC signing в двух схемах (Slack v0 + PartyFlow-native).
- Auto-disable после 100 подряд ошибок.
- Rate limiting по тарифам.
2026-04-19 — Outgoing retry schedule: теперь конфигурируемый exponential
Расписание retry'ев для outgoing webhooks переведено с фиксированной таблицы 10s → 1m → 10m → 1h (4 попытки) на exponential backoff с конфигурируемыми Initial, Max и MaxAttempts. Формула: delay = min(Initial · 2^(attempt-1), Max) ± Jitter.
Production-дефолты: Initial = 5s, Max = 1h, MaxAttempts = 8, Jitter = ±20%. Это даёт последовательность 5s → 10s → 20s → 40s → 80s → 160s → 320s перед dead-letter — всего 8 попыток, полное retry-window ~10 минут 35 секунд (против ~71 минуты в предыдущей версии схемы).
Что это значит для получателей: если ваши алерты завязаны на "доставка не приходит — значит endpoint down ≥ 1 час", переключитесь на ориентир ~10-13 минут. Новое расписание срабатывает быстрее при восстановлении flappy-получателя, но и переходит в dead-letter раньше — следите за consecutive_failures внимательнее.
Изменение внесено in-place: первая версия публичных доков ещё не публиковалась на developer portal, поэтому deprecation-процедура не применяется.
Затронутые доки: overview.md, concepts/webhooks.md, concepts/rate-limits.md, reference/outgoing-webhooks.md, запись 2026-04-18 — Outgoing webhooks (GA) в этом changelog'е.
2026-04-19 — Concept docs closeout (P0)
Закрыли три заготовки-placeholder'а, которые мешали публикации на developer portal:
concepts/bots.md— полная концепт-страница: что такое bot account vs webhook, lifecycle (create → token → invite → send/read → regenerate/disable), authentication model (Bearer + SHA-256), membership, read-scope (privacy-фильтр), best practices.reference/message-format.md— публичный справочникbot_metadata_json: Slack attachments, Slack Block Kit, Pachca buttons/files,severitybadge, сводная таблица "кто что шлёт" (Grafana, GitLab CI, Sentry, Jenkins, PagerDuty, GitHub Actions, Prometheus Alertmanager, Pachca-боты).reference/error-codes.md— сводная таблица всех HTTP статусов публичных endpoints + диагностика (уже была заполнена, в этом закрытии снятstatus: planned).
Параллельно обновили карту документации.
2026-04-19 — Bot messages metadata_json via REST (fix)
POST /api/v1/bot/messages теперь прокидывает поле metadata_json в chat-слой.
Раньше поле молча игнорировалось handler'ом, поэтому interactive-сообщения можно было
отправить только через click-response. Теперь работает прямая отправка сообщения
с кнопками, select menus и модалками.
Затронутые доки: reference/interactive-components.md, reference/bot-rest-api.md.
2026-05-02 — Bot Direct Messages (DM) + SSE Stream
Боты теперь могут участвовать в личных переписках (DM) и получать сообщения в реальном времени через SSE (Server-Sent Events).
Bot DM creation.
- Пользователь может создать DM с ботом через обычный
conversation.createсis_direct: trueиmember_ids: [bot_id]— бекенд автоматически определяет, что peer — бот, и создаёт direct-чат. - Бот может инициировать DM самостоятельно:
POST /api/v1/bot/dmсuser_idцелевого пользователя. Пользователь должен быть участником того же space'а. Возвращаетconversation_id(создаётся или возвращается существующий).
SSE Stream для ботов.
- Новый endpoint
GET /api/v1/bot/stream— EventSource-поток для доставки сообщений из DM в реальном времени. - Auth: тот же Bearer token, что и для остальных bot endpoints.
- Формат:
text/event-stream. Каждое сообщение —data: <json>\n\n. - Keep-alive:
:ping\n\nкаждые 30 секунд. - Offline persistence: если бот не подключён, сообщения сохраняются в inbox (до 50 сообщений, TTL 24ч). При следующем подключении backlog доставляется первым, затем поток переключается на live-режим.
- Событие
message.newсодержит:message_id,conversation_id,author_id,text,sent_at.
Ограничения:
- SSE работает только для DM. Боты в групповых каналах продолжают получать события через outgoing webhooks (как раньше).
- Rate limit на
POST /api/v1/bot/dm— 1 запрос/сек на бота.
Затронутые доки:
- Новые разделы: reference/bot-rest-api.md → «DM с ботом» и «SSE Stream».
- Обновлены: concepts/bots.md (lifecycle, best practices), guides/create-bot.md (quickstart для DM + SSE).