Перейти к основному содержимому

bot

Эндпоинтов: 24

DELETE /api/bot/env/{id}

Удалить env-переменную

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Клиент: unused.

curl -s -X DELETE 'http://localhost:5000/api/bot/env/15?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID bot_env_variables"15"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Удалена
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"success": true
}

PATCH /api/bot/env/{id}

Обновить env-переменную

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Body { key?, value?, isSecret? }. Клиент: unused.

curl -s -X PATCH 'http://localhost:5000/api/bot/env/15?telegram_id=123' \
-H 'Authorization: Bearer mcp_…' -H 'Content-Type: application/json' \
-d '{"value":"new"}'

Тело запроса: BotApiUpdateEnvBody

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID bot_env_variables"15"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Обновлена
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден
409Конфликт ключа

GET /api/bot/env/{id}/reveal

Раскрыть секретное значение env (legacy)

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Риск: ответ содержит сырое значение env. В списке секреты маскируются. Не логируйте тело ответа.

requireBotEnvVariableOwnership. UI не вызывает (см. nested). Клиент: unused.

curl -s 'http://localhost:5000/api/bot/env/15/reveal?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID записи bot_env_variables"15"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Сырое значение
400Некорректный id / bot_manager без telegram_id
401Не авторизован
403Нет доступа
404Не найдено

Пример ответа 200

{
"value": "super-secret-api-key"
}

GET /api/bot/projects

Список проектов актора

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Safe DTO без data/token. Клиент: Bot Manager.

curl -s 'http://localhost:5000/api/bot/projects?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200items + count
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager

Пример ответа 200

{
"items": [
{
"id": 42,
"name": "Мой бот",
"description": ""
}
],
"count": 1
}

POST /api/bot/projects

Создать пустой проект

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Body { name? } (дефолт «Новый проект»). Клиент: Bot Manager.

curl -s -X POST 'http://localhost:5000/api/bot/projects?telegram_id=123' \
-H 'Authorization: Bearer mcp_…' -H 'Content-Type: application/json' \
-d '{"name":"Новый бот"}'

Тело запроса: BotApiCreateProjectBody

Параметры

ИмяInОбязательныйОписаниеПример
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Созданный проект
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager

Пример ответа 200

{
"id": 55,
"name": "Новый бот"
}

DELETE /api/bot/projects/{id}

Удалить проект

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Владелец/collaborator. Клиент: Bot Manager.

curl -s -X DELETE 'http://localhost:5000/api/bot/projects/42?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Удалено
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"success": true
}

GET /api/bot/projects/{id}

Детали проекта (без data)

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

hasProjectAccess. Клиент: Bot Manager.

curl -s 'http://localhost:5000/api/bot/projects/42?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Метаданные
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"id": 42,
"name": "Мой бот",
"description": ""
}

PATCH /api/bot/projects/{id}

Переименовать проект

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Body { name }. Клиент: Bot Manager.

curl -s -X PATCH 'http://localhost:5000/api/bot/projects/42?telegram_id=123' \
-H 'Authorization: Bearer mcp_…' -H 'Content-Type: application/json' \
-d '{"name":"Новое имя"}'

Тело запроса: BotApiRenameProjectBody

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Обновлён
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"id": 42,
"name": "Новое имя"
}

GET /api/bot/projects/{id}/collaborators

Список коллабораторов проекта

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Клиент: UI use-collaborators.

curl -s 'http://localhost:5000/api/bot/projects/42/collaborators?telegram_id=123' \
-b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200items + count
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"items": [
{
"projectId": 42,
"userId": 999,
"invitedBy": 123
}
],
"count": 1
}

POST /api/bot/projects/{id}/collaborators

Добавить коллаборатора

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Body { user_id }. Клиент: UI use-collaborators.

curl -s -X POST 'http://localhost:5000/api/bot/projects/42/collaborators?telegram_id=123' \
-b cookies.txt -H 'Content-Type: application/json' -d '{"user_id":999}'

