StickerAI-Front/API_DOCUMENTATION.md

566 lines
13 KiB
Markdown
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.

# API Документация
## Обзор
API предоставляет функциональность для работы со стикерами в Telegram, включая генерацию изображений, создание стикерпаков и управление ими. Также API поддерживает отслеживание позиций задач в очереди.
Базовый URL: `https://stickerserver.gymnasticstuff.uk`
## Эндпоинты
### Проверка работоспособности
#### GET /health
Проверяет работоспособность API.
**Ответ (200 OK):**
```
"string"
```
### Управление пользователями
#### POST /register
Регистрирует нового пользователя в системе.
**Тело запроса:**
```json
{
"user_id": 123456789,
"username": "example_user",
"chat_id": 123456789,
"balance": 0
}
```
**Параметры:**
- `user_id` (integer, обязательный): Уникальный ID пользователя (например, из Telegram)
- `username` (string, обязательный): Имя пользователя
- `chat_id` (integer, обязательный): ID чата
- `balance` (integer, опциональный, по умолчанию 0): Начальный баланс пользователя
**Ответ (201 Created):**
```json
{
"user_id": 123456789,
"username": "example_user",
"chat_id": 123456789,
"balance": 0
}
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### GET /users/{user_id}
Получает информацию о пользователе по его ID.
**Параметры пути:**
- `user_id` (integer, обязательный): ID пользователя
**Ответ (200 OK):**
```json
{
"user_id": 123456789,
"username": "example_user",
"chat_id": 123456789,
"balance": 0
}
```
**Ошибки:**
- 404 Not Found: Пользователь не найден
- 422 Validation Error: Ошибка валидации данных
### Генерация изображений и управление очередью
#### POST /generate_image
Создает задачу на генерацию изображения с использованием ComfyUI.
**Тело запроса:**
```json
{
"tag": "image_generation",
"user_id": 123456789,
"workflow": {
// Объект workflow для ComfyUI
}
}
```
**Параметры:**
- `tag` (string, обязательный): Тег для типа задачи (допустимое значение: "image_generation")
- `user_id` (integer, обязательный): ID пользователя
- `workflow` (object, обязательный): Объект workflow для ComfyUI
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### GET /user_pending_tasks/{user_id}
Получает список задач пользователя в статусе PENDING с их позициями в очереди.
**Параметры пути:**
- `user_id` (integer, обязательный): ID пользователя
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### GET /task_position/{task_id}
Получает текущую позицию задачи в очереди.
**Параметры пути:**
- `task_id` (integer, обязательный): ID задачи
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### GET /images_links/{user_id}
Получает список ссылок на изображения пользователя.
**Параметры пути:**
- `user_id` (integer, обязательный): ID пользователя
**Ответ (200 OK):**
```json
[
{
"id": 1,
"link": "file_id_from_telegram",
"prompt_id": "prompt_id_from_comfyui",
"status": "COMPLETED",
"created_at": "2025-03-12T12:00:00",
"sticker_set_id": null
}
]
```
**Ошибки:**
- 404 Not Found: Пользователь не найден
- 422 Validation Error: Ошибка валидации данных
### Управление стикерами
#### POST /upload_sticker
Загружает файл стикера на сервер Telegram.
**Тело запроса:**
```json
{
"user_id": 123456789,
"link": "https://example.com/image.png"
}
```
**Параметры:**
- `user_id` (integer, обязательный): ID пользователя
- `link` (string, обязательный): URL или путь к файлу стикера
**Ответ (200 OK):**
```json
{}
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### POST /create_sticker_set
Создает новый набор стикеров.
**Тело запроса:**
```json
{
"user_id": 123456789,
"sticker_set_name": "example_set",
"title": "Example Sticker Set",
"file_id": "file_id_from_telegram",
"emojis": "😀",
"is_animated": false,
"is_video": false
}
```
**Параметры:**
- `user_id` (integer, обязательный): ID пользователя
- `sticker_set_name` (string, обязательный): Название набора стикеров (без суффикса _by_bot)
- `title` (string, обязательный): Заголовок набора стикеров
- `file_id` (string, обязательный): File_id загруженного стикера
- `emojis` (string, обязательный): Список эмодзи для стикера
- `is_animated` (boolean, опциональный, по умолчанию false): Флаг анимированного стикера
- `is_video` (boolean, опциональный, по умолчанию false): Флаг видео-стикера
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### POST /add_sticker_to_set
Добавляет стикер в существующий набор.
**Тело запроса:**
```json
{
"user_id": 123456789,
"sticker_set_name": "example_set",
"title": "Example Sticker Set",
"file_id": "file_id_from_telegram",
"emojis": "😀",
"is_animated": false,
"is_video": false
}
```
**Параметры:**
- `user_id` (integer, обязательный): ID пользователя
- `sticker_set_name` (string, обязательный): Название набора стикеров (без суффикса _by_bot)
- `title` (string, обязательный): Заголовок набора стикеров
- `file_id` (string, обязательный): File_id загруженного стикера
- `emojis` (string, обязательный): Список эмодзи для стикера
- `is_animated` (boolean, опциональный, по умолчанию false): Флаг анимированного стикера
- `is_video` (boolean, опциональный, по умолчанию false): Флаг видео-стикера
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### GET /check_sticker_set_name/{sticker_set_name}
Проверяет, существует ли набор стикеров с указанным именем.
**Параметры пути:**
- `sticker_set_name` (string, обязательный): Название набора стикеров
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### POST /delete_sticker_from_set
Удаляет стикер из набора.
**Тело запроса:**
```json
{
"file_id": "file_id_from_telegram"
}
```
**Параметры:**
- `file_id` (string, обязательный): File_id стикера
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### POST /set_sticker_position_in_set
Изменяет позицию стикера в наборе.
**Тело запроса:**
```json
{
"file_id": "file_id_from_telegram",
"position": 0
}
```
**Параметры:**
- `file_id` (string, обязательный): File_id стикера
- `position` (integer, обязательный): Новая позиция стикера (0 - первая позиция)
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### POST /delete_sticker_set
Удаляет набор стикеров.
**Тело запроса:**
```json
{
"sticker_set_name": "example_set_by_bot_name"
}
```
**Параметры:**
- `sticker_set_name` (string, обязательный): Полное название набора стикеров (включая суффикс _by_bot)
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### POST /create_sticker_set_db
Создает запись о стикерпаке в базе данных.
**Тело запроса:**
```json
{
"user_id": 123456789,
"sticker_set_name": "example_set_by_bot_name"
}
```
**Параметры:**
- `user_id` (integer, обязательный): ID пользователя
- `sticker_set_name` (string, обязательный): Полное название набора стикеров (включая суффикс _by_bot)
**Ответ (201 Created):**
```json
{
"id": 1,
"set_name": "example_set_by_bot_name",
"user_id": 123456789
}
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### GET /user_sticker_sets/{user_id}
Возвращает список названий всех стикерпаков пользователя.
**Параметры пути:**
- `user_id` (integer, обязательный): ID пользователя
**Ответ (200 OK):**
```json
[
{
"id": 1,
"set_name": "example_set_by_bot_name",
"user_id": 123456789
}
]
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
### Прокси для Telegram API
#### GET /stickers/packs/{pack_name}
Получает информацию о стикерпаке из Telegram.
**Параметры пути:**
- `pack_name` (string, обязательный): Название стикерпака
**Ответ (200 OK):**
```json
{}
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### GET /stickers/proxy/sticker/{file_id}
Прокси для получения изображения стикера без раскрытия токена бота.
**Параметры пути:**
- `file_id` (string, обязательный): File ID стикера
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
#### POST /stickers/test/upload
Тестовый эндпоинт для загрузки изображения в Telegram.
**Форма запроса:**
- `user_id` (integer, обязательный): Telegram ID пользователя
- `image_url` (string, обязательный): URL изображения для загрузки
**Ответ (200 OK):**
```
"string"
```
**Ошибки:**
- 422 Validation Error: Ошибка валидации данных
## Модели данных
### UserBase
```json
{
"user_id": 1,
"username": "john_doe",
"chat_id": 123456789,
"balance": 100
}
```
### UserCreate
```json
{
"user_id": 1,
"username": "john_doe",
"chat_id": 123456789,
"balance": 100
}
```
### ImageBase
```json
{
"id": 0,
"link": "string",
"prompt_id": "string",
"status": "string",
"created_at": "2025-03-19T12:15:53.248Z",
"sticker_set_id": 0
}
```
### StickerUploadRequest
```json
{
"user_id": 0,
"link": "string"
}
```
### StickerSetRequest
```json
{
"user_id": 0,
"sticker_set_name": "string",
"title": "string",
"file_id": "string",
"emojis": "string",
"is_animated": false,
"is_video": false
}
```
### StickerFileID
```json
{
"file_id": "string"
}
```
### StickerSetPosition
```json
{
"file_id": "string",
"position": 0
}
```
### StickerSetName
```json
{
"sticker_set_name": "string"
}
```
### GenerateImageRequest
```json
{
"tag": "image_generation",
"user_id": 0,
"workflow": {}
}
```
### CreateStickerSetDBRequest
```json
{
"user_id": 0,
"sticker_set_name": "string"
}
```
### StickerSetResponse
```json
{
"id": 0,
"set_name": "string",
"user_id": 0
}
```
### HTTPValidationError
```json
{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string"
}
]
}
```
### ValidationError
```json
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string"
}