OpenAPI
PUBLIC API · OVE.RS

Один вход.
Все сервисы OVE.

Документация публичных HTTP API Messenger, Crypto Gateway и Donation Service: авторизация, сообщения, боты, платежи, OBS alerts, webhooks и операторские методы.

M
Messengerhttps://ms.ove.rs
REST · OAuth · WS
C
Crypto Gatewayhttps://cr.ove.rs
REST · HMAC
D
Donationshttps://do.ove.rs
REST · SSE · OBS

Первый запрос

Все ответы API — JSON, если endpoint явно не обозначен как HTML, WebSocket или файл. Для Messenger получите токен через email-код, затем передавайте его в заголовке Bearer.

Email login
curl -X POST https://ms.ove.rs/auth/email/start \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com"}'

curl -X POST https://ms.ove.rs/auth/email/verify \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com","code":"123456"}'
HTTPS в тестовом полигоне. Сертификаты выпущены локальным CA OVE. Добавьте CA в доверенные на устройстве; не отключайте проверку TLS в production-клиенте.

Три схемы авторизации

01

Messenger Bearer

Пользовательский или bot token передается как Authorization: Bearer <token>.

02

Gateway HMAC

Каждый merchant-запрос подписывается ключом, timestamp и одноразовым UUID nonce.

03

Operator Bearer

/admin/v1/* принимает отдельный секрет GATEWAY_ADMIN_TOKEN.

Каноническая строка Gateway

timestamp + "\n" +
nonce + "\n" +
HTTP_METHOD + "\n" +
path_and_query + "\n" +
hex(sha256(raw_request_body))

Результат подпишите HMAC-SHA256 и отправьте lowercase hex в X-Api-Signature. Также обязательны X-Api-Key, X-Api-Timestamp, X-Api-Nonce; для изменяющих запросов — Idempotency-Key.

Клиенты, сообщения и real-time

HTTP API покрывает аккаунты, чаты, E2E-ключи, файлы, голосовые сессии, Dastars и очередь обновлений. Native Android транспорт MST4 работает на ms.ove.rs:8080: сначала защищённый handshake, затем те же HTTP-семантики внутри зашифрованного потока.

Updateslong polling + ACK
VoiceWebSocket ticket
E2Eне зависит от username
Filesmultipart upload

Bot API

Создайте бота через проверенного botfather или POST /bots. Bot token использует ту же Bearer-схему. Обновления хранятся до подтверждения через POST /updates/ack.

Кнопки

url, callback и pay_dsr; не более 12 кнопок, текст до 64 символов.

Реакции

Бот получает callback для обычных и платных реакций. Пакет платной реакции может содержать amount > 1.

OAuth 2.0 Device Flow + OIDC

Сервис запрашивает device code у Messenger, показывает QR или user code, а пользователь подтверждает вход в Android-клиенте. Токен обменивается только после решения пользователя.

1 · device_authorization2 · QR / code3 · approve4 · token

Crypto Gateway

Создавайте invoice и withdrawal, сверяйте баланс и принимайте подписанные callbacks. Денежные величины всегда передаются строками в атомарных единицах — без float.

AssetNetworkDecimals
BTCbitcoin8
LTClitecoin8
TONton9
TRXtron6
USDTton / tron6
Hosted checkout. URL из ответа invoice открывается как /pay/{token}; JSON-статус доступен в /pay/{token}/status. Таймер оплаты синхронизирован с серверным временем.

Подпись callbacks

signature = hex(HMAC-SHA256(
  webhook_secret,
  timestamp + "." + event_id + "." + raw_body
))

Проверяйте X-Gateway-Timestamp, X-Gateway-Event-Id и X-Gateway-Signature. Доставка at-least-once повторяется до 24 часов — дедуплицируйте события по event_id.

Страница доната и OBS Browser Source

Стример входит через Messenger, получает публичный адрес do.ove.rs/u/{slug} и секретную ссылку виджета. Доноры авторизоваться не обязаны: Donation Service создаёт invoice в Crypto Gateway и показывает его hosted checkout.

1 · public donation2 · Gateway checkout3 · signed webhook4 · OBS SSE alert
Вывод средств. Каждый запрос резервирует доступный баланс и отдельно подтверждается свайпом в Messenger. В окне подтверждения показаны актив, сумма, сеть и сокращённый адрес.

Все endpoints

Ошибки и повторные запросы

400Неверные поля или состояние
401Нет или неверна авторизация
403Недостаточно прав
404Объект не найден
409Конфликт / повтор
429Превышен лимит
5xxВременная ошибка сервиса

Для безопасного повтора merchant POST используйте тот же Idempotency-Key. Не повторяйте запрос с новым ключом, пока результат предыдущего неизвестен.