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

Прочитайте стрічку сповіщень, які відкрилися в проєкті, і позначте сповіщення як переглянуте.

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

Як живе сповіщення

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