Skip to main content

Архитектура

Bedolaga предоставляет единый FastAPI-сервер на порту 8080 с тремя областями API:
ОбластьПрефиксАвторизацияНазначение
Web API/X-API-KeyПрограммное администрирование бота
Cabinet API/cabinet/*JWT BearerЛичный кабинет пользователя
Cabinet Admin API/cabinet/admin/*JWT Bearer + рольУправление через веб-кабинет

710

Эндпоинтов

898

Pydantic-схем

85

Групп (тегов)

По областям

ОбластьЭндпоинтовГруппОписание
Web API27732Управление ботом, рассылки, подписки, серверы
Cabinet User14621Подписки, платежи, рефералы, поддержка
Cabinet Admin28733Пользователи, тарифы, RemnaWave, RBAC

Авторизация

Web API — API Key

Все эндпоинты Web API требуют ключ в заголовке:
curl -H "X-API-Key: YOUR_TOKEN" https://your-domain.com/users
Ключ создаётся через админ-панель бота или через API: POST /tokens.

Cabinet API — JWT

Cabinet использует JWT-токены (HS256):
curl -H "Authorization: Bearer ACCESS_TOKEN" https://your-domain.com/cabinet/subscription
Получение токена:
СпособЭндпоинтОписание
Telegram WebAppPOST /cabinet/auth/telegramПередать initData
Telegram WidgetPOST /cabinet/auth/telegram/widgetДанные виджета
EmailPOST /cabinet/auth/email/loginEmail + пароль
OAuth 2.0GET /cabinet/auth/oauth/{provider}Google, Яндекс, Discord, VK
Telegram OIDCPOST /cabinet/auth/telegram/oidcTelegram OIDC авторизация
Обновление: POST /cabinet/auth/refresh с refresh-токеном.

Cabinet Admin API

Те же JWT-токены, но пользователь должен быть администратором (ADMIN_IDS / ADMIN_EMAILS) или иметь назначенную роль RBAC с нужными разрешениями.

Быстрый старт

1

Health Check

curl https://your-domain.com/health
Ответ: {"status": "ok"}
2

Получить список пользователей

curl -H "X-API-Key: YOUR_TOKEN" \
  "https://your-domain.com/users?page=1&per_page=20"
3

Создать подписку

curl -X POST -H "X-API-Key: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"user_id": 123, "period_days": 30, "traffic_limit_gb": 100}' \
  https://your-domain.com/subscriptions

WebSocket

Два WebSocket-эндпоинта для real-time обновлений:
ПутьАвторизацияНазначение
/ws?token=API_KEYAPI KeyДашборд админ-панели
/cabinet/ws?token=JWTJWTУведомления Cabinet

Web API — группы

ГруппаОписание
usersУправление пользователями
subscriptionsПодписки и ключи подключения
transactionsФинансовые операции
partnersПартнёрская программа
ГруппаОписание
broadcastsМассовые рассылки
pagesИнформационные страницы
welcome-textsПриветственные сообщения
main-menuНастройки главного меню
menu-layoutКонструктор расположения кнопок меню
pinned-messagesЗакреплённые сообщения
notificationsСистемные уведомления
ГруппаОписание
promo-codesПромокоды
promo-groupsПромо-группы (периодические скидки)
promo-offersРекламные предложения
campaignsРекламные кампании с трекингом
contestsКонкурсы и розыгрыши
pollsОпросы
ГруппаОписание
remnawaveRemnaWave API (ноды, сквады, инбаунды)
serversУправление серверами
settingsНастройки бота
backupsРезервные копии
statsСтатистика
logsЛоги ошибок
healthПроверки состояния
ГруппаОписание
webhooksWebhook-обработчики платёжных систем
miniappTelegram Mini App API
mediaЗагрузка и хранение файлов
authАутентификация Web API
supportСистема тикетов
ban-notificationsУведомления о банах
Landing PagesПубличные лендинги для привлечения клиентов

Cabinet API — группы

ГруппаОписание
Cabinet AuthАвторизация (Telegram, email, OAuth)
Cabinet OAuthOAuth 2.0 провайдеры
Cabinet SubscriptionПодписки, тарифы, ключи
Cabinet BalanceБаланс и пополнение
Cabinet ReferralРеферальная программа
Cabinet TicketsТикеты поддержки
Cabinet NotificationsУведомления
Cabinet Promo / Cabinet PromocodeПромокоды
Cabinet Contests / Cabinet PollsКонкурсы и опросы
Fortune WheelКолесо фортуны
Cabinet InfoИнформация о сервисе
BrandingБрендирование и оформление
Cabinet Account LinkingПривязка и отвязка аккаунтов
Cabinet Account MergeОбъединение аккаунтов
Cabinet GiftПодарочные подписки
Cabinet WithdrawalВывод партнёрских средств
ГруппаОписание
Cabinet Admin UsersУправление пользователями
Cabinet Admin TariffsТарифы
Cabinet Admin ServersСерверы
Cabinet Admin RemnaWaveRemnaWave интеграция
Cabinet Admin BroadcastsРассылки
Cabinet Admin PaymentsПлатежи
Cabinet Admin Payment MethodsСпособы оплаты
Cabinet Admin TicketsТикеты поддержки
Cabinet Admin Ban SystemСистема банов
Cabinet Admin CampaignsРекламные кампании
Cabinet Admin ChannelsОбязательные каналы
Cabinet Admin PartnersПартнёры
Cabinet Admin WithdrawalsВыводы средств
Cabinet Admin Pinned MessagesЗакреплённые сообщения
Cabinet Admin AppsVPN-приложения
Cabinet Admin StatsСтатистика и аналитика
Admin RBAC / Admin RBAC Policies / Admin RBAC Audit LogРоли и доступ
Admin SettingsНастройки
Admin TrafficМониторинг трафика
Admin Fortune WheelКолесо фортуны
Admin Email TemplatesEmail-шаблоны
Admin Promo Groups / Admin Promo Offers / Admin PromocodesМаркетинг
Admin Button StylesСтили кнопок
Cabinet Admin UpdatesПроверка обновлений
Cabinet Admin LandingsУправление лендингами
Cabinet Admin Referral NetworkГраф реферальной сети
Cabinet Admin Sales StatsСтатистика продаж
Admin Menu LayoutКонструктор меню

Документация на сервере

При включённом IS_DOCS_ENABLED=true доступны:
  • Swagger UI: https://your-domain.com/docs
  • ReDoc: https://your-domain.com/redoc
  • OpenAPI JSON: https://your-domain.com/openapi.json
В продакшене рекомендуется отключить документацию: IS_DOCS_ENABLED=false