Читайте и принимайте оповещения

Прочитайте ленту оповещений, которые открылись в проекте, и отметьте оповещение как просмотренное.

Оповещение — это один случай, когда сработало правило: бюджет перешёл свой порог, пул потерял ёмкость, выросло число ошибок. Операции этой страницы читают ленту оповещений и отмечают оповещение как просмотренное. Правила задают в консоли, на вкладке Правила экрана Оповещения.

Как живёт оповещение

Slen проверяет активные правила раз в минуту.

  • Когда правило срабатывает, открывается оповещение. occurred_at — этот момент.

  • Пока правило выполняется, оповещение остаётся одним оповещением. Его payload, severity и title обновляются при каждой проверке, поэтому оповещение, открытое как warning, может стать critical.

  • Когда правило перестаёт выполняться, оповещение закрывается: появляется resolved_at. Если правило приостановить или удалить, его открытое оповещение тоже закрывается. Вручную ничего закрывать не нужно.

Правило всей организации проверяется в каждом проекте организации, и всё равно у него одно открытое оповещение за раз — о проекте, где правило сработало. Оповещение остаётся за этим проектом, пока правило в нём выполняется. Когда этот проект приходит в норму, а другой всё ещё в беде, оповещение закрывается и открывается новое — о другом проекте.

title — это предложение на английском о том, что произошло, а payload несёт числа, которые за ним стоят.

События вебхуков alert.opened и alert.resolved сообщают о моменте, когда оповещение открывается, и о моменте, когда оно закрывается. Обновление открытого оповещения событий не отправляет.

Чтение ленты

Лента отвечает самыми новыми оповещениями в начале, не больше 100, и не делится на страницы. Оповещение называет проект, о котором оно, в project_id — и тогда, когда его правило следит за всей организацией. Ключ читает оповещения о своём проекте и оповещения без проекта, например о бюджете или пуле всей организации.

Отправьте open=1, чтобы прочитать только незакрытые оповещения. Логическое значение в строке запроса записывается как 1 или 0, а open=true отклоняется с 422.

Принятие оповещения

Принять оповещение — значит сказать, что его кто-то увидел. Операция записывает acknowledged_at и больше ничего не меняет: оповещение остаётся открытым, пока его правило выполняется, — или пока правило не приостановят или не удалят. Повторное принятие сохраняет время первого.

acknowledged_by_user_id называет человека, который принял оповещение в консоли. Оно равно null, когда это сделал API-ключ.

Оповещение, которого не существует, или оповещение другого проекта отвечает 404 с кодом alert_not_found.

Операции

Описания операций и полей приведены на английском.

Лента оповещений

GET /v1/alerts

  • Разрешение: read

Параметры

ПараметрОписание
open необязательно

queryinteger

1 — only what is still true right now; 0 or absent — the whole feed. 1 or 0: true and false are a field-validation 422.

  • Одно из: 0, 1
project необязательно

querystring

current narrows the list to the active project — an API key's own, a person's as switched on POST /api/auth/me/project — plus the organization's rows where the resource has them. A literal, never an id: anything else is 422. Without it the list is everything within the caller's reach.

  • Одно из: current

Ответы

200

Alert events

application/json
{
  "data": [
    {
      "alert_id": "74438200973594624",
      "alert_rule_id": "74438200973594624",
      "project_id": "74438200973594624",
      "type": "budget_threshold",
      "severity": "warning",
      "title": "string",
      "payload": {},
      "occurred_at": "2026-10-02T09:30:00Z",
      "resolved_at": "2026-10-02T09:30:00Z",
      "acknowledged_at": "2026-10-02T09:30:00Z",
      "acknowledged_by_user_id": "74438200973594624"
    }
  ]
}

Ошибки

СтатусКодыКогда
401

No credential, or one that is not valid

403

Authenticated, but not allowed: scope (insufficient_scope), policy or tenant (not_a_member); a blocked end customer (customer_blocked); an act only a signed-in person may take (session_required); the role rule on members and invitations (member_forbidden, invite_forbidden); a write to the organization's own rows, or a read of the audit journal, by a caller that does not reach every project (project_access_restricted)

422

