API Reference

REST API

Qihu предоставляет полный REST API для интеграции с CI/CD, внешними системами мониторинга и кастомными дашбордами.

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

Все запросы требуют Bearer-токен в заголовке Authorization:

curl -H "Authorization: Bearer qihu_tok_xxxxxxxx" \
     https://qihu.ru/api/v1/nodes

Узлы (Nodes)

GET/api/v1/nodes

Возвращает список всех узлов, подключённых к проекту.

Параметры
projectstringSlug проекта *
statusstringФильтр: online | offline | warning
Ответ
{
  "nodes": [
    {
      "id": "node_abc123",
      "name": "sweden-01",
      "status": "online",
      "cpu": 12.4,
      "ram": 41.2,
      "disk": 23.0,
      "uptime": 99.9,
      "last_seen": "2025-03-22T20:00:00Z"
    }
  ],
  "total": 5
}
GET/api/v1/nodes/{id}/metrics

Возвращает исторические метрики конкретного узла за указанный период.

Параметры
fromISO8601Начало периода *
toISO8601Конец периода (по умолчанию — now)
intervalstringШаг агрегации: 1m, 5m, 1h
Ответ
{
  "node_id": "node_abc123",
  "metrics": [
    { "ts": "2025-03-22T19:00:00Z", "cpu": 11.2, "ram": 39.0, "disk": 22.8 },
    { "ts": "2025-03-22T19:05:00Z", "cpu": 14.5, "ram": 41.0, "disk": 22.9 }
  ]
}

Инциденты (Incidents)

GET/api/v1/incidents

Возвращает список инцидентов. Поддерживает фильтрацию по статусу и узлу.

Параметры
statusstringopen | resolved | acknowledged
node_idstringФильтр по узлу
limitintКоличество записей (default: 50)
Ответ
{
  "incidents": [
    {
      "id": "inc_xyz789",
      "title": "RAM > 80%",
      "severity": "warning",
      "status": "open",
      "node": "russia-core",
      "created_at": "2025-03-22T20:01:00Z",
      "assignee": "razor"
    }
  ]
}
POST/api/v1/incidents

Создаёт инцидент вручную. Полезно для интеграции с внешними системами.

Параметры
titlestringНазвание инцидента *
severitystringinfo | warning | critical *
node_idstringID узла, с которым связан инцидент
descriptionstringПодробное описание
Ответ
{ "id": "inc_new001", "status": "open", "created_at": "2025-03-22T20:05:00Z" }
PUT/api/v1/incidents/{id}/resolve

Закрывает инцидент с указанием причины решения.

Параметры
resolutionstringОписание решения
Ответ
{ "id": "inc_xyz789", "status": "resolved", "resolved_at": "2025-03-22T20:15:00Z" }

Уведомления (Notifications)

POST/api/v1/notifications/test

Отправляет тестовое уведомление на все настроенные каналы проекта.

Ответ
{ "sent": true, "channels": ["email"] }
⚠️ Rate Limits

API ограничен до 100 запросов/минуту на токен. При превышении возвращается статус 429 Too Many Requests.