すべてのAPIエンドポイントはダッシュボードホスト(デフォルト: https://roji.dev.localhost)で提供されます。

エンドポイント

エンドポイントメソッド説明
/_api/healthGETヘルスチェック
/healthzGET/_api/health のエイリアス
/_api/statusGET詳細ステータス(バージョン、稼働時間、証明書、Docker)
/_api/routesGET全登録ルート一覧
/_api/projectsGETアクティブ・非アクティブプロジェクト一覧
/_api/eventsGETリアルタイムルート更新のSSEストリーム
/_api/logsGET最近のリクエストログ(直近100件)
/_api/logs/eventsGETリアルタイムログ更新のSSEストリーム
/_api/logs/exportGETログをJSONまたはCSVでエクスポート
/_api/containers/{id}/restartPOSTコンテナを再起動
/_api/projects/{name}/upPOSTプロジェクト起動(docker compose up -d
/_api/projects/{name}/downPOSTプロジェクト停止(docker compose down
/_api/projects/{name}/restartPOSTプロジェクトの全サービスを再起動
/_api/projects/{name}/logsGETプロジェクトログのストリーム(SSE)
/_api/projects/{name}/deleteDELETEプロジェクト履歴から削除
/_api/config/reloadPOST設定ファイルの再読み込み

ヘルスチェック

curl -s https://roji.dev.localhost/_api/health
{"status": "healthy", "routes": 5}

ステータス値:

ステータス説明
healthyすべてのシステムが正常
degraded証明書の有効期限が30日以内
unhealthyDocker接続が切断

ログエクスポート

オプションのフィルタ付きでリクエストログをエクスポート:

# JSON形式
curl -s "https://roji.dev.localhost/_api/logs/export?format=json"

# フィルタ付きCSV形式
curl -s "https://roji.dev.localhost/_api/logs/export?format=csv&service=myapp&method=GET"

クエリパラメータ:

パラメータ説明
formatjson(デフォルト)または csv
serviceサービス名でフィルタ
hostホスト名でフィルタ
methodHTTPメソッドでフィルタ
from開始時刻(RFC 3339)
to終了時刻(RFC 3339)

SSEストリーム

ルートイベント(/_api/events

ルートの追加・更新・削除時にイベントを送信:

const es = new EventSource("https://roji.dev.localhost/_api/events");
es.onmessage = (event) => {
  const routes = JSON.parse(event.data);
  console.log("Routes updated:", routes);
};

ログイベント(/_api/logs/events

リクエストログエントリをリアルタイムでストリーム:

const es = new EventSource("https://roji.dev.localhost/_api/logs/events");
es.onmessage = (event) => {
  const log = JSON.parse(event.data);
  console.log(`${log.method} ${log.url} -> ${log.status}`);
};

CORS

APIエンドポイントは *.dev.localhost サブドメインからのクロスオリジンリクエストをサポートしており、rojiを通じてプロキシされたサービスからのAPI呼び出しが可能です。