Levlix 公開 API
Levlix は、ログインも API キーも不要な、小さな読み取り専用の API を公開しています。この API は 公開ステータスページ にデータを提供し、監視ツールや AI エージェントが Levlix の稼働状況を確認できるようにします。ダッシュボードが /api/ の下で呼び出すそれ以外のものはすべて Discord のログインに紐づいており、この API には含まれません。
検出
エージェントは URL を推測しなくても API を見つけられます。API を説明する機械可読のファイルが2つあります。
- API カタログ:
https://levlix.io/.well-known/api-catalogは RFC 9727 に準拠しています。OpenAPI の記述、このページ、ヘルスエンドポイントを指す1つのエントリーを持つ linkset です。 - OpenAPI の記述:
https://levlix.io/api/v1/openapi.jsonは、以下に挙げるすべてのエンドポイントを OpenAPI 3.1 で記述しています。
levlix.io のすべての HTML ページには、サイトマップと llms.txt へのリンクに加えて、rel="api-catalog" を持つ Link ヘッダーも付いています。
エンドポイント
| エンドポイント | 返す内容 |
|---|---|
GET /api/v1/health |
全体のステータス、実行中のバージョン、稼働時間、データベース、キャッシュ、ボット接続の状態。 |
GET /api/v1/health/history |
過去24時間のヘルスチェックと、過去90日間の稼働率。 |
GET /api/v1/health/discord |
Discord 自体の API のステータス(1分間キャッシュ)。 |
GET /api/v1/health/incidents |
有効なメンテナンスバナーと過去のインシデント。 |
GET /api/v1/liveness |
プロセスの実行中は常に {"status": "alive"}。 |
GET /api/v1/readiness |
データベースが応答すると {"status": "ready"}、そうでなければ 503。 |
GET /docs/api/search?q= |
ドキュメントの検索結果。ドイツ語のドキュメントは、ドイツ語サイトのプレフィックスの下の同じパスで応答します。 |
ルール
- すべてのレスポンスは JSON で、対応しているのは
GETだけです。 - 認証がないため、サーバーのデータを読み取ったり変更したりするエンドポイントはありません。
- ポーリングに適しているのはヘルスエンドポイントです。1分に1回で十分です。ステータスページ自体もそれ以上の頻度では問い合わせません。
- Discord ボットには独自の公開 API はありません。それ以外はすべてスラッシュコマンドとダッシュボードで行います。