{ "version": 1, "generated_from": [ "micro-chat/micromsg/src/app_routes.rs", "crypto-gateway/crates/gateway-api/src/main.rs", "crypto-gateway/crates/gateway-api/src/web.rs", "donations/src/main.rs" ], "total_endpoints": 119, "services": [ { "id": "messenger", "name": "Messenger", "base_url": "https://ms.ove.rs", "description": "OVE Messenger user, bot, OAuth, files, calls and realtime updates API.", "endpoints": [ { "method": "POST", "path": "/register", "group": "Аккаунт", "auth": "public", "auth_label": "public", "title": "Регистрация аккаунта", "description": "Регистрация аккаунта. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "email": "you@example.com", "password": "correct horse battery staple" } }, { "method": "POST", "path": "/login", "group": "Аккаунт", "auth": "public", "auth_label": "public", "title": "Вход по паролю", "description": "Вход по паролю. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "email": "you@example.com", "password": "correct horse battery staple" } }, { "method": "POST", "path": "/auth/email/start", "group": "Аккаунт", "auth": "public", "auth_label": "public", "title": "Запрос email-кода", "description": "Запрос email-кода. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "email": "you@example.com" } }, { "method": "POST", "path": "/auth/email/verify", "group": "Аккаунт", "auth": "public", "auth_label": "public", "title": "Подтверждение email-кода", "description": "Подтверждение email-кода. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "email": "you@example.com", "code": "123456" } }, { "method": "GET", "path": "/.well-known/openid-configuration", "group": "OAuth", "auth": "public", "auth_label": "public", "title": "OIDC Discovery", "description": "OIDC Discovery. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/.well-known/oauth-authorization-server", "group": "OAuth", "auth": "public", "auth_label": "public", "title": "OAuth Server Metadata", "description": "OAuth Server Metadata. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/oauth/jwks.json", "group": "OAuth", "auth": "public", "auth_label": "public", "title": "Публичные ключи OIDC", "description": "Публичные ключи OIDC. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/oauth/device_authorization", "group": "OAuth", "auth": "oauth_client", "auth_label": "OAuth client", "title": "Запуск Device Flow", "description": "Создает device_code, user_code и verification URI для универсального входа через Messenger." }, { "method": "GET", "path": "/oauth/device", "group": "OAuth", "auth": "public", "auth_label": "public", "title": "Страница подтверждения Device Flow", "description": "Страница подтверждения Device Flow. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/oauth/token", "group": "OAuth", "auth": "oauth_client", "auth_label": "OAuth client", "title": "Обмен device code на токены", "description": "Обменивает подтвержденный device_code на OIDC access/id token. Во время ожидания возвращает authorization_pending." }, { "method": "GET", "path": "/oauth/userinfo", "group": "OAuth", "auth": "bearer", "auth_label": "Bearer", "title": "Профиль OIDC", "description": "Профиль OIDC. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/oauth/device/request", "group": "OAuth", "auth": "bearer", "auth_label": "Bearer", "title": "Данные запроса входа", "description": "Данные запроса входа. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/oauth/device/decision", "group": "OAuth", "auth": "bearer", "auth_label": "Bearer", "title": "Решение пользователя", "description": "Решение пользователя. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/me", "group": "Аккаунт", "auth": "bearer", "auth_label": "Bearer", "title": "Текущий пользователь", "description": "Текущий пользователь. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/account/delete", "group": "Аккаунт", "auth": "bearer", "auth_label": "Bearer", "title": "Удаление аккаунта", "description": "Удаление аккаунта. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/username", "group": "Аккаунт", "auth": "bearer", "auth_label": "Bearer", "title": "Установка username", "description": "Установка username. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/name", "group": "Аккаунт", "auth": "bearer", "auth_label": "Bearer", "title": "Изменение отображаемого имени", "description": "Изменение отображаемого имени. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/profiles/description", "group": "Аккаунт", "auth": "bearer", "auth_label": "Bearer", "title": "Описание профиля, бота или чата", "description": "Описание профиля, бота или чата. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/privacy", "group": "Аккаунт", "auth": "bearer", "auth_label": "Bearer", "title": "Настройки приватности", "description": "Настройки приватности. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/contacts", "group": "Контакты", "auth": "bearer", "auth_label": "Bearer", "title": "Список контактов", "description": "Список контактов. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/contacts/add", "group": "Контакты", "auth": "bearer", "auth_label": "Bearer", "title": "Добавление контакта", "description": "Добавление контакта. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/contacts/delete", "group": "Контакты", "auth": "bearer", "auth_label": "Bearer", "title": "Удаление контакта", "description": "Удаление контакта. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/groups", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Создание группы", "description": "Создание группы. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/channels", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Создание канала", "description": "Создание канала. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/chats/title", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Изменение названия чата", "description": "Изменение названия чата. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/channels/username", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Username канала", "description": "Username канала. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/channels/comments/settings", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Настройки комментариев канала", "description": "Настройки комментариев канала. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/channels/comments/send", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Комментарий к публикации", "description": "Комментарий к публикации. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/channels/comments", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Комментарии к публикации", "description": "Комментарии к публикации. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/chats/members/add", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Добавление участника", "description": "Добавление участника. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/chats/members/remove", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Удаление участника", "description": "Удаление участника. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/cloud-password", "group": "Безопасность", "auth": "bearer", "auth_label": "Bearer", "title": "Облачный пароль", "description": "Облачный пароль. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/cloud-password/reset", "group": "Безопасность", "auth": "bearer", "auth_label": "Bearer", "title": "Сброс облачного пароля", "description": "Сброс облачного пароля. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/sessions", "group": "Безопасность", "auth": "bearer", "auth_label": "Bearer", "title": "Активные сессии", "description": "Активные сессии. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/sessions/revoke", "group": "Безопасность", "auth": "bearer", "auth_label": "Bearer", "title": "Завершение сессии", "description": "Завершение сессии. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/sessions/revoke-others", "group": "Безопасность", "auth": "bearer", "auth_label": "Bearer", "title": "Завершение других сессий", "description": "Завершение других сессий. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/bots", "group": "Боты", "auth": "bearer", "auth_label": "Bearer", "title": "Создание бота", "description": "Создание бота. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "username": "shop_helper_bot", "name": "Shop helper" } }, { "method": "POST", "path": "/bots/token/reset", "group": "Боты", "auth": "bearer", "auth_label": "Bearer", "title": "Перевыпуск bot token", "description": "Перевыпуск bot token. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/e2e/key", "group": "E2E", "auth": "bearer", "auth_label": "Bearer", "title": "Публикация E2E-ключа", "description": "Публикация E2E-ключа. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/e2e/key", "group": "E2E", "auth": "bearer", "auth_label": "Bearer", "title": "Публичный E2E-ключ", "description": "Публичный E2E-ключ. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/e2e/backup", "group": "E2E", "auth": "bearer", "auth_label": "Bearer", "title": "Сохранение E2E-копии", "description": "Сохранение E2E-копии. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/e2e/backup", "group": "E2E", "auth": "bearer", "auth_label": "Bearer", "title": "Резервная копия E2E", "description": "Резервная копия E2E. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/e2e/reset", "group": "E2E", "auth": "bearer", "auth_label": "Bearer", "title": "Сброс E2E-ключей", "description": "Сброс E2E-ключей. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/wallet", "group": "Dastars", "auth": "bearer", "auth_label": "Bearer", "title": "Баланс Dastars", "description": "Баланс Dastars. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/wallet/send", "group": "Dastars", "auth": "bearer", "auth_label": "Bearer", "title": "Перевод Dastars", "description": "Перевод Dastars. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/wallet/history", "group": "Dastars", "auth": "bearer", "auth_label": "Bearer", "title": "История Dastars", "description": "История Dastars. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/call", "group": "Звонки", "auth": "bearer", "auth_label": "Bearer", "title": "Создание звонка", "description": "Создание звонка. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/voice-ticket", "group": "Звонки", "auth": "bearer", "auth_label": "Bearer", "title": "Билет голосовой сессии", "description": "Билет голосовой сессии. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/voice/participants", "group": "Звонки", "auth": "bearer", "auth_label": "Bearer", "title": "Участники голосовой сессии", "description": "Участники голосовой сессии. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/voice", "group": "Звонки", "auth": "bearer", "auth_label": "Bearer", "title": "Голосовой WebSocket", "description": "Переключает соединение на WebSocket после получения voice ticket." }, { "method": "POST", "path": "/send", "group": "Сообщения", "auth": "bearer", "auth_label": "Bearer", "title": "Отправка текстового сообщения", "description": "Отправляет сообщение без медиа. Для клиентской очереди используйте стабильный client_message_id.", "body": { "to": 42, "text": "Привет!", "client_message_id": "0190f6d4-example" } }, { "method": "POST", "path": "/edit", "group": "Сообщения", "auth": "bearer", "auth_label": "Bearer", "title": "Редактирование сообщения", "description": "Редактирование сообщения. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "chat_id": 42, "message_id": 1001, "text": "Исправленный текст" } }, { "method": "POST", "path": "/callback", "group": "Боты", "auth": "bearer", "auth_label": "Bearer", "title": "Callback кнопки", "description": "Callback кнопки. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/reactions", "group": "Реакции", "auth": "bearer", "auth_label": "Bearer", "title": "Emoji-реакция", "description": "Emoji-реакция. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "chat_id": 42, "message_id": 1001, "emoji": "🔥" } }, { "method": "POST", "path": "/reactions/paid", "group": "Реакции", "auth": "bearer", "auth_label": "Bearer", "title": "Платная реакция Dastars", "description": "Переводит указанное количество Dastars автору сообщения; для бота — его владельцу. amount может быть больше 1.", "body": { "chat_id": 42, "message_id": 1001, "amount": 5 } }, { "method": "POST", "path": "/read", "group": "Сообщения", "auth": "bearer", "auth_label": "Bearer", "title": "Отметка о прочтении", "description": "Отметка о прочтении. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/delete", "group": "Сообщения", "auth": "bearer", "auth_label": "Bearer", "title": "Удаление сообщения", "description": "Удаление сообщения. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/favorite", "group": "Сообщения", "auth": "bearer", "auth_label": "Bearer", "title": "Избранное сообщение", "description": "Избранное сообщение. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/media/quote", "group": "Файлы", "auth": "bearer", "auth_label": "Bearer", "title": "Расчет стоимости медиа", "description": "Рассчитывает единую стоимость новых вложений: сумма байтов округляется вверх до MiB один раз на сообщение.", "body": { "media": [ { "client_id": "attachment-1", "name": "photo.jpg", "mime": "image/jpeg", "size": 524288 } ] } }, { "method": "POST", "path": "/messages/prepare", "group": "Файлы", "auth": "bearer", "auth_label": "Bearer", "title": "Подготовка сообщения с медиа", "description": "Атомарно резервирует оплату и выдает до 10 upload tickets. Текст и media[] опциональны по отдельности, но сообщение не может быть пустым.", "body": { "to": 42, "text": "Caption", "client_message_id": "0190f6d4-media", "media": [ { "client_id": "attachment-1", "name": "photo.jpg", "mime": "image/jpeg", "size": 524288 } ] } }, { "method": "POST", "path": "/messages/commit", "group": "Файлы", "auth": "bearer", "auth_label": "Bearer", "title": "Публикация сообщения с медиа", "description": "Проверяет все загруженные вложения, одним платежом списывает DSR и публикует или редактирует одно сообщение.", "body": { "operation_id": "message-op-1-0190f6d4-media" } }, { "method": "POST", "path": "/messages/cancel", "group": "Файлы", "auth": "bearer", "auth_label": "Bearer", "title": "Отмена сообщения с медиа", "description": "Удаляет незавершенные загрузки и отменяет резерв оплаты.", "body": { "operation_id": "message-op-1-0190f6d4-media" } }, { "method": "POST", "path": "/forward", "group": "Файлы", "auth": "bearer", "auth_label": "Bearer", "title": "Пересылка сообщения с медиа", "description": "Пересылка сообщения с медиа. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "message_id": 1001, "to": 42, "client_message_id": "0190f6d4-forward" } }, { "method": "GET", "path": "/file/ticket", "group": "Файлы", "auth": "bearer", "auth_label": "Bearer", "title": "Билет скачивания файла", "description": "Билет скачивания файла. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/nodes/status", "group": "Сервис", "auth": "bearer", "auth_label": "Bearer", "title": "Статус сервисных узлов", "description": "Статус сервисных узлов. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/chats", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Список чатов", "description": "Список чатов. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/chats/delete", "group": "Чаты", "auth": "bearer", "auth_label": "Bearer", "title": "Удаление чата", "description": "Удаление чата. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/users/ban", "group": "Модерация", "auth": "bearer", "auth_label": "Bearer", "title": "Блокировка пользователя", "description": "Блокировка пользователя. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/users/unban", "group": "Модерация", "auth": "bearer", "auth_label": "Bearer", "title": "Разблокировка пользователя", "description": "Разблокировка пользователя. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/history", "group": "Сообщения", "auth": "bearer", "auth_label": "Bearer", "title": "История сообщений", "description": "История сообщений. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/updates", "group": "Updates", "auth": "bearer", "auth_label": "Bearer", "title": "Очередь обновлений", "description": "Long polling событий клиента или бота. Bot updates долговечны и остаются до явного ACK." }, { "method": "POST", "path": "/updates/ack", "group": "Updates", "auth": "bearer", "auth_label": "Bearer", "title": "Подтверждение обновлений", "description": "Подтверждение обновлений. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "update_id": 2048 } }, { "method": "GET", "path": "/file/{id}", "group": "Файлы", "auth": "bearer", "auth_label": "Bearer", "title": "Скачивание файла", "description": "Скачивание файла. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/health/live", "group": "Сервис", "auth": "public", "auth_label": "public", "title": "Проверка процесса Messenger", "description": "Проверка процесса Messenger. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/health/ready", "group": "Сервис", "auth": "public", "auth_label": "public", "title": "Готовность Messenger", "description": "Готовность Messenger. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/metrics", "group": "Сервис", "auth": "public", "auth_label": "public", "title": "Метрики Messenger", "description": "Метрики Messenger. Возвращает JSON-ответ или стандартную JSON-ошибку." } ] }, { "id": "gateway", "name": "Crypto Gateway", "base_url": "https://cr.ove.rs", "description": "OVE multi-merchant cryptocurrency payments, checkout and operator API.", "endpoints": [ { "method": "GET", "path": "/health", "group": "Сервис", "auth": "public", "auth_label": "public", "title": "Состояние Gateway", "description": "Состояние Gateway. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/v1/assets", "group": "Сервис", "auth": "public", "auth_label": "public", "title": "Доступные активы", "description": "Возвращает только пары asset/network, для которых wallet seed готов к работе." }, { "method": "GET", "path": "/v1/invoices", "group": "Invoices", "auth": "hmac", "auth_label": "HMAC", "title": "Список invoices", "description": "Создает invoice или возвращает историю с cursor pagination, в зависимости от HTTP-метода." }, { "method": "POST", "path": "/v1/invoices", "group": "Invoices", "auth": "hmac", "auth_label": "HMAC", "title": "Создание invoice", "description": "Создает invoice или возвращает историю с cursor pagination, в зависимости от HTTP-метода.", "body": { "merchant_order_id": "order-123", "asset": "USDT", "network": "tron", "amount_atomic": "25000000", "expires_in_seconds": 1800, "description": "Order 123", "success_url": "https://merchant.example/orders/123", "metadata": { "customer": "42" } } }, { "method": "GET", "path": "/v1/invoices/{invoice_id}", "group": "Invoices", "auth": "hmac", "auth_label": "HMAC", "title": "Получение invoice", "description": "Получение invoice. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/v1/withdrawals", "group": "Withdrawals", "auth": "hmac", "auth_label": "HMAC", "title": "Список withdrawals", "description": "Создает withdrawal или возвращает историю. Для token assets разрешен только fee_mode=additional." }, { "method": "POST", "path": "/v1/withdrawals", "group": "Withdrawals", "auth": "hmac", "auth_label": "HMAC", "title": "Создание withdrawal", "description": "Создает withdrawal или возвращает историю. Для token assets разрешен только fee_mode=additional.", "body": { "asset": "USDT", "network": "tron", "amount_atomic": "10000000", "address": "T...", "fee_mode": "additional", "metadata": { "payout": "p-123" } } }, { "method": "GET", "path": "/v1/withdrawals/{withdrawal_id}", "group": "Withdrawals", "auth": "hmac", "auth_label": "HMAC", "title": "Получение withdrawal", "description": "Получение withdrawal. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/v1/balances", "group": "Баланс", "auth": "hmac", "auth_label": "HMAC", "title": "Merchant-балансы", "description": "Merchant-балансы. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/v1/api-keys", "group": "Ключи", "auth": "hmac", "auth_label": "HMAC", "title": "Список API-ключей", "description": "Список API-ключей. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/admin/v1/status", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Операторский статус", "description": "Операторский статус. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/admin/v1/callbacks", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Инциденты callbacks", "description": "Инциденты callbacks. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/admin/v1/consolidations", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Инциденты консолидации", "description": "Инциденты консолидации. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/admin/v1/callbacks/{callback_id}/retry", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Повтор callback", "description": "Повтор callback. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/admin/v1/merchants", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Создание merchant", "description": "Создание merchant. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "name": "Example shop", "callback_url": "https://merchant.example/payments", "callback_hosts": [ "merchant.example" ] } }, { "method": "POST", "path": "/admin/v1/fee-policies", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Глобальная fee policy", "description": "Глобальная fee policy. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "asset": "USDT", "network": "tron", "platform_fee_basis_points": 500, "platform_fee_cap_atomic": "10000000" } }, { "method": "POST", "path": "/admin/v1/merchants/{merchant_id}/api-keys", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Выпуск merchant API-ключа", "description": "Выпуск merchant API-ключа. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "DELETE", "path": "/admin/v1/merchants/{merchant_id}/api-keys/{api_key_id}", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Отзыв merchant API-ключа", "description": "Отзыв merchant API-ключа. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/admin/v1/merchants/{merchant_id}/policies", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Merchant policy", "description": "Merchant policy. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/admin/v1/withdrawals/{withdrawal_id}/resolve", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Решение manual review", "description": "Решение manual review. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/admin/v1/consolidations/{consolidation_id}/retry", "group": "Operator", "auth": "admin", "auth_label": "Admin Bearer", "title": "Повтор консолидации", "description": "Повтор консолидации. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/pay/{token}", "group": "Checkout", "auth": "public", "auth_label": "public", "title": "Hosted checkout", "description": "Публичная HTML-страница оплаты с QR, серверно-синхронизированным таймером и live status." }, { "method": "GET", "path": "/pay/{token}/status", "group": "Checkout", "auth": "public", "auth_label": "public", "title": "Статус hosted checkout", "description": "JSON-состояние checkout для polling; включает серверное время и срок действия." } ] }, { "id": "donations", "name": "Donations", "base_url": "https://do.ove.rs", "description": "OVE donation pages, Messenger login, Crypto Gateway payments and OBS alerts.", "endpoints": [ { "method": "GET", "path": "/health", "group": "Сервис", "auth": "public", "auth_label": "public", "title": "Состояние Gateway", "description": "Состояние Gateway. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/api/assets", "group": "Сервис", "auth": "public", "auth_label": "public", "title": "Активы для донатов", "description": "Активы для донатов. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/api/auth/start", "group": "Авторизация", "auth": "public", "auth_label": "public", "title": "Вход стримера через Messenger", "description": "Вход стримера через Messenger. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "email": "streamer@example.com" } }, { "method": "GET", "path": "/api/auth/poll/{flow}", "group": "Авторизация", "auth": "public", "auth_label": "public", "title": "Статус входа стримера", "description": "Статус входа стримера. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/api/logout", "group": "Авторизация", "auth": "session", "auth_label": "Secure session", "title": "Выход из Donation Service", "description": "Выход из Donation Service. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/api/me", "group": "Стример", "auth": "session", "auth_label": "Secure session", "title": "Панель стримера", "description": "Панель стримера. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "PATCH", "path": "/api/profile", "group": "Стример", "auth": "session", "auth_label": "Secure session", "title": "Настройки страницы и OBS", "description": "Настройки страницы и OBS. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "display_name": "My channel", "slug": "my-channel", "accent_color": "#b9f541", "duration_seconds": 8, "show_donor_name": true, "show_message": true } }, { "method": "PUT", "path": "/api/sound", "group": "OBS", "auth": "session", "auth_label": "Secure session", "title": "Загрузка звука", "description": "Загрузка звука. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "DELETE", "path": "/api/sound", "group": "OBS", "auth": "session", "auth_label": "Secure session", "title": "Удаление звука", "description": "Удаление звука. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/api/widget/rotate", "group": "OBS", "auth": "session", "auth_label": "Secure session", "title": "Ротация секретной OBS-ссылки", "description": "Ротация секретной OBS-ссылки. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/api/widget/test", "group": "OBS", "auth": "session", "auth_label": "Secure session", "title": "Тестовый OBS alert", "description": "Тестовый OBS alert. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/api/widget/{token}/config", "group": "OBS", "auth": "widget", "auth_label": "Widget token", "title": "Конфигурация OBS-виджета", "description": "Конфигурация OBS-виджета. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "GET", "path": "/api/widget/{token}/events", "group": "OBS", "auth": "widget", "auth_label": "Widget token", "title": "SSE-события OBS-виджета", "description": "Долгоживущий SSE-поток для OBS Browser Source. Виджет сам ставит alerts в очередь." }, { "method": "GET", "path": "/api/public/creators/{slug}", "group": "Донаты", "auth": "public", "auth_label": "public", "title": "Публичная страница стримера", "description": "Публичная страница стримера. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/api/public/donations", "group": "Донаты", "auth": "public", "auth_label": "public", "title": "Создание доната", "description": "Создает Gateway invoice с комиссией 5%. cover_fee=false удерживает комиссию из суммы; cover_fee=true точно увеличивает платеж так, чтобы стример получил введенную сумму после комиссии. Все расчеты выполняются в atomic без float.", "body": { "slug": "my-channel", "donor_name": "Anonymous", "message": "Great stream!", "asset": "USDT", "network": "tron", "amount": "25.5", "cover_fee": true } }, { "method": "GET", "path": "/api/public/donations/{token}/status", "group": "Донаты", "auth": "public", "auth_label": "public", "title": "Статус доната", "description": "Статус доната. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "POST", "path": "/api/withdrawals", "group": "Вывод", "auth": "session", "auth_label": "Secure session", "title": "Запрос вывода", "description": "Резервирует баланс и запускает новый Messenger Device Flow с описанием суммы и адреса.", "body": { "asset": "USDT", "network": "tron", "amount": "10", "address": "TExampleRecipientAddress" } }, { "method": "GET", "path": "/api/withdrawals/{flow}/poll", "group": "Вывод", "auth": "session", "auth_label": "Secure session", "title": "Подтверждение вывода через Messenger", "description": "После свайпа тем же Messenger-пользователем идемпотентно отправляет withdrawal в Gateway." }, { "method": "GET", "path": "/api/admin/status", "group": "Оператор", "auth": "session", "auth_label": "Secure session", "title": "Статус Donation Service", "description": "Статус Donation Service. Возвращает JSON-ответ или стандартную JSON-ошибку." }, { "method": "PATCH", "path": "/api/admin/creators/{creator_id}/blocked", "group": "Оператор", "auth": "session", "auth_label": "Secure session", "title": "Блокировка страницы стримера", "description": "Блокировка страницы стримера. Возвращает JSON-ответ или стандартную JSON-ошибку.", "body": { "blocked": true } } ] } ] }