Перевірте, що API працює

Дві перевірки стану, яким не потрібен ключ, кажуть, чи відповідає API і чи відповідають його залежності, а одна операція — що відбувається, поки реєстр недоступний.

Три операції цієї сторінки кажуть, як справи в самого API. Дві з них — перевірки стану: вони стоять поза /v1, не вимагають API-ключа і відповідають простим об’єктом, який не загорнуто в data. Третя — звичайна операція /v1, і їй потрібен ключ.

Яку перевірку викликати

ПеревіркаЩо вона відповідає
GET /health200, щойно API може обслужити запит. Стан MySQL і Redis — у тілі: ok або down і причина.
GET /ready200, коли відповідають і MySQL, і Redis, та 503, коли один із них не відповідає. Тіло відповіді 503 називає цю залежність у failed.

Викликайте /ready там, де щось вирішує статус відповіді, наприклад у балансувальнику навантаження або в моніторингу доступності. Викликайте /health, щоб прочитати, який реліз запущено і що не працює: його статус залишається 200, поки залежність недоступна.

Коли реєстр недоступний

Slen записує до реєстру кожен холд і кожне списання. GET /v1/degraded-status каже, що робить API, поки реєстр не відповідає, і що після цього залишилося в проєкті ключа.

  • mode — налаштування сервісу, одне для всіх проєктів: fail_closed або fail_open_with_cap. Поки реєстр недоступний, запит, який витрачав би гроші, відхиляється в будь-якому режимі: 503 з кодом ledger_unavailable.

  • degraded_now дорівнює true від першого пропущеного виклику й доти, доки не пораховано вартість останнього з них. Події вебхуків ledger.degraded і ledger.restored позначають початок і кінець цього періоду.

  • journal_depth — кількість викликів, вартість яких ще не пораховано.

  • failed_depth — кількість викликів, вартість яких порахувати не вдалося. Їхньої вартості в реєстрі немає.

Здорова відповідь — degraded_now, що дорівнює false, і journal_depth, що дорівнює нулю.

Операції

Описи операцій і полів подано англійською.

Чи живий сервіс — зі станом кожної залежності

GET /health

  • API-ключ не потрібен
  • Доступно в SDK для PHP і Node.js

Answers 200 as soon as PHP can serve; a dependency that is down is named in the body, not in the status. For a strict check use GET /ready. Not authenticated.

Відповіді

200

The process serves

Заголовки

  • X-Request-Id
application/json
{
  "app": "string",
  "release": "string",
  "server": "string",
  "mysql": "string",
  "redis": "string",
  "queue": "string",
  "broadcast": "string",
  "opcache_preloaded_files": 1,
  "opcache_cached_scripts": 1
}

Готовність — чи відповідають MySQL і Redis

GET /ready

  • API-ключ не потрібен

503 while a dependency is unreachable, so an orchestrator stops routing traffic to the instance. Not authenticated.

Відповіді

200

Every dependency answers

Заголовки

  • X-Request-Id
application/json
{
  "status": "ok",
  "failed": {
    "key": "string"
  }
}

Помилки

СтатусКодиКоли
503

A dependency is unreachable; failed names it

Заголовки

  • X-Request-Id

Тіло кожної помилки — конверт помилки.

Чи відповідає реєстр і що пропущено, поки він мовчав

GET /v1/degraded-status

  • Дозвіл: read

The degraded mode as it stands for the caller's project — an API key's own, a person's active one. Everything here is read from Redis, and the route skips the database pre-check, so the page answers while MySQL does not: it is the page somebody opens because the database is unreachable.

  • mode — what the installation does when the ledger stops answering: fail_closed (the default) refuses with 503 ledger_unavailable; fail_open_with_cap serves a direct gateway call without a hold, up to a per-minute cap per project, and writes each one down to be priced later. One setting for the installation, not per project. No route makes a direct gateway call any more, and a flow execution is never served degraded, so an outage of the ledger is refused under either mode.
  • degraded_now — the project is inside a degraded window: a call was served without the ledger. The window closes when reconciliation has priced the last such call, not when the database answers again.
  • journal_depth, failed_depth — the calls still waiting to be priced, and the ones reconciliation gave up on (they need a person).
  • last_transition_at — when the project last entered or left the window; null if it never did, or when Redis cannot be read (then degraded_now reads false as well).

Відповіді

200

The degraded-mode state of this project's plane

application/json
{
  "data": {
    "mode": "fail_closed",
    "degraded_now": true,
    "journal_depth": 1,
    "failed_depth": 1,
    "last_transition_at": "2026-10-02T09:30:00Z"
  }
}

Приклади

Прочитати стан API

Перевірці не потрібен ключ. release називає реліз, який відповів.

Terminal
curl https://api.slen.ai/api/health
200 OK
{
  "app": "Slen",
  "release": "1.0.8",
  "server": "octane/frankenphp",
  "mysql": "ok",
  "redis": "ok",
  "queue": "rabbitmq",
  "broadcast": "reverb",
  "opcache_preloaded_files": 1482,
  "opcache_cached_scripts": 2913
}

Запитати, чи готовий API

Відповідь — це статус відповіді: тут 200, а поки залежність недоступна — 503.

Terminal
curl https://api.slen.ai/api/ready
200 OK
{
  "status": "ok"
}

Прочитати стан реєстру

Це здорова відповідь: жоден виклик не пропущено без холду, і жоден не чекає підрахунку вартості.

Terminal
curl https://api.slen.ai/api/v1/degraded-status \
  -H "Authorization: Bearer $SLEN_API_KEY"
200 OK
{
  "data": {
    "mode": "fail_closed",
    "degraded_now": false,
    "journal_depth": 0,
    "failed_depth": 0,
    "last_transition_at": null
  }
}

Що читати далі

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