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

admin

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

GET /admin/api/app-settings​

Настройки платформы (вход Studio + Telegram)

Авторизация: Admin cookie

Читает режим входа Studio (dev_login | telegram_widget) и статус Telegram-провайдера. Секреты не отдаются — только флаги *Configured.

Auth: cookie admin_auth. UI: /admin/settings (SSR; GET для curl/Swagger).

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s http://localhost:5000/admin/api/app-settings -b admin.txt

Operation ID: get_admin_api_app_settings_b43aac7928edd3f6

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Текущие настройки
401Нет admin-сессии

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

{
"configured": true,
"auth": {
"loginMode": "dev_login",
"devLoginEnabled": true
},
"providers": {
"telegram": {
"clientId": "123456789",
"botUsername": "my_bot",
"clientSecretConfigured": true,
"botTokenConfigured": true,
"configured": true
}
}
}

PUT /admin/api/app-settings​

Сохранить настройки платформы

Авторизация: Admin cookie

Upsert секций auth (режим входа) и telegram (Client ID / secret / bot token / username). Пустой clientSecret / botToken не затирает уже сохранённые значения.

При dev_login поля Telegram необязательны. botUsername можно не слать — резолв через getMe при заданном bot token.

UI: форма /admin/settings.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X PUT http://localhost:5000/admin/api/app-settings -b admin.txt \
-H 'Content-Type: application/json' \
-d '{"auth":{"loginMode":"dev_login"}}'

Operation ID: put_admin_api_app_settings_eb4a99e398bbccc3

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

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Пример тела запроса​

{
"auth": {
"loginMode": "dev_login"
},
"telegram": {
"clientId": "123456789",
"botUsername": "my_bot",
"clientSecret": "",
"botToken": ""
}
}

Ответы​

КодОписание
200Настройки сохранены
400Валидация секции auth/telegram
401Нет admin-сессии
500Внутренняя ошибка

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

{
"success": true,
"configured": true,
"auth": {
"loginMode": "dev_login",
"devLoginEnabled": true
},
"providers": {
"telegram": {
"configured": true,
"botUsername": "my_bot"
}
}
}

POST /admin/api/bot-folders/cleanup​

Очистить осиротевшие папки bots/

Авторизация: Admin cookie

Сканирует каталог bots/, парсит имена …_{projectId}_{tokenId} и удаляет папки, чей проект уже нет в БД. Непонятные имена → skipped (не трогает).

Auth: только admin_auth. Ops / curl / Swagger (UI в hub пока нет).

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X POST http://localhost:5000/admin/api/bot-folders/cleanup -b admin.txt

Operation ID: post_admin_api_bot_folders_cleanup_b96fac5c84f6d7f2

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Очистка выполнена (возможно 0 удалений)
401Нет admin-сессии
500Ошибка чтения БД или fs

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

{
"deleted": [
"bot_999_1"
],
"skipped": [],
"count": 1,
"message": "Удалено 1 папок"
}

POST /admin/api/login​

Войти в админку

Авторизация: Публичный

Форма с полем key = ADMIN_API_KEY. При успехе ставит httpOnly cookie admin_auth (Path=/admin, 7 дней, HMAC от ключа) и редиректит на /admin или /admin/settings (если платформа ещё не настроена).

Неверный ключ → 302 на /admin/login?error=1. Без ключа в non-prod → 503; в production без ADMIN_API_KEY весь /admin не монтируется.

UI: /admin/login. User connect.sid / Bearer PAT здесь не работают.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'

Operation ID: post_admin_api_login_0ebddd5bdba68bb5

Ответы​

КодОписание
302Успех → Location /admin или /admin/settings + Set-Cookie. Ошибка ключа → /admin/login?error=1
503Admin не настроен (нет ключа)

POST /admin/api/logout​

Выйти из админки

Авторизация: Публичный

Сбрасывает cookie admin_auth и редиректит на /admin/login.

UI: кнопка «Выйти» на hub /admin.

curl -s -c admin.txt -b admin.txt -X POST http://localhost:5000/admin/api/logout

Operation ID: post_admin_api_logout_e17cf342fdbda5c0

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
302Location /admin/login, cookie очищена

GET /admin/api/projects/{id}​

Проект и проекция владельца

Авторизация: Admin cookie

Возвращает запись проекта из хранилища и безопасную проекцию владельца. Не включается в MCP.

Operation ID: get_admin_api_projects_id_5b1c8f4904fe68fe

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаЧисловой идентификатор проекта; проверяется обработчиком—

Ответы​

