Gateway Service
Назначение
Gateway — пользовательский HTTP-шлюз платформы Univex. Принимает все HTTP-запросы от фронтенда и мобильных приложений, проверяет JWT-токены и перенаправляет запросы к соответствующим gRPC-сервисам.
Фреймворк: Fiber v2. Документация API: Swagger (OpenAPI).
Архитектура
┌────────────────────────────────────────────────┐
│ 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 |