Skip to content

API-аудит 2026-08-05: архивные чаты, OAuth-клиент бота, проверка entity_type - #274

Closed
lookinway wants to merge 1 commit into
mainfrom
api-audit-2026-08-05
Closed

API-аудит 2026-08-05: архивные чаты, OAuth-клиент бота, проверка entity_type#274
lookinway wants to merge 1 commit into
mainfrom
api-audit-2026-08-05

Conversation

@lookinway

Copy link
Copy Markdown
Collaborator

Полный аудит API по docs/api-audit.md, точка отсчёта — apps/docs/content/updates/2026-08-01.md.

Что нашлось в бэкенде

Находка Где отражено
GET /chats принимает archived, объект чата отдаёт archived спека, гайд «Права и роли», n8n, CLI
POST/PUT /bots принимают oauth_client, объект бота отдаёт oauth_client, ответ создания — client_secret спека, n8n, CLI
bot.webhook в запросах ботов перестал быть обязательным спека, гайд «Настройка бота»
Неизвестный entity_type в POST /messages отвечает 400 с кодом invalid (раньше сообщение уходило в чат со случайно совпавшим id) спека
group_tags:read доступен ролям «Сотрудник» и «Бот» x-scope-roles, гайд «Права и роли», n8n
Три новых аудит-события: bot_oauth_client_updated, oauth_authorization_granted, oauth_authorization_revoked AuditEventKey, модели деталей, гайд «Журнал аудита событий»

Гайд «Права и роли» утверждал, что архивные чаты не возвращаются вообще и отличить их через API нельзя — это перестало быть правдой, абзац переписан.

Правки генераторов

Обёртку тела запроса CLI и n8n определяли как «единственное вложенное свойство». С появлением oauth_client рядом с webhook условие переставало выполняться, и pachca bots create терял все флаги вебхука (--outgoing-url, --events, --scopes и остальные), а нода n8n — все поля бота. Теперь обёрткой считается самое крупное вложенное свойство, остальные остаются siblings.

Заодно в n8n JSON-поля разбираются перед отправкой запроса: раньше объект уходил в API строкой, а некорректный ввод возвращался ошибкой валидации от API вместо понятного сообщения на ноде.

Версии

SDK 1.2.0, CLI 2026.8.1, n8n 2.0.18. Минор у SDK: webhook в запросах ботов стал необязательным, у части языков это меняет тип поля.

Проверки

turbo build, turbo check, sdk:build (все 6 языков), check-generated-sync, check-changelog-sync, check:docs-format, check:markdown, тесты n8n (446) и CLI (2155) — зелёные.

Осталось за рамками

OAuth-эндпоинты (/oauth/authorize, /oauth/token, device flow) живые, но не описаны ни в спеке, ни в гайдах. Это не дельта этого аудита — пробел существовал и раньше, а описание флоу тянет на отдельный гайд.

…ty_type

Спека:
- GET /chats: параметр archived и поле archived в модели чата
- POST/PUT /bots: объект oauth_client в запросе и ответе, client_secret
  в ответе создания; объект webhook стал необязательным
- POST /messages: неизвестный entity_type отвечает 400 с кодом invalid
- Скоуп group_tags:read доступен ролям «Сотрудник» и «Бот»
- Журнал аудита: события bot_oauth_client_updated,
  oauth_authorization_granted, oauth_authorization_revoked и их детали

Доки:
- «Права и роли»: архивные чаты возвращаются по archived=true,
  group_tags:read больше не только для администраторов
- «Журнал аудита событий»: состав деталей новых событий
- «Настройка бота»: имя можно передать на уровне bot

Генераторы:
- CLI и n8n: объект-обёртка тела запроса определяется по самому крупному
  вложенному объекту, поэтому соседний объект больше не отменяет
  разворачивание полей в флаги и поля ноды
- n8n: JSON-поля разбираются перед отправкой запроса

Версии: SDK 1.2.0, CLI 2026.8.1, n8n 2.0.18
@cursor

cursor Bot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@lookinway

Copy link
Copy Markdown
Collaborator Author

Влито в #275 — аудит и вход в CLI выпускаются одной веткой одним релизом.

@lookinway lookinway closed this Aug 6, 2026
@lookinway
lookinway deleted the api-audit-2026-08-05 branch August 6, 2026 10:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant