{"openapi":"3.1.0","info":{"title":"Документация для ObjectiVEO 3","description":"Сервис для автоматической генерации коротких видео по текстовым описаниям и фотографиям с использованием нейросетей. Предоставляет HTTP API и интеграцию с Telegram-ботом: создание и управление задачами генерации, формирование промптов, отслеживание статуса и уведомления пользователям. Включает публичные и защищённые маршруты. Для защищённых эндпойнтов требуется авторизация; поддерживаются асинхронные задачи и механизмы rate-limiting.","version":"1.0:08.25.31:beta"},"paths":{"/post-message":{"post":{"summary":"Рассылка и личное сообщение","operationId":"post_message_post_message_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMessage"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/register":{"post":{"tags":["Авторизация"],"summary":"Регистрация пользователя","description":"Регистрация пользователя по chat_id.\n\nCтатус запроса:\n- 200 OK - успешная регистрация\n- 400 Bad Request - пользователь с таким chat_id уже зарегистрирован\n- 422 Unprocessable Entity - ошибка валидации входных данных\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `username: str` | None - имя пользователя в Telegram\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram","operationId":"register_user_users_register_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRegister"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/all":{"get":{"tags":["Авторизация"],"summary":"Получение всех пользователей","description":"Получение всех пользователей.\n\nCтатус запроса:\n- 200 OK - успешное получение всех пользователей\n- 404 Not Found - ошибка при получении всех пользователей\n- 500 Internal Server Error - ошибка при получении всех пользователей\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)","operationId":"get_all_users_users_all_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserSchema"},"title":"Response Get All Users Users All Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{chat_id}":{"get":{"tags":["Авторизация"],"summary":"Получение информации о пользователе","description":"Получение информации о пользователе по chat_id.\n\nCтатус запроса:\n- 200 OK - успешное получение информации\n- 404 Not Found - пользователь с таким chat_id не найден\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n\nВыходные данные:\n- `id: int` - внутренний идентификатор пользователя в базе данных\n- `nickname: str` | None - имя пользователя в Telegram\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n- `coins: int` - количество монет у пользователя","operationId":"get_user_users__chat_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users":{"delete":{"tags":["Авторизация"],"summary":"Удаление пользователя","description":"Удаление пользователя по chat_id.\nCтатус запроса:\n- 204 No Content - успешное удаление пользователя\n- 404 Not Found - пользователь с таким chat_id не найден\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram","operationId":"delete_user_users_delete","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDelete"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{chat_id}/coins":{"get":{"tags":["Авторизация"],"summary":"Получение количества монет пользователя","description":"Получение количества монет пользователя по chat_id.\n\nCтатус запроса:\n- 200 OK - успешное получение количества монет\n- 404 Not Found - пользователь с таким chat_id не найден\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n\nВыходные данные:\n- `ok: bool` - статус успешности запроса\n- `coins: int` - количество монет у пользователя","operationId":"get_coins_users__chat_id__coins_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/coins/minus":{"post":{"tags":["Авторизация"],"summary":"Списание одной монеты у пользователя","description":"Списание одной монеты у пользователя по chat_id.\n\nСтатус запроса:\n- 200 OK - успешное списание монеты\n- 404 Not Found - пользователь с таким chat_id не найден\n- 400 Bad Request - недостаточно монет для списания\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n\nВыходные данные:\n- `ok: bool` - статус успешности запроса\n- `coins: int` - текущее количество монет у пользователя после списания","operationId":"minus_coin_users_coins_minus_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinMinus"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/coins/plus":{"post":{"tags":["Авторизация"],"summary":"Начисление монет пользователю","description":"Начисление монет пользователю по chat_id.\n\nСтатус запроса:\n- 200 OK - успешное начисление монет\n- 404 Not Found - пользователь с таким chat_id не найден\n- 400 Bad Request - ошибка бизнес-логики (например, превышение максимального количества монет)\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n- `count: int` - количество монет для начисления (должно быть положительным числом)\n\nВыходные данные:\n- `ok: bool` - статус успешности запроса\n- `coins: int` - текущее количество монет у пользователя после начисления","operationId":"plus_coins_users_coins_plus_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinPlus"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{chat_id}/role":{"patch":{"tags":["Авторизация"],"summary":"Обновление роли пользователя","description":"Обновление роли пользователя по chat_id.\n\nСтатус запроса:\n- 200 OK - успешное обновление роли\n- 404 Not Found - пользователь с таким chat_id не найден\n- 400 Bad Request - ошибка бизнес-логики (например, недопустимая роль)\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n- `new_role: str` - новая роль для пользователя (например, \"user\" или \"partner\")\n\nВыходные данные:\n- `ok: bool` - статус успешности запроса\n- `role: str` - текущая роль пользователя после обновления","operationId":"update_user_role_users__chat_id__role_patch","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"new_role","in":"query","required":true,"schema":{"enum":["user","partner"],"type":"string","title":"New Role"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{chat_id}/ref_code":{"get":{"tags":["Авторизация"],"summary":"Получение реферального кода пользователя","description":"Получение реферального кода пользователя по chat_id.\n\nCтатус запроса:\n- 200 OK - успешное получение реферального кода\n- 404 Not Found - пользователь с таким chat_id не найден\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n\nВыходные данные:\n- `ok: bool` - статус успешности запроса\n- `ref_code: str` | None - реферальный код пользователя, если он есть","operationId":"get_ref_code_users__chat_id__ref_code_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{chat_id}/verify":{"post":{"tags":["Авторизация"],"summary":"Верификация пользователя","description":"Верификация пользователя по chat_id.\n\nCтатус запроса:\n- 200 OK - успешная верификация\n- 404 Not Found - пользователь с таким chat_id не найден\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n\nВыходные данные:\n- `ok: bool` - статус успешности запроса","operationId":"verify_user_users__chat_id__verify_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/prompt/suggest":{"post":{"tags":["Работа с промптами"],"summary":"Сгенерировать промпт на основе краткого описания","description":"Генерация промпта на основе краткого описания.\n\nCтатус запроса:\n- 200 OK - успешная генерация промпта\n- 500 Internal Server Error - ошибка сервера\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n- `brief: str` - краткое описание желаемого изображения\n- `clarifications: str | None` - уточнения к описанию\n- `attempt: int` - номер попытки (начинается с 1)\n- `previous_prompt: str | None` - предыдущий сгенерированный промпт\n- `image_url: str | None` - URL изображения для контекстуальной генерации\n\nВыходные данные:\n- `prompt: List[str]` - список сгенерированных промптов (на русском и английском языках)","operationId":"suggest_prompt_prompt_suggest_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/prompt/change_system_prompt":{"patch":{"tags":["Работа с промптами"],"summary":"Изменить системный промпт для генерации","description":"Изменение системного промпта для генерации.\n\nСтатус запроса:\n- 200 OK - успешное изменение промпта\n- 500 Internal Server Error - ошибка сервера\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `system_prompt: str` - новый системный промпт для генерации\n\nВыходные данные:\n- `message: str` - сообщение об успешном изменении промпта","operationId":"change_system_prompt_prompt_change_system_prompt_patch","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeSystemPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Change System Prompt Prompt Change System Prompt Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/":{"post":{"tags":["Задачи и RATE"],"summary":"Создать новую задачу","description":"Создание новой задачи.\n\nCтатус запроса:\n- 201 Created - задача успешно создана\n- 500 Internal Server Error - ошибка сервера\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `task_id: str` - уникальный идентификатор задачи\n- `chat_id: str` - уникальный идентификатор пользователя в Telegram\n- `raw: str` - сырые данные задачи (в формате JSON)\n- `created_at: str` - дата и время создания задачи (формат \"YYYY-MM-DD HH:MM:SS\")\n- `is_video: bool` - флаг, указывающий, является ли задача видео\n- `rating: int` - рейтинг задачи (по умолчанию 0)","operationId":"create_task_tasks__post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Task Tasks  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Задачи и RATE"],"summary":"Получить список всех задач","description":"Получить все задачи.\n\nCтатус запроса:\n- 200 OK - список задач успешно получен\n- 500 Internal Server Error - ошибка сервера\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВозвращаемые данные:\n- Список объектов задачи (TaskRead)","operationId":"get_all_tasks_tasks__get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TaskRead"},"title":"Response Get All Tasks Tasks  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}":{"get":{"tags":["Задачи и RATE"],"summary":"Просмотр задачи","description":"Получить задачу по task_id.\n\nCтатус запроса:\n- 200 OK - задача найдена и возвращена\n- 404 Not Found - задача не найдена\n- 500 Internal Server Error - ошибка сервера\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nПараметры пути:\n- `task_id: str` - уникальный идентификатор задачи","operationId":"get_task_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/rating":{"patch":{"tags":["Задачи и RATE"],"summary":"Установить рейтинг задачи","description":"Установить (обновить) рейтинг задачи.\n\nCтатус запроса:\n- 204 No Content - рейтинг успешно установлен\n- 400 Bad Request - некорректный рейтинг\n- 404 Not Found - задача с указанным task_id не найдена\n- 500 Internal Server Error - ошибка сервера\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nПараметры:\n- `task_id: str` - уникальный идентификатор задачи (путь)\n- `rating: int` - целочисленное значение рейтинга","operationId":"set_task_rating_tasks__task_id__rating_patch","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"rating","in":"query","required":true,"schema":{"type":"integer","title":"Rating"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/get-chat/{task_id}/":{"get":{"tags":["Задачи и RATE"],"summary":"Get Chatid By Taskid","operationId":"get_chatID_by_taskID_tasks_get_chat__task_id___get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pay/sbp/create":{"post":{"tags":["Платежи","Система быстрых платежей"],"summary":"Create Sbp Payment","operationId":"create_sbp_payment_pay_sbp_create_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePayment"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pay/":{"get":{"tags":["Платежи","Платежи"],"summary":"Список платежей","description":"Получение списка платежей","operationId":"list_payments_pay__get","parameters":[{"name":"chat_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Фильтр по chat_id","title":"Chat Id"},"description":"Фильтр по chat_id"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Количество записей","default":100,"title":"Limit"},"description":"Количество записей"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Смещение","default":0,"title":"Offset"},"description":"Смещение"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Платежи","Платежи"],"summary":"Создание платежа","description":"Создание нового платежа (внутренний эндпоинт)","operationId":"create_payment_pay__post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pay/{payment_id}":{"get":{"tags":["Платежи","Платежи"],"summary":"Получение платежа","description":"Получение платежа по ID","operationId":"get_payment_pay__payment_id__get","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","title":"Payment Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pay/user/{chat_id}":{"get":{"tags":["Платежи","Платежи"],"summary":"Платежи пользователя","description":"Получение списка платежей конкретного пользователя","operationId":"get_user_payments_pay_user__chat_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Количество записей","default":100,"title":"Limit"},"description":"Количество записей"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Смещение","default":0,"title":"Offset"},"description":"Смещение"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/create":{"post":{"tags":["Партнерская программа"],"summary":"Создание партнерской ссылки","description":"Создание партнерской ссылки для пользователя.\n\nCтатус запроса:\n- 200 OK - успешное создание\n- 400 Bad Request - ошибка бизнес-логики (например, пользователь не найден)\n- 422 Unprocessable Entity - ошибка валидации входных данных\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)","operationId":"create_partner_link_partner_create_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/all":{"get":{"tags":["Партнерская программа"],"summary":"Получение всех партнерских ссылок","description":"Получение всех партнерских ссылок.\n\nCтатус запроса:\n- 200 OK - успешное получение\n- 422 Unprocessable Entity - ошибка валидации входных данных\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)","operationId":"get_all_partner_links_partner_all_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/characters/":{"get":{"tags":["Персонажи"],"summary":"Список персонажей","description":"Получение списка всех персонажей","operationId":"list_characters_admin_characters__get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Персонажи"],"summary":"Создание персонажа","description":"Создание нового персонажа","operationId":"create_character_admin_characters__post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/characters/{character_id}":{"get":{"tags":["Персонажи"],"summary":"Получение персонажа","description":"Получение персонажа по ID","operationId":"get_character_admin_characters__character_id__get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Персонажи"],"summary":"Обновление персонажа","description":"Обновление персонажа","operationId":"update_character_admin_characters__character_id__patch","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Персонажи"],"summary":"Удаление персонажа","description":"Удаление персонажа","operationId":"delete_character_admin_characters__character_id__delete","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/characters/{character_id}/frame":{"post":{"tags":["Персонажи"],"summary":"Загрузка кадра персонажа","description":"Загрузка кадра персонажа в S3 и сохранение URL в БД","operationId":"upload_character_frame_admin_characters__character_id__frame_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_character_frame_admin_characters__character_id__frame_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/upload/image":{"post":{"tags":["Загрузка файлов"],"summary":"Загрузка изображения","description":"Загрузка изображения на S3.\n\nСтатус запроса:\n- 200 OK - успешная загрузка\n- 400 Bad Request - неверный формат файла\n- 500 Internal Server Error - ошибка загрузки\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `file: UploadFile` - файл изображения (multipart/form-data)\n\nВыходные данные:\n- `ok: bool` - статус успешности\n- `url: str` - URL загруженного изображения\n- `filename: str` - имя файла","operationId":"upload_image_upload_image_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_image_upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webapp/prompt/suggest":{"post":{"tags":["Веб-приложение","Веб-приложение"],"summary":"Сгенерировать промпт для видео (WebApp)","description":"Генерирует промпт для видео (text2video / img2video) с использованием PromptAI.\nЛогика повторяет /prompt/suggest, но предназначена для веб-приложения.","operationId":"suggest_prompt_for_webapp_webapp_prompt_suggest_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebappPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebappPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webapp/models":{"get":{"tags":["Веб-приложение","Веб-приложение"],"summary":"Доступные модели генерации видео","description":"Возвращает список моделей генерации видео.\n- type=text2video: модели для генерации по тексту\n- type=img2video: модели для генерации по фото","operationId":"get_video_models_webapp_models_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"enum":["text2video","img2video"],"type":"string","default":"text2video","title":"Type"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VideoModelOut"},"title":"Response Get Video Models Webapp Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webapp/generations/{chat_id}":{"get":{"tags":["Веб-приложение","Веб-приложение"],"summary":"Получение генераций пользователя","description":"Получение списка генераций (видео и фото) пользователя по chat_id.\n\nИспользуется веб-приложением для отображения истории генераций пользователя.\n\nCтатус запроса:\n- 200 OK - успешное получение списка генераций\n- 400 Bad Request - ошибка валидации\n- 500 Internal Server Error - внутренняя ошибка сервера\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя\n- `limit: int | None` - максимальное количество записей (по умолчанию 20)\n\nВыходные данные:\n- `ok: bool` - статус успешности\n- `videos: list[VideoGenerationOut]` - список генераций видео\n- `photos: list[PhotoGenerationOut]` - список генераций фото","operationId":"get_generations_webapp_generations__chat_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":20,"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webapp/generate/text":{"post":{"tags":["Веб-приложение","Веб-приложение"],"summary":"Генерация видео по текстовому описанию","description":"Генерация видео по текстовому описанию с помощью KIE (Veo 3).\n\nИспользуется веб-приложением для создания видео по текстовому промпту.\n\nCтатус запроса:\n- 200 OK - успешная генерация задачи\n- 400 Bad Request - ошибка валидации входных данных или бизнес-логики\n- 502 Bad Gateway - ошибка связи с KIE (Veo 3)\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя\n- `prompt: str` - текстовое описание для генерации видео\n- `aspect_ratio: str` - соотношение сторон видео (\"16:9\", \"9:16\")\n- `model: str` - модель генерации (\"sora-2-txt2vid\", \"sora-2-pro-txt2vid\", \"veo-3-fast\")","operationId":"generate_text_webapp_generate_text_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTextIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webapp/generate/photo":{"post":{"tags":["Веб-приложение","Веб-приложение"],"summary":"Генерация видео по изображению и текстовому описанию","description":"Генерация видео по изображению и текстовому описанию с помощью KIE (Veo 3).\n\nИспользуется веб-приложением для создания видео на основе изображения.\n\nCтатус запроса:\n- 200 OK - успешная генерация задачи\n- 400 Bad Request - ошибка валидации входных данных или бизнес-логики\n- 502 Bad Gateway - ошибка связи с KIE (Veo 3)\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя\n- `prompt: str` - текстовое описание для генерации видео\n- `image_url: str | None` - URL изображения для генерации видео\n- `aspect_ratio: str` - соотношение сторон видео (\"16:9\", \"9:16\")\n- `model: str` - модель генерации (\"sora-2-img2vid\", \"sora-2-pro-img2vid\", \"veo-3-fast\")","operationId":"generate_photo_webapp_generate_photo_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePhotoIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webapp/generate/image":{"post":{"tags":["Веб-приложение","Веб-приложение"],"summary":"Генерация изображения по текстовому описанию","description":"Генерация изображения по текстовому описанию с помощью KIE (nano-banana-pro).\n\nИспользуется веб-приложением для создания изображений по текстовому промпту.\n\nCтатус запроса:\n- 200 OK - успешная генерация задачи\n- 400 Bad Request - ошибка валидации входных данных или бизнес-логики\n- 502 Bad Gateway - ошибка связи с KIE\n\n> [!important]\n> Заголовки запроса:\n> - `X-API-KEY: str` - API ключ для аутентификации (обязательный)\n\nВходные данные:\n- `chat_id: str` - уникальный идентификатор пользователя\n- `prompt: str` - текстовое описание для генерации изображения\n- `aspect_ratio: str` - соотношение сторон (\"1:1\", \"2:3\", \"3:2\", \"3:4\", \"4:3\", \"4:5\", \"5:4\", \"9:16\", \"16:9\", \"21:9\", \"auto\")\n- `resolution: str` - разрешение изображения (\"1K\", \"2K\", \"4K\")\n- `output_format: str` - формат выходного файла (\"png\", \"jpg\")","operationId":"generate_image_webapp_generate_image_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_upload_character_frame_admin_characters__character_id__frame_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_character_frame_admin_characters__character_id__frame_post"},"Body_upload_image_upload_image_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_image_upload_image_post"},"BotMessage":{"properties":{"text":{"type":"string","title":"Text"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"img_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Img Url"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url"}},"type":"object","required":["text"],"title":"BotMessage"},"ChangeSystemPromptRequest":{"properties":{"system_prompt":{"type":"string","title":"System Prompt"}},"type":"object","required":["system_prompt"],"title":"ChangeSystemPromptRequest"},"CharacterCreate":{"properties":{"name":{"type":"string","title":"Name","description":"Имя персонажа"},"prompts":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Prompts","description":"Список промптов для генерации"}},"type":"object","required":["name","prompts"],"title":"CharacterCreate"},"CharacterListResponse":{"properties":{"characters":{"items":{"$ref":"#/components/schemas/CharacterResponse"},"type":"array","title":"Characters"}},"type":"object","required":["characters"],"title":"CharacterListResponse"},"CharacterResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"prompts":{"items":{"type":"string"},"type":"array","title":"Prompts"},"steps_gen":{"type":"integer","title":"Steps Gen"},"frame_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frame Url"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","name","prompts","steps_gen","created_at","updated_at"],"title":"CharacterResponse"},"CharacterUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Имя персонажа"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array","minItems":1},{"type":"null"}],"title":"Prompts","description":"Список промптов для генерации"},"frame_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frame Url","description":"URL кадра персонажа"}},"type":"object","title":"CharacterUpdate"},"CoinMinus":{"properties":{"chat_id":{"type":"string","title":"Chat Id"}},"type":"object","required":["chat_id"],"title":"CoinMinus"},"CoinPlus":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["chat_id","count"],"title":"CoinPlus"},"CreatePayment":{"properties":{"amount":{"type":"string","title":"Amount"},"desc":{"type":"string","title":"Desc"}},"type":"object","required":["amount","desc"],"title":"CreatePayment"},"GenerateImageIn":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"prompt":{"type":"string","title":"Prompt"},"aspect_ratio":{"type":"string","enum":["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","auto"],"title":"Aspect Ratio"},"resolution":{"type":"string","enum":["1K","2K","4K"],"title":"Resolution"},"output_format":{"type":"string","enum":["png","jpg"],"title":"Output Format"}},"type":"object","required":["chat_id","prompt","aspect_ratio","resolution","output_format"],"title":"GenerateImageIn"},"GenerateOut":{"properties":{"ok":{"type":"boolean","title":"Ok"},"task_id":{"type":"string","title":"Task Id"},"input_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Image Url"},"raw":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw"}},"type":"object","required":["ok","task_id"],"title":"GenerateOut"},"GeneratePhotoIn":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"prompt":{"type":"string","title":"Prompt"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"aspect_ratio":{"type":"string","title":"Aspect Ratio"},"model":{"type":"string","enum":["sora-2-img2vid","sora-2-pro-img2vid","veo-3-fast"],"title":"Model"}},"type":"object","required":["chat_id","prompt","aspect_ratio","model"],"title":"GeneratePhotoIn"},"GenerateTextIn":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"prompt":{"type":"string","title":"Prompt"},"aspect_ratio":{"type":"string","title":"Aspect Ratio"},"model":{"type":"string","enum":["sora-2-txt2vid","sora-2-pro-txt2vid","veo-3-fast"],"title":"Model"}},"type":"object","required":["chat_id","prompt","aspect_ratio","model"],"title":"GenerateTextIn"},"GenerationsListOut":{"properties":{"ok":{"type":"boolean","title":"Ok"},"videos":{"items":{"$ref":"#/components/schemas/VideoGenerationOut"},"type":"array","title":"Videos"},"photos":{"items":{"$ref":"#/components/schemas/PhotoGenerationOut"},"type":"array","title":"Photos"}},"type":"object","required":["ok","videos","photos"],"title":"GenerationsListOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PartnerCreate":{"properties":{"user_chat_id":{"type":"string","title":"User Chat Id"},"percentage":{"type":"integer","title":"Percentage"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","default":true}},"type":"object","required":["user_chat_id","percentage"],"title":"PartnerCreate"},"PaymentCreate":{"properties":{"payment_id":{"type":"string","title":"Payment Id","description":"ID платежа из Telegram"},"chat_id":{"type":"string","title":"Chat Id","description":"ID чата пользователя"},"payload":{"type":"string","title":"Payload","description":"Payload инвойса"},"amount":{"type":"integer","title":"Amount","description":"Сумма в минимальных единицах"},"currency":{"type":"string","title":"Currency","description":"Валюта (RUB, XTR)"},"coins":{"type":"integer","title":"Coins","description":"Количество начисленных монет"}},"type":"object","required":["payment_id","chat_id","payload","amount","currency","coins"],"title":"PaymentCreate"},"PaymentListResponse":{"properties":{"payments":{"items":{"$ref":"#/components/schemas/PaymentResponse"},"type":"array","title":"Payments"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["payments","total"],"title":"PaymentListResponse"},"PaymentResponse":{"properties":{"id":{"type":"string","title":"Id"},"payment_id":{"type":"string","title":"Payment Id"},"chat_id":{"type":"string","title":"Chat Id"},"payload":{"type":"string","title":"Payload"},"amount":{"type":"integer","title":"Amount"},"currency":{"type":"string","title":"Currency"},"coins":{"type":"integer","title":"Coins"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","payment_id","chat_id","payload","amount","currency","coins","created_at"],"title":"PaymentResponse"},"PhotoGenerationOut":{"properties":{"id":{"type":"string","title":"Id"},"owner":{"type":"string","title":"Owner"},"task_id":{"type":"string","title":"Task Id"},"model":{"type":"string","title":"Model"},"uploaded_img":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uploaded Img"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url"},"prompt":{"type":"string","title":"Prompt"},"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility"},"status":{"type":"string","title":"Status"},"error_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Reason"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","owner","task_id","model","prompt","status","created_at","updated_at"],"title":"PhotoGenerationOut"},"PromptRequest":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"brief":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brief"},"clarifications":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Clarifications"},"attempt":{"type":"integer","title":"Attempt","default":1},"previous_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Prompt"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"}},"type":"object","required":["chat_id"],"title":"PromptRequest"},"PromptResponse":{"properties":{"prompt":{"items":{"type":"string"},"type":"array","title":"Prompt"}},"type":"object","required":["prompt"],"title":"PromptResponse"},"TaskCreate":{"properties":{"task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Id"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw"},"is_video":{"type":"boolean","title":"Is Video","default":false},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["task_id","chat_id","raw"],"title":"TaskCreate"},"TaskRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"type":"string","title":"Task Id"},"chat_id":{"type":"string","title":"Chat Id"},"raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw"},"is_video":{"type":"boolean","title":"Is Video"},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","task_id","chat_id","is_video","created_at"],"title":"TaskRead"},"UploadResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"url":{"type":"string","title":"Url"},"filename":{"type":"string","title":"Filename"}},"type":"object","required":["url","filename"],"title":"UploadResponse"},"UserDelete":{"properties":{"chat_id":{"type":"string","title":"Chat Id"}},"type":"object","required":["chat_id"],"title":"UserDelete"},"UserRegister":{"properties":{"nickname":{"type":"string","title":"Nickname"},"chat_id":{"type":"string","title":"Chat Id"},"role":{"type":"string","enum":["user","partner"],"title":"Role"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"}},"type":"object","required":["nickname","chat_id","role"],"title":"UserRegister"},"UserSchema":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"nickname":{"type":"string","title":"Nickname"},"chat_id":{"type":"string","title":"Chat Id"},"coins":{"type":"integer","title":"Coins"},"role":{"type":"string","enum":["user","partner"],"title":"Role"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"},"referred_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referred By"},"first_time":{"type":"boolean","title":"First Time"},"balance":{"type":"number","title":"Balance"},"verified":{"type":"boolean","title":"Verified"}},"type":"object","required":["id","nickname","chat_id","coins","role","first_time","balance","verified"],"title":"UserSchema"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoGenerationOut":{"properties":{"id":{"type":"string","title":"Id"},"owner":{"type":"string","title":"Owner"},"model":{"type":"string","title":"Model"},"task_id":{"type":"string","title":"Task Id"},"gen_type":{"type":"string","title":"Gen Type"},"image":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Image"},"placeholder_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Placeholder Url"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url"},"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility"},"status":{"type":"string","title":"Status"},"error_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Reason"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","owner","model","task_id","gen_type","status","created_at","updated_at"],"title":"VideoGenerationOut"},"VideoModelOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"internal_model":{"type":"string","title":"Internal Model"},"type":{"type":"string","enum":["text2video","img2video"],"title":"Type"},"icon":{"type":"string","title":"Icon"}},"type":"object","required":["id","name","description","internal_model","type","icon"],"title":"VideoModelOut"},"WebappPromptRequest":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"brief":{"type":"string","title":"Brief"},"clarifications":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Clarifications"},"attempt":{"type":"integer","title":"Attempt","default":1},"previous_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Prompt"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"}},"type":"object","required":["chat_id","brief"],"title":"WebappPromptRequest"},"WebappPromptResponse":{"properties":{"prompt_ru":{"type":"string","title":"Prompt Ru"},"prompt_en":{"type":"string","title":"Prompt En"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"}},"type":"object","required":["prompt_ru","prompt_en"],"title":"WebappPromptResponse"}}}}