89 lines
4.2 KiB
Markdown
89 lines
4.2 KiB
Markdown
# Внешние API (токен в пути, без сессионной авторизации)
|
||
|
||
Описание трёх эндпоинтов для внешних систем. Токены задаются через переменные окружения на VPS.
|
||
|
||
---
|
||
|
||
## 1. GET /api/remotebet/{token}
|
||
|
||
Регистрация пользователя в текущий раунд комнаты с указанной ставкой (удалённая ставка).
|
||
|
||
**Параметры пути**
|
||
|
||
| Параметр | Тип | Описание |
|
||
|----------|--------|----------|
|
||
| token | string | Секретный токен (должен совпадать с `APP_REMOTE_BET_TOKEN`) |
|
||
|
||
**Query-параметры**
|
||
|
||
| Параметр | Тип | Обязательный | Описание |
|
||
|----------|--------|--------------|----------|
|
||
| user_id | integer| да | Внутренний ID пользователя (db_users_a.id) |
|
||
| room | integer| да | Номер комнаты: 1, 2 или 3 |
|
||
| amount | integer| да | Ставка в билетах (например, 5 = 5 билетов) |
|
||
|
||
**Ответ 200**
|
||
|
||
| Поле | Тип | Описание |
|
||
|--------------|--------|----------|
|
||
| success | boolean| Успешность операции |
|
||
| roundId | integer| ID раунда (или null) |
|
||
| room | integer| Номер комнаты |
|
||
| betTickets | integer| Размер ставки в билетах |
|
||
| error | string | Сообщение об ошибке (при success = false) |
|
||
|
||
**Коды ответа:** 200, 400, 403, 503
|
||
|
||
---
|
||
|
||
## 2. GET /api/check_user/{token}/{telegramId}
|
||
|
||
Получение информации о пользователе по Telegram ID.
|
||
|
||
**Параметры пути**
|
||
|
||
| Параметр | Тип | Описание |
|
||
|------------|--------|----------|
|
||
| token | string | Секретный токен (должен совпадать с `APP_CHECK_USER_TOKEN`) |
|
||
| telegramId | long | Telegram ID пользователя |
|
||
|
||
**Тело запроса:** отсутствует
|
||
|
||
**Ответ 200**
|
||
|
||
При успешном вызове всегда возвращается 200. По полю `found` можно определить, найден ли пользователь.
|
||
|
||
| Поле | Тип | Описание |
|
||
|-------------|--------|----------|
|
||
| found | boolean| true — пользователь найден, остальные поля заполнены; false — пользователь не найден, остальные поля null |
|
||
| dateReg | integer| Дата регистрации (при found=true) |
|
||
| tickets | number | Баланс в билетах (balance_a / 1_000_000) (при found=true) |
|
||
| depositTotal| integer| Сумма stars_amount по завершённым платежам (Stars) (при found=true) |
|
||
| refererId | integer| referer_id_1 из db_users_d (0 если нет) (при found=true) |
|
||
| roundsPlayed| integer| Количество сыгранных раундов (при found=true) |
|
||
|
||
**Коды ответа:** 200, 403, 500
|
||
|
||
---
|
||
|
||
## 3. POST /api/deposit_webhook/{token}
|
||
|
||
Уведомление об успешном пополнении пользователя (криптоплатёж). Создаётся платёж в статусе COMPLETED, начисляются билеты, обновляются баланс и статистика депозитов, создаётся транзакция типа DEPOSIT.
|
||
|
||
**Параметры пути**
|
||
|
||
| Параметр | Тип | Описание |
|
||
|----------|--------|----------|
|
||
| token | string | Секретный токен (должен совпадать с `APP_DEPOSIT_WEBHOOK_TOKEN`) |
|
||
|
||
**Тело запроса (application/json)**
|
||
|
||
| Поле | Тип | Обязательный | Описание |
|
||
|-----------|--------|--------------|----------|
|
||
| user_id | integer| да | Внутренний ID пользователя (db_users_a.id) |
|
||
| usd_amount| number | да | Сумма в USD в виде числа (например, 1.45 или 50) |
|
||
|
||
**Тело ответа:** пустое при успехе
|
||
|
||
**Коды ответа:** 200, 400, 403, 500
|