Validation failure or a semantically impossible request. Field-level validation from the framework answers {"message", "errors"}; domain refusals answer the standard error envelope. An Idempotency-Key longer than 190 characters is invalid_request in that envelope.

Заголовки

  • X-Request-Id

Тело каждой ошибки — конверт ошибки.

Подтвердить оповещение

POST /v1/alerts/{id}/ack

  • Разрешение: read

Acknowledging is about the reader, not about configuration, so read is enough.

Параметры

ПараметрОписание
id обязательно

pathId

Snowflake identifier, as a string.

  • Шаблон: ^\d+$
  • Пример: 74438200973594624

Ответы

200

The acknowledged alert

application/json
{
  "data": {
    "alert_id": "74438200973594624",
    "alert_rule_id": "74438200973594624",
    "project_id": "74438200973594624",
    "type": "budget_threshold",
    "severity": "warning",
    "title": "string",
    "payload": {},
    "occurred_at": "2026-10-02T09:30:00Z",
    "resolved_at": "2026-10-02T09:30:00Z",
    "acknowledged_at": "2026-10-02T09:30:00Z",
    "acknowledged_by_user_id": "74438200973594624"
  }
}

Ошибки

СтатусКодыКогда
401

No credential, or one that is not valid

403

Authenticated, but not allowed: scope (insufficient_scope), policy or tenant (not_a_member); a blocked end customer (customer_blocked); an act only a signed-in person may take (session_required); the role rule on members and invitations (member_forbidden, invite_forbidden); a write to the organization's own rows, or a read of the audit journal, by a caller that does not reach every project (project_access_restricted)

404

No such resource for this tenant. Somebody else's resource — and a resource of a project the caller does not reach — answers the same way on purpose: the two must not be distinguishable.

Заголовки

  • X-Request-Id

Тело каждой ошибки — конверт ошибки.

Примеры

Прочитать открытые оповещения

Открыто одно оповещение: месячный бюджет перешёл порог своего правила.

Terminal
curl "https://api.slen.ai/api/v1/alerts?open=1" \
  -H "Authorization: Bearer $SLEN_API_KEY"
200 OK
{
  "data": [
    {
      "alert_id": "74441250346041344",
      "alert_rule_id": "74440612744429568",
      "project_id": "74438200973594624",
      "type": "budget_threshold",
      "severity": "warning",
      "title": "Monthly budget is 86.40% used",
      "payload": {
        "budget_id": "74437302811459584",
        "budget_name": "Production",
        "budget_type": "monthly",
        "currency": "USD",
        "limit": "500.00000000",
        "used": "432.00000000",
        "used_percent": "86.40",
        "threshold_percent": "80.00"
      },
      "occurred_at": "2026-10-02T07:12:00+00:00",
      "resolved_at": null,
      "acknowledged_at": null,
      "acknowledged_by_user_id": null
    }
  ]
}

Принять оповещение

Ответ — это оповещение с записанным acknowledged_at. resolved_at по-прежнему равно null: бюджет всё ещё выше порога.

Terminal
curl -X POST https://api.slen.ai/api/v1/alerts/74441250346041344/ack \
  -H "Authorization: Bearer $SLEN_API_KEY"
200 OK
{
  "data": {
    "alert_id": "74441250346041344",
    "alert_rule_id": "74440612744429568",
    "project_id": "74438200973594624",
    "type": "budget_threshold",
    "severity": "warning",
    "title": "Monthly budget is 86.40% used",
    "payload": {
      "budget_id": "74437302811459584",
      "budget_name": "Production",
      "budget_type": "monthly",
      "currency": "USD",
      "limit": "500.00000000",
      "used": "432.00000000",
      "used_percent": "86.40",
      "threshold_percent": "80.00"
    },
    "occurred_at": "2026-10-02T07:12:00+00:00",
    "resolved_at": null,
    "acknowledged_at": "2026-10-02T08:41:00+00:00",
    "acknowledged_by_user_id": null
  }
}

Что читать дальше

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

  • Аутентификация — что доступно ключу в его проекте и в его организации.

  • Обзор — вид ответа 422 для параметра, который не прошёл проверку.

  • Вебхуки — как приходят alert.opened и alert.resolved.

Собрано из openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d