Оповещения
Управление каналами оповещений, правилами срабатывания и историей отправленных уведомлений.
GET /notifications/history
История отправленных оповещений с пагинацией.
Параметры запроса
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
page | int | 1 | Номер страницы |
page_size | int | 50 | Количество на странице |
Успешный ответ (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
}
}Поля уведомления
| Поле | Описание |
|---|---|
priority | low, medium, high, critical |
status | pending, 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"
}
}
]
}Поддерживаемые типы каналов
| Тип | Описание |
|---|---|
slack | Slack Webhook |
email | Email-рассылка |
webhook | Пользовательский HTTP Webhook |
telegram | Telegram Bot |
pagerduty | PagerDuty 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_exhausted | Error 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 | Тестовое оповещение |