StickerAI-Front/API_DOCUMENTATION.md

13 KiB
Raw Permalink Blame History

API Документация

Обзор

API предоставляет функциональность для работы со стикерами в Telegram, включая генерацию изображений, создание стикерпаков и управление ими. Также API поддерживает отслеживание позиций задач в очереди.

Базовый URL: https://stickerserver.gymnasticstuff.uk

Эндпоинты

Проверка работоспособности

GET /health

Проверяет работоспособность API.

Ответ (200 OK):

"string"

Управление пользователями

POST /register

Регистрирует нового пользователя в системе.

Тело запроса:

{
  "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):

{
  "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):

{
  "user_id": 123456789,
  "username": "example_user",
  "chat_id": 123456789,
  "balance": 0
}

Ошибки:

  • 404 Not Found: Пользователь не найден
  • 422 Validation Error: Ошибка валидации данных

Генерация изображений и управление очередью

POST /generate_image

Создает задачу на генерацию изображения с использованием ComfyUI.

Тело запроса:

{
  "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):

[
  {
    "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.

Тело запроса:

{
  "user_id": 123456789,
  "link": "https://example.com/image.png"
}

Параметры:

  • user_id (integer, обязательный): ID пользователя
  • link (string, обязательный): URL или путь к файлу стикера

Ответ (200 OK):

{}

Ошибки:

  • 422 Validation Error: Ошибка валидации данных

POST /create_sticker_set

Создает новый набор стикеров.

Тело запроса:

{
  "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

Добавляет стикер в существующий набор.

Тело запроса:

{
  "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

Удаляет стикер из набора.

Тело запроса:

{
  "file_id": "file_id_from_telegram"
}

Параметры:

  • file_id (string, обязательный): File_id стикера

Ответ (200 OK):

"string"

Ошибки:

  • 422 Validation Error: Ошибка валидации данных

POST /set_sticker_position_in_set

Изменяет позицию стикера в наборе.

Тело запроса:

{
  "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

Удаляет набор стикеров.

Тело запроса:

{
  "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

Создает запись о стикерпаке в базе данных.

Тело запроса:

{
  "user_id": 123456789,
  "sticker_set_name": "example_set_by_bot_name"
}

Параметры:

  • user_id (integer, обязательный): ID пользователя
  • sticker_set_name (string, обязательный): Полное название набора стикеров (включая суффикс _by_bot)

Ответ (201 Created):

{
  "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):

[
  {
    "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):

{}

Ошибки:

  • 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

{
  "user_id": 1,
  "username": "john_doe",
  "chat_id": 123456789,
  "balance": 100
}

UserCreate

{
  "user_id": 1,
  "username": "john_doe",
  "chat_id": 123456789,
  "balance": 100
}

ImageBase

{
  "id": 0,
  "link": "string",
  "prompt_id": "string",
  "status": "string",
  "created_at": "2025-03-19T12:15:53.248Z",
  "sticker_set_id": 0
}

StickerUploadRequest

{
  "user_id": 0,
  "link": "string"
}

StickerSetRequest

{
  "user_id": 0,
  "sticker_set_name": "string",
  "title": "string",
  "file_id": "string",
  "emojis": "string",
  "is_animated": false,
  "is_video": false
}

StickerFileID

{
  "file_id": "string"
}

StickerSetPosition

{
  "file_id": "string",
  "position": 0
}

StickerSetName

{
  "sticker_set_name": "string"
}

GenerateImageRequest

{
  "tag": "image_generation",
  "user_id": 0,
  "workflow": {}
}

CreateStickerSetDBRequest

{
  "user_id": 0,
  "sticker_set_name": "string"
}

StickerSetResponse

{
  "id": 0,
  "set_name": "string",
  "user_id": 0
}

HTTPValidationError

{
  "detail": [
    {
      "loc": [
        "string",
        0
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

ValidationError

{
  "loc": [
    "string",
    0
  ],
  "msg": "string",
  "type": "string"
}