КодОписание
200Проект и владелец
302При Accept: text/html перенаправление на /admin/login
400Неверный идентификатор
401Нет административной cookie
404Проект не найден

GET /admin/api/projects/{id}/audit​

Журнал действий проекта

Авторизация: Admin cookie

Последние 100 записей без тел запросов и секретов. Для отсутствующего проекта возвращается пустой items, не 404.

Operation ID: get_admin_api_projects_id_audit_8e7da171bd95661a

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаЧисловой идентификатор проекта; проверяется обработчиком—

Ответы​

КодОписание
200Журнал проекта
302При Accept: text/html перенаправление на /admin/login
400Нужен положительный безопасный целый ID
401Нет административной cookie
500Ошибка загрузки журнала

GET /admin/api/projects/{id}/secrets/bot-token/{tokenId}​

Явное раскрытие токена бота

Авторизация: Admin cookie

Существующий административный маршрут. Секрет не приводится в примерах; не публикуется в MCP.

Operation ID: get_admin_api_projects_id_secrets_bot_token_tokenId_8708cab661db38be

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаЧисловой идентификатор проекта; проверяется обработчиком—
tokenIdpathда——

Ответы​

КодОписание
200Секрет проекта
302При Accept: text/html перенаправление на /admin/login
400Неверные идентификаторы
401Нет административной cookie
404Токен отсутствует либо принадлежит другому проекту

GET /admin/api/runtime-settings/{group}​

Раздел настроек рантайма

Авторизация: Admin cookie

Поля раздела. Секрет отдаётся только флагом configured, без значения. Пока значение не сохранено, в value попадает живой process.env.

Auth: cookie admin_auth. UI: /admin/runtime/{group}.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s http://localhost:5000/admin/api/runtime-settings/backups -b admin.txt

Operation ID: get_admin_api_runtime_settings_group_f5a7acbfab2e7ed3

Параметры​

ИмяInОбязательныйОписаниеПример
grouppathда—"backups"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Поля и хранилища
401Нет admin-сессии
404Неизвестный раздел
500Ошибка загрузки

PUT /admin/api/runtime-settings/{group}​

Сохранить раздел настроек рантайма

Авторизация: Admin cookie

Пустой секрет не затирает старое значение. Пустая обычная строка удаляет ключ и возвращает чтение из env. Секреты не пишутся в process.env. Раздел backups перезапускает планировщик, storages обновляет s3-default.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X PUT http://localhost:5000/admin/api/runtime-settings/workers -b admin.txt \
-H 'Content-Type: application/json' -d '{"values":{"USE_WORKER_POOL":"true"}}'

Operation ID: put_admin_api_runtime_settings_group_4c307abb7d3d4f4e

Параметры​

ИмяInОбязательныйОписаниеПример
grouppathда——
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Сохранено
400Публичное хранилище или неверное тело
401Нет admin-сессии
404Неизвестный раздел
500Ошибка сохранения

POST /admin/api/runtime-settings/backups/run​

Снять бэкап сейчас

Авторизация: Admin cookie

Дамп всех целей расписания. Публичное хранилище отклоняется. При включённой доставке файл отправляется в Telegram. Ошибка доставки возвращается в warnings, сохранённый бэкап остаётся доступен.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X POST http://localhost:5000/admin/api/runtime-settings/backups/run -b admin.txt

Operation ID: post_admin_api_runtime_settings_backups_run_626d248dca02de59

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Метки баз и предупреждения доставки
401Нет admin-сессии

POST /admin/api/runtime-settings/backups/telegram/test​

Проверить доставку бэкапов в Telegram

Авторизация: Admin cookie

Отправляет небольшой файл по сохранённым DB_BACKUP_TELEGRAM_BOT_TOKEN и DB_BACKUP_TELEGRAM_CHAT_ID. Работает и при выключенной автоматической доставке. Данных базы в файле нет, токен в ответ не возвращается.

Operation ID: post_admin_api_runtime_settings_backups_telegram_test_1197923d63612fbe

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Проверочный файл отправлен
400Некорректные настройки или ошибка Telegram
401Нет admin-сессии

GET /admin/api/status​

Статус admin-сессии

Авторизация: Публичный

Публичный JSON: валидна ли admin_auth и доступна ли админка. adminEnabled всегда true, если роут смонтирован.

curl -s -b admin.txt http://localhost:5000/admin/api/status

Operation ID: get_admin_api_status_63886e3755d88cde

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Состояние сессии

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

{
"authenticated": true,
"adminEnabled": true
}

