Skip to content

Оповещения

Управление каналами оповещений, правилами срабатывания и историей отправленных уведомлений.

GET /notifications/history

История отправленных оповещений с пагинацией.

Параметры запроса

ПараметрТипПо умолчаниюОписание
pageint1Номер страницы
page_sizeint50Количество на странице

Успешный ответ (200)

json
{
  "success": true,
  "data": {
    "notifications": [
      {
        "id": 42,
        "slo_id": 1,
        "channel_id": 2,
        "priority": "critical",
        "subject": "SLO: Доступность API — критическое снижение",
        "message": "Значение SLO упало до 85.3% при целевом 99.9%. Error budget исчерпан на 100%.",
        "status": "delivered",
        "delivered_at": "2026-06-10T15:30:00Z"
      }
    ],
    "total": 128,
    "page": 1,
    "page_size": 50,
    "has_next": true
  }
}

Поля уведомления

ПолеОписание
prioritylow, medium, high, critical
statuspending, sent, delivered, failed, throttled
delivered_atВремя доставки (null, если не доставлено)

GET /notifications/channels

Список настроенных каналов оповещений.

Успешный ответ (200)

json
{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Команда в Slack",
      "channel_type": "slack",
      "config": {
        "webhook_url": "https://hooks.slack.com/services/...",
        "channel": "#slo-alerts"
      }
    },
    {
      "id": 2,
      "name": "Email дежурным",
      "channel_type": "email",
      "config": {
        "recipients": ["oncall@example.com"],
        "smtp_server": "smtp.example.com"
      }
    },
    {
      "id": 3,
      "name": "Telegram SLO Alerts",
      "channel_type": "telegram",
      "config": {
        "bot_token": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
        "chat_id": "-1001234567890"
      }
    }
  ]
}

Поддерживаемые типы каналов

ТипОписание
slackSlack Webhook
emailEmail-рассылка
webhookПользовательский HTTP Webhook
telegramTelegram Bot
pagerdutyPagerDuty Integration

POST /notifications/channels

Создание нового канала оповещения.

Тело запроса

json
{
  "name": "Канал PagerDuty",
  "channel_type": "pagerduty",
  "config": {
    "routing_key": "a1b2c3d4e5f6...",
    "severity": "critical"
  }
}

Примеры создания каналов

Slack:

json
{
  "name": "Команда в Slack",
  "channel_type": "slack",
  "config": {
    "webhook_url": "https://hooks.slack.com/services/...",
    "channel": "#slo-alerts"
  }
}

Telegram:

json
{
  "name": "Telegram SLO Alerts",
  "channel_type": "telegram",
  "config": {
    "bot_token": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
    "chat_id": "-1001234567890"
  }
}

Успешный ответ (201)

json
{
  "success": true,
  "data": {
    "id": 3,
    "name": "Канал PagerDuty",
    "channel_type": "pagerduty",
    "config": {
      "routing_key": "a1b2c3d4e5f6...",
      "severity": "critical"
    }
  }
}

Пример создания Telegram канала

json
{
  "name": "SLO Alerts Telegram",
  "channel_type": "telegram",
  "config": {
    "bot_token": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
    "chat_id": "-1001234567890"
  }
}

POST /notifications/rules

Создание правила оповещения. Правило привязывается к SLO и каналу.

Тело запроса

json
{
  "slo_id": 1,
  "channel_id": 2,
  "alert_type": "error_budget_exhausted",
  "priority": "critical",
  "subject": "Error Budget исчерпан — {{ .SLO.Name }}",
  "message": "SLO {{ .SLO.Name }} упал до {{ .CurrentValue }}%. Error budget: {{ .ErrorBudget.Used }}%."
}

Поддерживаемые типы оповещений

ТипОписание
error_budget_exhaustedError budget полностью исчерпан
burn_rate_too_fastСлишком высокая скорость сжигания budget
slo_below_targetЗначение SLO ниже целевого
slo_recoveryВосстановление SLO после инцидента

Успешный ответ (201)

json
{
  "success": true,
  "data": {
    "rule_id": 5,
    "status": "active",
    "evaluated_at": "2026-06-11T13:00:00Z"
  }
}

POST /notifications/test

Отправка тестового оповещения для проверки канала.

Тело запроса

json
{
  "channel_id": 1,
  "subject": "Тестовое оповещение SLOzy",
  "message": "Это тестовое сообщение для проверки интеграции."
}

Успешный ответ (200)

json
{
  "success": true,
  "message": "Тестовое оповещение отправлено",
  "data": {
    "channel_id": 1,
    "status": "delivered",
    "delivered_at": "2026-06-11T13:00:01Z"
  }
}

Сводная таблица

МетодПутьОписание
GET/notifications/historyИстория оповещений
GET/notifications/channelsСписок каналов
POST/notifications/channelsСоздание канала
POST/notifications/rulesСоздание правила
POST/notifications/testТестовое оповещение