Документация API
EVA Platform предоставляет REST API для получения метрик и управления серверами.
Аутентификация
Публичные методы (/api/health, /api/status, /api/plans,
/api/login, /api/register, /api/recover) доступны без авторизации.
Остальные требуют токен, полученный при входе: он передаётся в заголовке
X-Auth-Token. HTTP Basic Auth также поддерживается.
# Вход: получаем токен curl -s -X POST -H "Content-Type: application/json" -d '{"login":"user@example.com","password":"********"}' https://evasea.space/api/login # Запрос с токеном (TTL 1 час, продление — POST /api/refresh) curl -H "X-Auth-Token: <token>" https://evasea.space/api/stats.json # Завершение сессии curl -X POST -H "X-Auth-Token: <token>" https://evasea.space/api/logout
Эндпоинты
GET /api/status
Состояние сервисов платформы. Доступен без авторизации; используется на странице /status.
GET /api/plans
Список тарифов и лимитов. Доступен без авторизации.
GET /api/health
Проверка доступности API. Возвращает {"ok":true}.
GET /api/stats.json
Текущие метрики сервера в реальном времени.
{
"ts": 1719000000,
"cpu": 12.5,
"ram_percent": 45.2,
"ram_used": 858993459,
"ram_total": 1900000000,
"disk_percent": 32.1,
"disk_used": 8589934592,
"disk_total": 26843545600,
"net_rx": 102400,
"net_tx": 51200,
"load1": 0.45,
"load5": 0.32,
"load15": 0.28,
"uptime": 1209600,
"connections": 42,
"services": {
"frontend": "active",
"backend": "active",
"worker": "active"
}
}
GET /api/history.jsonl
Исторические данные в формате JSON Lines. Каждая строка — снимок метрик за 30-секундный интервал.
// Каждая строка — независимый JSON-объект
{"ts":1719000000,"cpu":12.5,"ram":45.2,"rx":102400,"tx":51200,"load":0.45,"conn":42,"disk":32.1}
{"ts":1719000030,"cpu":10.1,"ram":44.8,"rx":98304,"tx":49152,"load":0.38,"conn":41,"disk":32.1}
...
POST /api/login
Аутентификация пользователя. В ответ приходит токен для заголовка Authorization.
{
"login": "user@example.com",
"password": "********"
}
POST /api/register
Регистрация нового пользователя. Требуется подтверждение email.
{
"email": "user@example.com",
"name": "Иван Петров",
"password": "********"
}
POST /api/recover
Запрос на восстановление пароля. На указанный email отправляется ссылка для сброса.
{
"email": "user@example.com"
}
Форматы ответов
Все ответы возвращаются в формате application/json. Ошибки содержат поле error с описанием:
400 — некорректный запрос, 401 — нет или истёк токен, 403 — нет доступа к объекту,
404 — объект не найден, 413 — слишком большое тело, 429 — превышен лимит запросов
(в ответе retry_after, в заголовке Retry-After).
Ограничения
Частота запросов ограничена: не более 120 запросов в минуту на IP для тарифа Starter, 600 для Pro.
Вход ограничен 12 попытками за 5 минут с IP и 8 попытками за 15 минут на аккаунт.
При превышении возвращается HTTP 429 с заголовком Retry-After.