Skip to content

API

API

Аутентификация

  • POST /auth/register — регистрация.
  • POST /auth/login — логин и выдача JWT.
  • Заголовок для защищенных эндпоинтов: Authorization: Bearer <token>.

Формат запросов

  • /datasets/create принимает multipart/form-data с name, description и file.
  • /models/create принимает multipart/form-data с name, architecture, architecture_profile, опциональным dataset_id и file.
  • /tasks/create/inference принимает multipart/form-data с model_id и file.
  • /tasks/create/training принимает form‑параметры model_id и dataset_id.

Датасеты

MethodPathAuthОписание
POST/datasets/createyesЗагрузка ZIP датасета
GET/datasetsyesСписок датасетов
GET/datasets/{dataset_id}yesПолучить датасет
GET/datasets/download/{dataset_id}yesСсылка на скачивание
DELETE/datasets/{dataset_id}yesУдаление

Модели

MethodPathAuthОписание
POST/models/createyesЗагрузка .pt или .pth
GET/modelsyesСписок моделей
GET/models/{model_id}yesПолучить модель
GET/models/download/{model_id}yesСсылка на скачивание
DELETE/models/{model_id}yesУдаление

Задачи

MethodPathAuthОписание
POST/tasks/create/inferenceyesИнференс по файлу
POST/tasks/create/trainingyesЗапуск обучения
GET/tasksyesСписок задач
GET/tasks/{task_id}yesПолучить задачу
GET/tasks/subscribe/{task_id}yesSSE обновления
DELETE/tasks/{task_id}yesУдалить задачу

Админка

  • GET /admin — SQLAdmin UI. Доступ только для роли admin.

Параметры списков

  • /datasets: skip, limit, name_contains.
  • /models: skip, limit, dataset_id, include_system.
  • /tasks: skip, limit.

Ограничения по запросам

  • POST /tasks/create/inference — 10 запросов в минуту.
  • POST /tasks/create/training — 2 запроса в час.
  • POST /models/create — 5 запросов в минуту.
  • Глобальный лимит — 100 запросов в минуту.

Валидация файлов

  • Модель: .pt или .pth, размер до 1 GB, MIME application/octet-stream или application/x-pickle.
  • Датасет: .zip, размер до 5 GB, внутри должны быть изображения и файлы аннотаций.
  • Инференс: image/jpeg, image/png, application/pdf.

Формат SSE события

{
  "event": "task_update",
  "data": {
    "id": "UUID",
    "task_type": "inference",
    "status": "running",
    "model_id": "UUID",
    "dataset_id": null,
    "input_path": "minio/object",
    "output_path": "minio/object",
    "output_url": "https://...",
    "error_msg": null
  }
}