GET /admin/api/support/attachments/{id}​

Картинка диалога поддержки

Авторизация: Admin cookie

Отдаёт файл администратору по cookie admin_auth.

curl -s http://localhost:5000/admin/api/support/attachments/1 -b admin.txt -o screen.png

Operation ID: get_admin_api_support_attachments_id_13b09eb6b1cc4af5

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаИдентификатор вложения"1"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Картинка. Content-Type — сохранённый MIME, Content-Disposition: inline
401Нет admin-сессии
404Файл не найден

GET /admin/api/support/threads​

Список диалогов поддержки

Авторизация: Admin cookie

Диалоги с автором и превью последнего сообщения. Сначала с непрочитанным, затем по времени. Без status возвращаются открытые. Лимит 200.

Auth: cookie admin_auth. UI: /admin/support.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s 'http://localhost:5000/admin/api/support/threads?status=open' -b admin.txt

Operation ID: get_admin_api_support_threads_f5c1a95880084e8d

Параметры​

ИмяInОбязательныйОписаниеПример
statusqueryнетФильтр статуса. По умолчанию open"open"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Список диалогов
401Нет admin-сессии
500Внутренняя ошибка

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

{
"items": [
{
"id": 1,
"status": "open",
"unreadByAdmin": 1,
"unreadByUser": 0,
"lastMessageAt": "2026-09-30T11:11:04.565Z",
"user": {
"id": 123456789,
"firstName": "Иван",
"lastName": null,
"username": "ivan",
"photoUrl": null
},
"lastMessageText": "Не сохраняется сценарий",
"lastMessageSender": "user"
}
]
}

GET /admin/api/support/threads/{id}​

Диалог поддержки

Авторизация: Admin cookie

Диалог, профиль автора и сообщения. Auth: cookie admin_auth. UI: /admin/support/{id}.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s http://localhost:5000/admin/api/support/threads/1 -b admin.txt

Operation ID: get_admin_api_support_threads_id_dedaaaa96403d20a

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаИдентификатор диалога"1"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Диалог с сообщениями
400Неверный идентификатор
401Нет admin-сессии
404Диалог не найден

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

{
"thread": {
"id": 1,
"status": "open",
"unreadByAdmin": 1,
"unreadByUser": 0,
"lastMessageAt": "2026-09-30T11:11:04.565Z"
},
"user": {
"id": 123456789,
"firstName": "Иван",
"lastName": null,
"username": "ivan",
"photoUrl": null
},
"messages": [
{
"id": 1,
"sender": "user",
"text": "Не сохраняется сценарий",
"context": {
"projectId": 294,
"path": "/editor/294",
"userAgent": "Mozilla/5.0"
},
"source": "web",
"createdAt": "2026-09-30T11:10:20.787Z",
"attachments": []
},
{
"id": 2,
"sender": "admin",
"text": "Проверьте, что проект открыт, и повторите сохранение.",
"context": null,
"source": "web",
"createdAt": "2026-09-30T11:11:04.565Z",
"attachments": []
}
]
}

PATCH /admin/api/support/threads/{id}​

Закрыть или открыть диалог

Авторизация: Admin cookie

Меняет статус. Новое сообщение пользователя само переводит закрытый диалог в open.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X PATCH http://localhost:5000/admin/api/support/threads/1 -b admin.txt -H 'Content-Type: application/json' -d '{"status":"closed"}'

Operation ID: patch_admin_api_support_threads_id_36d42c0180e8a6c8

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

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаИдентификатор диалога"1"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Пример тела запроса​

{
"status": "closed"
}

Ответы​

КодОписание
200Обновлённый диалог
400Статус не open/closed или неверный id
401Нет admin-сессии
404Диалог не найден

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

{
"id": 1,
"status": "closed",
"unreadByAdmin": 0,
"unreadByUser": 0,
"lastMessageAt": "2026-09-30T11:11:04.565Z"
}

POST /admin/api/support/threads/{id}/messages​

Ответить пользователю

Авторизация: Admin cookie

Сохраняет ответ администратора и отмечает диалог прочитанным. Поля text и files. Источник ответа — web.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X POST http://localhost:5000/admin/api/support/threads/1/messages -b admin.txt -F text='Проверьте сохранение ещё раз.' -F files=@screen.png

Operation ID: post_admin_api_support_threads_id_messages_257611cfccacdc04

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаИдентификатор диалога"1"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
201Ответ сохранён
400Пустое сообщение, файл не картинка, больше 8 МБ, текст длиннее 4000 или неверный id
401Нет admin-сессии
404Диалог не найден

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