Тело запроса: BotApiAddCollaboratorBody

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Добавлен
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"success": true
}

DELETE /api/bot/projects/{id}/collaborators/{userId}

Удалить коллаборатора

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Клиент: UI use-collaborators.

curl -s -X DELETE \
'http://localhost:5000/api/bot/projects/42/collaborators/999?telegram_id=123' \
-b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта"42"
userIdpathдаTelegram user id коллаборатора"123456789"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Удалён
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"success": true
}

PUT /api/bot/projects/{id}/data

Заменить data существующего проекта

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Тело: { sheets } или { json_data }. Токены не очищаются. Клиент: unused.

curl -s -X PUT 'http://localhost:5000/api/bot/projects/42/data?telegram_id=123' \
-H 'Authorization: Bearer mcp_…' -H 'Content-Type: application/json' -d @project.json

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Сводка обновления
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"id": 42,
"name": "Мой бот",
"sheetsCount": 1,
"nodesCount": 12
}

GET /api/bot/projects/{id}/export

Экспорт project.json (base64 file)

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Ответ совместим с медиа-нодой (type: file). Клиент: unused (не в UI/шаблоне).

curl -s 'http://localhost:5000/api/bot/projects/42/export?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Файл base64
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"type": "file",
"data": "eyJzaGVldHMiOltdfQ==",
"mimeType": "application/json",
"fileName": "Мой_бот.json"
}

GET /api/bot/projects/{id}/tokens

Список токенов проекта

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Риск: ответ может содержать поле token (секрет). Клиент: Bot Manager.

curl -s 'http://localhost:5000/api/bot/projects/42/tokens?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200items + count
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"items": [
{
"id": 7,
"name": "@my_bot",
"botStatus": "🟢"
}
],
"count": 1
}

POST /api/bot/projects/{id}/tokens

Добавить токен в проект

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Body { token, name? }. Валидация getMe; дубликат → существующий. Клиент: Bot Manager.

curl -s -X POST 'http://localhost:5000/api/bot/projects/42/tokens?telegram_id=123' \
-H 'Authorization: Bearer mcp_…' -H 'Content-Type: application/json' \
-d '{"token":"123:ABC…"}'

Тело запроса: BotApiCreateTokenBody

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID проекта или project_42"42"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Создан или уже существовал
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"id": 7,
"name": "@my_bot",
"projectId": 42
}

POST /api/bot/projects/import

Импорт project.json → новый проект

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Тело: { sheets } или { json_data }. Токены очищаются. Клиент: use-no-projects + Bot Manager.

curl -s -X POST 'http://localhost:5000/api/bot/projects/import?telegram_id=123' \
-H 'Authorization: Bearer mcp_…' -H 'Content-Type: application/json' -d @project.json

Параметры

ИмяInОбязательныйОписаниеПример
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Созданный проект
400Нет тела / неверная структура
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager

Пример ответа 200

{
"id": 55,
"name": "Импортированный проект"
}

DELETE /api/bot/tokens/{tokenId}

Удалить токен

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

hasProjectAccess к проекту токена. Клиент: Bot Manager.

curl -s -X DELETE 'http://localhost:5000/api/bot/tokens/7?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Удалено
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"success": true
}

GET /api/bot/tokens/{tokenId}/env

Список env токена (секреты маскируются)

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

UI — /api/projects/…/env-variables. Клиент: unused.

curl -s 'http://localhost:5000/api/bot/tokens/7/env?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200items + count
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"items": [
{
"id": 15,
"tokenId": 7,
"key": "API_KEY",
"value": "••••••••",
"isSecret": 1
}
],
"count": 1
}

POST /api/bot/tokens/{tokenId}/env

Создать env-переменную

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Body { key, value?, isSecret? }, ключ вида A-Z + A-Z0-9_ (regex ^[A-Z][A-Z0-9_]* + конец строки). Клиент: unused.

curl -s -X POST 'http://localhost:5000/api/bot/tokens/7/env?telegram_id=123' \
-H 'Authorization: Bearer mcp_…' -H 'Content-Type: application/json' \
-d '{"key":"API_KEY","value":"secret","isSecret":1}'

