# Внешние 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
