Перейти к содержанию

Gateway Service

Назначение

Gateway — пользовательский HTTP-шлюз платформы Univex. Принимает все HTTP-запросы от фронтенда и мобильных приложений, проверяет JWT-токены и перенаправляет запросы к соответствующим gRPC-сервисам.

Фреймворк: Fiber v2. Документация API: Swagger (OpenAPI).

Интерактивная документация API

Открыть ReDoc — Gateway API


Архитектура

┌────────────────────────────────────────────────┐
│              Fiber v2 HTTP Server              │
│  JWT Middleware (проверка access-токена)       │
│  Swagger UI (/docs)                            │
└───────────────────────┬────────────────────────┘
          ┌─────────────┼─────────────┐
          │             │             │
┌─────────▼──────┐ ┌────▼────┐ ┌─────▼──────────┐
│  univex-id     │ │ ledger  │ │ exchange-integ. │
│  gRPC client   │ │  gRPC   │ │   gRPC client  │
└────────────────┘ └─────────┘ └────────────────┘
┌─────────▼──────┐ ┌──────────────────┐
│    p2p         │ │ trades-aggregator│
│  gRPC client   │ │   gRPC client    │
└────────────────┘ └──────────────────┘
Downstream-сервис Используется для
univex-id Аутентификация, аккаунты, сессии, API-ключи, верификация
ledger Балансы, переводы, фиат, funded codes
p2p P2P-торговля
trades-aggregator Тикеры, WebSocket стриминг
exchange-integration Блокчейн-операции, депозиты

HTTP-маршруты

/auth — Аутентификация

Метод Путь Описание
POST /auth/sign-in Начало входа (email/телефон + пароль)
POST /auth/sign-in/complete Завершение входа (подтверждение 2FA)
POST /auth/sign-up Начало регистрации
POST /auth/sign-up/complete Завершение регистрации (подтверждение кода)
POST /auth/sign-out Выход из аккаунта
POST /auth/refresh Обновление access-токена по refresh-токену
POST /auth/send-email-code Отправить OTP-код на email
POST /auth/send-phone-code Отправить OTP-код по SMS
POST /auth/confirm-email-code Подтвердить OTP-код email
POST /auth/confirm-phone-code Подтвердить OTP-код SMS
POST /auth/confirm-google-code Подтвердить TOTP-код Google Authenticator
POST /auth/telegram Регистрация/вход через Telegram

/trading — Торговля

Метод Путь Описание
GET /trading/tickers Список торговых пар с актуальными данными
GET /trading/tickers/:ticker Данные конкретного тикера
GET /trading/orders Список ордеров аккаунта
WS /trading/ws WebSocket-подписка на изменения тикеров (стриминг)

/networks — Сети блокчейна

Метод Путь Описание
GET /networks Список поддерживаемых блокчейн-сетей
GET /networks/info Расширенная информация о сетях (комиссии, лимиты)

/deposit — Депозиты и вывод

Метод Путь Описание
GET /deposit/address Получить адрес для пополнения (сеть + актив)
POST /deposit/withdraw Инициировать вывод в блокчейн
GET /deposit/withdraw/:id/status Статус запроса на вывод
GET /deposit/topups История пополнений через блокчейн
GET /deposit/withdrawals История выводов
POST /deposit/refund-address Установить адрес для возврата (AML)

/profile — Профиль пользователя

Метод Путь Описание
GET /profile Получить данные профиля
POST /profile/verification/start Запустить KYC-верификацию (получить токен Sumsub)
POST /profile/2fa/google/create Инициировать привязку Google Authenticator
POST /profile/2fa/google/complete Завершить привязку Google Authenticator

/session — Управление сессиями

Метод Путь Описание
GET /session Список активных сессий
GET /session/:id Данные конкретной сессии
DELETE /session/:id Завершить конкретную сессию
DELETE /session Завершить все сессии

/change — Смена данных аккаунта

Метод Путь Описание
POST /change/password Инициировать смену пароля
POST /change/password/complete Завершить смену пароля
POST /change/password/reset Инициировать сброс пароля
POST /change/password/reset/complete Завершить сброс пароля
POST /change/email Инициировать смену email
POST /change/email/complete Завершить смену email
POST /change/phone Инициировать смену телефона
POST /change/phone/complete Завершить смену телефона
POST /change/username Сменить имя пользователя

