Files
docs-site/public/openapi/donations.json
T
2026-08-14 00:13:56 +05:00

661 lines
19 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"openapi": "3.1.0",
"info": {
"title": "OVE Donations API",
"version": "1.0.0",
"description": "OVE donation pages, Messenger login, Crypto Gateway payments and OBS alerts."
},
"servers": [
{
"url": "https://do.ove.rs"
}
],
"paths": {
"/health": {
"get": {
"tags": [
"Сервис"
],
"summary": "Состояние Gateway",
"description": "Состояние Gateway. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_health",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
}
}
},
"/api/assets": {
"get": {
"tags": [
"Сервис"
],
"summary": "Активы для донатов",
"description": "Активы для донатов. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_api_assets",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
}
}
},
"/api/auth/start": {
"post": {
"tags": [
"Авторизация"
],
"summary": "Вход стримера через Messenger",
"description": "Вход стримера через Messenger. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "post_api_auth_start",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
},
"example": {
"email": "streamer@example.com"
}
}
}
}
}
},
"/api/auth/poll/{flow}": {
"get": {
"tags": [
"Авторизация"
],
"summary": "Статус входа стримера",
"description": "Статус входа стримера. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_api_auth_poll_flow",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"parameters": [
{
"name": "flow",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/logout": {
"post": {
"tags": [
"Авторизация"
],
"summary": "Выход из Donation Service",
"description": "Выход из Donation Service. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "post_api_logout",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
]
}
},
"/api/me": {
"get": {
"tags": [
"Стример"
],
"summary": "Панель стримера",
"description": "Панель стримера. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_api_me",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
]
}
},
"/api/profile": {
"patch": {
"tags": [
"Стример"
],
"summary": "Настройки страницы и OBS",
"description": "Настройки страницы и OBS. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "patch_api_profile",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
},
"example": {
"display_name": "My channel",
"slug": "my-channel",
"accent_color": "#b9f541",
"duration_seconds": 8,
"show_donor_name": true,
"show_message": true
}
}
}
}
}
},
"/api/sound": {
"put": {
"tags": [
"OBS"
],
"summary": "Загрузка звука",
"description": "Загрузка звука. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "put_api_sound",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
]
},
"delete": {
"tags": [
"OBS"
],
"summary": "Удаление звука",
"description": "Удаление звука. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "delete_api_sound",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
]
}
},
"/api/widget/rotate": {
"post": {
"tags": [
"OBS"
],
"summary": "Ротация секретной OBS-ссылки",
"description": "Ротация секретной OBS-ссылки. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "post_api_widget_rotate",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
]
}
},
"/api/widget/test": {
"post": {
"tags": [
"OBS"
],
"summary": "Тестовый OBS alert",
"description": "Тестовый OBS alert. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "post_api_widget_test",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
]
}
},
"/api/widget/{token}/config": {
"get": {
"tags": [
"OBS"
],
"summary": "Конфигурация OBS-виджета",
"description": "Конфигурация OBS-виджета. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_api_widget_token_config",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"parameters": [
{
"name": "token",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/widget/{token}/events": {
"get": {
"tags": [
"OBS"
],
"summary": "SSE-события OBS-виджета",
"description": "Долгоживущий SSE-поток для OBS Browser Source. Виджет сам ставит alerts в очередь.",
"operationId": "get_api_widget_token_events",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"parameters": [
{
"name": "token",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/public/creators/{slug}": {
"get": {
"tags": [
"Донаты"
],
"summary": "Публичная страница стримера",
"description": "Публичная страница стримера. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_api_public_creators_slug",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"parameters": [
{
"name": "slug",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/public/donations": {
"post": {
"tags": [
"Донаты"
],
"summary": "Создание доната",
"description": "Создает Gateway invoice с комиссией 5%. cover_fee=false удерживает комиссию из суммы; cover_fee=true точно увеличивает платеж так, чтобы стример получил введенную сумму после комиссии. Все расчеты выполняются в atomic без float.",
"operationId": "post_api_public_donations",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
},
"example": {
"slug": "my-channel",
"donor_name": "Anonymous",
"message": "Great stream!",
"asset": "USDT",
"network": "tron",
"amount": "25.5",
"cover_fee": true
}
}
}
}
}
},
"/api/public/donations/{token}/status": {
"get": {
"tags": [
"Донаты"
],
"summary": "Статус доната",
"description": "Статус доната. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_api_public_donations_token_status",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"parameters": [
{
"name": "token",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/withdrawals": {
"post": {
"tags": [
"Вывод"
],
"summary": "Запрос вывода",
"description": "Резервирует баланс и запускает новый Messenger Device Flow с описанием суммы и адреса.",
"operationId": "post_api_withdrawals",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
},
"example": {
"asset": "USDT",
"network": "tron",
"amount": "10",
"address": "TExampleRecipientAddress"
}
}
}
}
}
},
"/api/withdrawals/{flow}/poll": {
"get": {
"tags": [
"Вывод"
],
"summary": "Подтверждение вывода через Messenger",
"description": "После свайпа тем же Messenger-пользователем идемпотентно отправляет withdrawal в Gateway.",
"operationId": "get_api_withdrawals_flow_poll",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
],
"parameters": [
{
"name": "flow",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/status": {
"get": {
"tags": [
"Оператор"
],
"summary": "Статус Donation Service",
"description": "Статус Donation Service. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "get_api_admin_status",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
]
}
},
"/api/admin/creators/{creator_id}/blocked": {
"patch": {
"tags": [
"Оператор"
],
"summary": "Блокировка страницы стримера",
"description": "Блокировка страницы стримера. Возвращает JSON-ответ или стандартную JSON-ошибку.",
"operationId": "patch_api_admin_creators_creator_id_blocked",
"responses": {
"200": {
"description": "Успешный ответ"
},
"400": {
"description": "Ошибка запроса"
},
"401": {
"description": "Ошибка авторизации"
}
},
"security": [
{
"sessionCookie": []
}
],
"parameters": [
{
"name": "creator_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
},
"example": {
"blocked": true
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"sessionCookie": {
"type": "apiKey",
"in": "cookie",
"name": "ove_donations_session",
"description": "HttpOnly session; changing requests also require X-CSRF-Token."
}
},
"schemas": {
"Error": {
"type": "object",
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
]
}
}
}
}