{
"id": 2,
"sender": "admin",
"text": "Проверьте, что проект открыт, и повторите сохранение.",
"context": null,
"source": "web",
"createdAt": "2026-09-30T11:11:04.565Z",
"attachments": []
}

POST /admin/api/support/threads/{id}/read​

Отметить диалог прочитанным

Авторизация: Admin cookie

Обнуляет unreadByAdmin.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X POST http://localhost:5000/admin/api/support/threads/1/read -b admin.txt

Operation ID: post_admin_api_support_threads_id_read_e70b4ce269f610e1

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаИдентификатор диалога"1"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Обновлённый диалог
400Неверный идентификатор
401Нет admin-сессии
404Диалог не найден

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

{
"id": 1,
"status": "open",
"unreadByAdmin": 0,
"unreadByUser": 0,
"lastMessageAt": "2026-09-30T11:11:04.565Z"
}

GET /admin/api/support/unread​

Сколько сообщений ждут ответа

Авторизация: Admin cookie

Сумма unread_by_admin по всем диалогам. Для счётчика в меню админки.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s http://localhost:5000/admin/api/support/unread -b admin.txt

Operation ID: get_admin_api_support_unread_ae51d24238a9ce1e

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Общее число непрочитанных
401Нет admin-сессии

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

{
"total": 3
}

PATCH /admin/api/templates/{id}/featured​

Рекомендуемый сценарий (featured on/off)

Авторизация: Admin cookie

Включает или снимает «рекомендуемый» шаблон в каталоге Studio (featured 0|1). Обычный PUT /api/templates/{id} это поле игнорирует.

Auth: только admin_auth. Ops / curl / Swagger.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X PATCH http://localhost:5000/admin/api/templates/12/featured -b admin.txt \
-H 'Content-Type: application/json' -d '{"featured":1}'

Operation ID: patch_admin_api_templates_id_featured_73d3d7ea3654a80b

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

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаID записи bot_templates"12"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Пример тела запроса​

{
"featured": 1
}

Ответы​

КодОписание
200Шаблон обновлён
400Неверный id или featured
401Нет admin-сессии
404Шаблон не найден

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

{
"id": 1,
"ownerId": null,
"name": "FAQ-бот",
"description": "Ответы на частые вопросы",
"data": {
"sheets": [
{
"id": "main",
"name": "Основной",
"nodes": [
{
"id": "start",
"type": "start",
"position": {
"x": 0,
"y": 0
},
"data": {
"messageText": "Привет!"
}
}
],
"edges": []
}
]
},
"flow_data": {
"sheets": [
{
"id": "main",
"name": "Основной",
"nodes": [
{
"id": "start",
"type": "start",
"position": {
"x": 0,
"y": 0
},
"data": {
"messageText": "Привет!"
}
}
],
"edges": []
}
]
},
"category": "utility",
"tags": [
"faq",
"support"
],
"isPublic": 1,
"difficulty": "easy",
"authorName": null,
"useCount": 120,
"rating": 0,
"ratingCount": 0,
"featured": 1,
"language": "ru",
"complexity": 2,
"estimatedTime": 10,
"createdAt": "2026-01-10T10:00:00.000Z",
"updatedAt": "2026-01-10T10:00:00.000Z"
}

POST /admin/api/templates/recreate​

Пересоздать встроенные сценарии (алиас refresh)

Авторизация: Admin cookie

То же force-seed, что POST …/templates/refresh (совместимый алиас).

Auth: только admin_auth.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X POST http://localhost:5000/admin/api/templates/recreate -b admin.txt

Operation ID: post_admin_api_templates_recreate_2396575f81d3dfb4

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Seed выполнен
401Нет admin-сессии
500Ошибка seed

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

{
"message": "Templates recreated successfully",
"timestamp": "2026-08-08T19:00:00.000Z"
}

POST /admin/api/templates/refresh​

Обновить встроенные сценарии каталога

Авторизация: Admin cookie

Принудительно перезаписывает системные шаблоны в bot_templates (каталог «Сценарии» в Studio).

Auth: только admin_auth. Ops / curl / Swagger.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s -X POST http://localhost:5000/admin/api/templates/refresh -b admin.txt

Operation ID: post_admin_api_templates_refresh_e57029e39fa41ef8

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Seed выполнен
401Нет admin-сессии
500Ошибка seed

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

{
"message": "Templates refreshed successfully",
"timestamp": "2026-08-08T19:00:00.000Z"
}

GET /admin/api/update-check​