/account — Аккаунт и балансы

Метод Путь Описание
GET /account Данные текущего аккаунта
GET /account/balances Балансы по всем активам
GET /account/personal-code Получить личный реферальный код
POST /account/personal-code/generate Сгенерировать новый личный код
GET /account/frozen-assets Список замороженных активов

/p2p — P2P-торговля

Метод Путь Описание
GET /p2p/advertisements Список объявлений
POST /p2p/advertisements Создать объявление
GET /p2p/advertisements/:id Данные объявления
PUT /p2p/advertisements/:id Обновить объявление
DELETE /p2p/advertisements/:id Удалить объявление
GET /p2p/orders Список ордеров
POST /p2p/orders Создать ордер
GET /p2p/orders/:id Данные ордера
POST /p2p/orders/:id/accept Принять ордер
POST /p2p/orders/:id/reject Отклонить ордер
POST /p2p/orders/:id/cancel Отменить ордер
POST /p2p/orders/:id/payment-complete Подтвердить отправку оплаты
POST /p2p/orders/:id/payment-confirm Подтвердить получение оплаты
GET /p2p/orders/:id/messages История сообщений ордера
POST /p2p/orders/:id/messages Отправить сообщение в ордер
POST /p2p/orders/:id/dispute Открыть спор по ордеру
GET /p2p/feedback Отзывы об аккаунте
POST /p2p/feedback Оставить отзыв
GET /p2p/payment-methods Список методов оплаты
POST /p2p/payment-methods Добавить метод оплаты
DELETE /p2p/payment-methods/:id Удалить метод оплаты
GET /p2p/blacklist Список заблокированных пользователей
POST /p2p/blacklist Добавить в чёрный список
DELETE /p2p/blacklist/:id Удалить из чёрного списка

/fiat — Фиатные операции

Метод Путь Описание
GET /fiat/operations История фиатных операций
POST /fiat/deposit Создать фиатный депозит
POST /fiat/withdraw Создать фиатный вывод
GET /fiat/places Список фиатных касс/мест

/operations — Подтверждение операций

Метод Путь Описание
POST /operations/:id/confirm Подтвердить операцию кодом (2FA)

/address-book — Адресная книга

Метод Путь Описание
GET /address-book Список сохранённых адресов кошельков
POST /address-book Добавить адрес
DELETE /address-book/:id Удалить адрес

/apikeys — API-ключи

Метод Путь Описание
GET /apikeys Список API-ключей аккаунта
POST /apikeys Создать новый API-ключ
DELETE /apikeys/:id Удалить API-ключ

/transfer — Переводы внутри биржи

Метод Путь Описание
POST /transfer Создать перевод другому пользователю
GET /transfer История переводов
GET /transfer/:id/status Статус конкретного перевода

/notifications — Уведомления

Метод Путь Описание
GET /notifications Список уведомлений пользователя
POST /notifications/:id/read Отметить уведомление прочитанным
GET /notifications/preferences Настройки уведомлений
PUT /notifications/preferences Обновить настройки уведомлений

/funded-code — Funded Codes

Метод Путь Описание
POST /funded-code Создать funded code
POST /funded-code/redeem Применить funded code
GET /funded-code Список своих funded codes

Middleware

Middleware Назначение
JWT Auth Проверка и парсинг access-токена для всех защищённых маршрутов
Request Logger Логирование входящих запросов (метод, путь, статус, время)
Error Handler Единая обработка ошибок: маппинг gRPC-кодов в HTTP-статусы
CORS Политика cross-origin для фронтенда
Rate Limiter Ограничение частоты запросов

Конфигурация

Параметр Описание
HTTP_PORT Порт HTTP-сервера
JWT_SECRET Секрет для верификации JWT
UNIVEX_ID_GRPC_ADDR Адрес UnivexID gRPC
LEDGER_GRPC_ADDR Адрес Ledger gRPC
P2P_GRPC_ADDR Адрес P2P gRPC
TRADES_AGGREGATOR_GRPC_ADDR Адрес Trades Aggregator gRPC
EXCHANGE_INTEGRATION_GRPC_ADDR Адрес Exchange Integration gRPC
SWAGGER_ENABLED Включить/выключить Swagger UI