Тело запроса: BotApiCreateEnvBody

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
201Создана
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден
409Ключ уже есть

Пример ответа 201

{
"id": 15,
"tokenId": 7,
"key": "API_KEY",
"value": "secret",
"isSecret": 1
}

GET /api/bot/tokens/{tokenId}/photo

Аватар бота (локальный URL)

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Скачивает фото в /uploads/…. Без аватара — photoUrl: null. Клиент: Bot Manager.

curl -s 'http://localhost:5000/api/bot/tokens/7/photo?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Путь или null
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"photoUrl": "/uploads/42/bot_photos/token_7_avatar.jpg",
"total_count": 1
}

GET /api/bot/tokens/{tokenId}/stats

Статистика пользователей токена

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Числа без форматирования. Клиент: unused.

curl -s 'http://localhost:5000/api/bot/tokens/7/stats?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Счётчики
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"total_users": 100,
"active_24h": 12,
"active_7d": 40,
"new_today": 3
}

GET /api/bot/tokens/{tokenId}/status

Статус инстанса бота

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Секрет token не отдаётся. Клиент: Bot Manager, lib/bot-tools.

curl -s 'http://localhost:5000/api/bot/tokens/7/status?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200status + instance
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"status": "running",
"instance": {
"botName": "@my_bot",
"botUsername": "my_bot",
"tokenId": 7,
"status": "running",
"statusLabel": "🟢 Работает",
"uptime": "1ч 2м"
}
}

GET /api/bot/tokens/{tokenId}/users

Список пользователей бота

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Пагинация limit (≤50) / offset. Клиент: Bot Manager.

curl -s 'http://localhost:5000/api/bot/tokens/7/users?telegram_id=123&limit=10&offset=0' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
telegram_idqueryнетActor telegram_id (см. auth-модель bot)"123456789"
limitqueryнетЛимит (макс 50, по умолчанию 10)"10"
offsetqueryнетСмещение"0"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200items + count + offsets
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"items": [
{
"userId": "161",
"firstName": "Ada",
"userName": "ada"
}
],
"count": 1,
"nextOffset": null,
"prevOffset": null,
"fromItem": 1,
"toItem": 1
}

GET /api/bot/tokens/{tokenId}/users/{userId}

Один пользователь бота + аватар

Авторизация: Cookie (connect.sid) или Bearer PAT

Auth (обязательно): session cookie connect.sid или Authorization: Bearer mcp_….

Actor:

  • Личная сессия / обычный PAT → req.user.id; query telegram_id если есть — только свой, иначе 403.
  • PAT scope bot_manager → actor = обязательный telegram_id (Bot Manager: Bearer {STUDIO_BOT_MANAGER_TOKEN}).

Подробнее: docs/features/bot-manager-api-auth.md.

Даты в ответе отформатированы. Клиент: Bot Manager.

curl -s 'http://localhost:5000/api/bot/tokens/7/users/161?telegram_id=123' \
-H 'Authorization: Bearer mcp_…'

Параметры

ИмяInОбязательныйОписаниеПример
tokenIdpathдаID токена или token_7"7"
userIdpathдаTelegram user id или user_…"1612141295"
telegram_idqueryнетTelegram user id актора. Обязателен при PAT scope bot_manager. При личной сессии/PAT должен совпадать с req.user.id (или можно опустить)."123456789"
connect.sidcookieнетSession cookie. Для bot-manager предпочтителен Bearer PAT со scope bot_manager."s%3Axxxx.yyyy"

Ответы

КодОписание
200Пользователь
400Некорректный id / валидация / bot_manager без telegram_id
401Нет session/PAT
403Нет доступа / чужой telegram_id без bot_manager
404Ресурс не найден

Пример ответа 200

{
"userId": "161",
"firstName": "Ada",
"registeredAt": "09.08.2026 12:00",
"photoUrl": "/uploads/42/user_photos/user_161.jpg"
}