Проверка обновлений на GitHub

Авторизация: Admin cookie

Сравнивает локальный version.json с main на GitHub. ?refresh=1 сбрасывает кеш проверки.

Auth: cookie admin_auth. UI: кнопка «Проверить обновления» на /admin.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s 'http://localhost:5000/admin/api/update-check?refresh=1' -b admin.txt

Operation ID: get_admin_api_update_check_5792142481fe0d92

Параметры​

ИмяInОбязательныйОписаниеПример
refreshqueryнетСбросить кеш проверки"1"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Результат сравнения версий
401Нет admin-сессии

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

{
"current": {
"version": "2.2.1.5",
"releasedAt": "2026-10-05"
},
"latest": {
"version": "2.2.1.5",
"releasedAt": "2026-10-05",
"notesUrl": null
},
"updateAvailable": false,
"checkFailed": false,
"deployGuideUrl": "https://github.com/org/telegram-bot-builder"
}

GET /admin/api/users​

Список аккаунтов платформы

Авторизация: Admin cookie

Все записи telegram_users с числом проектов во владении и участий. Поиск по имени, @username и числовому Telegram ID. Только чтение.

Auth: cookie admin_auth. Сессия Studio (connect.sid) не подходит.

UI: /admin/users.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s 'http://localhost:5000/admin/api/users?search=ivan&page=1&perPage=25' -b admin.txt

Operation ID: get_admin_api_users_fd95868e5685faf1

Параметры​

ИмяInОбязательныйОписаниеПример
searchqueryнетПоиск по имени, @username или ID (до 100 символов)"ivan"
pagequeryнет—1
perPagequeryнет—25
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Страница списка аккаунтов
401Нет admin-сессии
500Внутренняя ошибка

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

{
"items": [
{
"id": 123456789,
"firstName": "Иван",
"lastName": "Петров",
"username": "ivan_bot",
"photoUrl": null,
"createdAt": "2026-01-01T08:00:00.000Z",
"updatedAt": "2026-03-10T09:15:00.000Z",
"ownedCount": 2,
"sharedCount": 1
}
],
"total": 1,
"page": 1,
"perPage": 25
}

GET /admin/api/users/{id}​

Карточка аккаунта платформы

Авторизация: Admin cookie

Профиль telegram_users и списки проектов во владении / участия. Из bot_projects отдаются только id, name, даты — без data, bot_token, session_id.

Auth: cookie admin_auth.

UI: /admin/users/{id}.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s http://localhost:5000/admin/api/users/123456789 -b admin.txt

Operation ID: get_admin_api_users_id_261f7afd195fe16f

Параметры​

ИмяInОбязательныйОписаниеПример
idpathдаTelegram user id (положительное целое)"123456789"
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Карточка аккаунта
400Неверный id
401Нет admin-сессии
404Аккаунт не найден
500Внутренняя ошибка

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

{
"user": {
"id": 123456789,
"firstName": "Иван",
"lastName": "Петров",
"username": "ivan_bot",
"photoUrl": null,
"createdAt": "2026-01-01T08:00:00.000Z",
"updatedAt": "2026-03-10T09:15:00.000Z"
},
"ownedProjects": [
{
"id": 42,
"name": "Мой бот",
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-03-01T12:30:00.000Z"
}
],
"sharedProjects": [
{
"id": 7,
"name": "Командный проект",
"createdAt": "2026-02-01T11:00:00.000Z",
"updatedAt": "2026-02-28T16:00:00.000Z",
"ownerId": 987654321,
"ownerDisplayName": "@team_lead"
}
]
}

GET /admin/api/version​

Установленная версия приложения

Авторизация: Admin cookie

Читает version.json из образа/рабочей копии. Без обращения к GitHub.

Auth: cookie admin_auth. UI: карточка на /admin.

curl -s -c admin.txt -X POST http://localhost:5000/admin/api/login \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'key=YOUR_ADMIN_API_KEY'
curl -s http://localhost:5000/admin/api/version -b admin.txt

Operation ID: get_admin_api_version_cf9d69ab8ec9f951

Параметры​

ИмяInОбязательныйОписаниеПример
admin_authcookieнетAdmin cookie после /admin/login (ADMIN_API_KEY). Без неё — 401 ADMIN_UNAUTHORIZED."eyJib2R5IjoiLi4uIiwic2lnIjoiLi4uIn0"

Ответы​

КодОписание
200Текущая версия
401Нет admin-сессии

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

{
"version": "2.2.1.5",
"releasedAt": "2026-10-05",
"notesUrl": null
}