API

REST API MoniTOR

Backend отдаёт JSON API под префиксом /api/v1/. Интерактивная документация — Swagger UI.

Редакция от 25 июля 2026

Базовый URL

http://<host>:8000/api/v1/     # прямой доступ к backend
http://<host>:3000/api/v1/     # через frontend proxy (если настроен)

OpenAPI / Swagger

URLНазначение
/api/docs/Swagger UI — интерактивная документация всех эндпоинтов.
/api/schema/OpenAPI schema (JSON/YAML) для генерации клиентов.

Пример: http://192.168.1.10:8000/api/docs/

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

API использует сессии Django после входа через UI или token-based auth (см. Swagger, раздел /api/v1/auth/). Без активной лицензии большинство эндпоинтов недоступны (402).

# Проверка доступности (без auth — ожидается 401, не 5xx):
curl -s -o /dev/null -w '%{http_code}' http://localhost:8000/api/v1/license/status/

Группы эндпоинтов

ПрефиксНазначение
/api/v1/auth/Вход, выход, текущий пользователь.
/api/v1/license/Статус лицензии (GET …/status/), установка ключа (POST …/install/).
/api/v1/metrics/Метрики хоста: CPU, память, диск, сеть, time series, profiling.
/api/v1/containers/Docker: список, start/stop/restart, logs, inspect, файлы в контейнере.
/api/v1/cron/Cron-задачи: список, toggle, run, delete.
/api/v1/files/Файловый менеджер: browse, read, write.
/api/v1/webservers/Nginx/Apache: vhosts, конфиги, SSL, load balancers, traffic.
/api/v1/kubernetes/K8s: overview, pods, deployments.
/api/v1/storage/Диски и тома хоста.
/api/v1/backups/Резервные копии приложения.
/api/v1/assistant/ИИ-помощник: settings, conversation, context, memory, tools.

Лицензия через API

# Статус (часто доступен до полной активации UI)
curl http://localhost:8000/api/v1/license/status/

# Установка ключа (требует auth admin)
curl -X POST http://localhost:8000/api/v1/license/install/ \
  -H 'Content-Type: application/json' \
  -d '{"key":"MONI1.…"}'

Примеры для автоматизации

Ниже — типичные запросы сисадмина после cookie/session login (или token из Swagger Authorize). Подставьте свой хост и CSRF/сессию, если backend этого требует.

# Список контейнеров
curl -sS -b cookies.txt http://localhost:8000/api/v1/containers/ | jq '.[].name'

# Рестарт контейнера
curl -sS -b cookies.txt -X POST \
  http://localhost:8000/api/v1/containers/<id>/restart/

# Метрики overview (карточки дашборда)
curl -sS -b cookies.txt http://localhost:8000/api/v1/metrics/overview/

# Time series CPU (from/to — unix seconds)
curl -sS -b cookies.txt \
  'http://localhost:8000/api/v1/metrics/timeseries/?panel=cpu&from=…&to=…'

# Kubernetes overview
curl -sS -b cookies.txt http://localhost:8000/api/v1/kubernetes/overview/
Сценарии UI с этими же данными — в обучении (контейнеры, метрики, Kubernetes).

WebSocket

Терминал, стриминг логов контейнеров и часть assistant-функций используют WebSocket поверх того же хоста. При reverse proxy включите Upgrade и Connection (см. Конфигурация).

Полный список параметров, схем запросов/ответов и кодов ошибок — в Swagger UI на вашем инстансе. Схема генерируется автоматически из Django REST Framework (drf-spectacular).