Shumoku

API リファレンス

HTTP エンドポイントと WebSocket プロトコル

認証

ヘルスチェックと共有ビューを除くすべての API エンドポイントはセッション認証が必要です。

POST /api/auth/login
Content-Type: application/json

{ "password": "your-password" }

共有ビュー(公開・トークンスコープ)

セッションなしで到達できるのは、以下の共有ルート(と /api/healthのみです。 共有トークンは単一トポロジー、あるいはダッシュボードの場合はそのウィジェットが 参照するトポロジー/データソース id だけへの読み取り専用アクセスを与えます。 レスポンスは公開用の形に投影され、内部フィールド(リソース自身の共有トークン、 データソース id、ホストマッピング、ポートエイリアス、タイムスタンプ)は返しません。

MethodEndpoint説明
GET/api/share/topologies/:token共有トポロジーのコンテキスト(ノード/エッジ/メトリクス)
GET/api/share/topologies/:token/graph共有トポロジーの NetworkGraph
GET/api/share/topologies/:token/render共有トポロジーのレンダリング出力
GET/api/share/dashboards/:token共有ダッシュボードのガワ(レイアウト)
GET/api/share/dashboards/:token/topologies/:idこのダッシュボード内ウィジェット用のトポロジーメタデータ
GET/api/share/dashboards/:token/topologies/:id/graphこのダッシュボード内ウィジェット用の NetworkGraph
GET/api/share/dashboards/:token/topologies/:id/contextデバイスステータスウィジェット用のコンテキスト
GET/api/share/dashboards/:token/datasources/:id/alertsアラートウィジェット用のアラート

ダッシュボードのレイアウトが参照していない :id へのトークンスコープ要求は 404 を返すため、トークンで無関係なリソースを列挙することはできません。 以下の管理エンドポイント(/api/topologies/:id/api/dashboards/:id/api/datasources/:id/alerts など)は常に認証が必要です。

HTTP エンドポイント

データソース

メソッドエンドポイント説明
GET/api/datasourcesデータソース一覧
POST/api/datasourcesデータソース作成
GET/api/datasources/:idデータソース詳細
PUT/api/datasources/:idデータソース更新
DELETE/api/datasources/:idデータソース削除
POST/api/datasources/:id/test接続テスト
GET/api/datasources/:id/hosts監視ホスト一覧
GET/api/datasources/:id/hosts/:hostId/itemsホストのメトリクスアイテム
GET/api/datasources/:id/alertsアラート取得

トポロジー

メソッドエンドポイント説明
GET/api/topologiesトポロジー一覧
POST/api/topologiesトポロジー作成
GET/api/topologies/:idトポロジー詳細
PUT/api/topologies/:idトポロジー更新
DELETE/api/topologies/:idトポロジー削除
GET/api/topologies/:id/renderレンダリングされたレイアウトデータ
GET/api/topologies/:id/sources紐付けデータソース一覧
POST/api/topologies/:id/sourcesデータソースを紐付け

ダッシュボード

メソッドエンドポイント説明
GET/api/dashboardsダッシュボード一覧
POST/api/dashboardsダッシュボード作成
GET/api/dashboards/:idダッシュボード詳細
PUT/api/dashboards/:idダッシュボード更新
DELETE/api/dashboards/:idダッシュボード削除

プラグイン

メソッドエンドポイント説明
GET/api/pluginsプラグイン一覧
POST/api/pluginsプラグイン追加(URL/パス/アップロード)
DELETE/api/plugins/:idプラグイン削除

Webhook

Webhook エンドポイントはセッション認証を使いません。代わりに、ソースに設定した Webhook シークレットを X-Webhook-Secret ヘッダー(推奨)または ?secret= クエリパラメータで送ります。シークレットは定数時間で比較され、シークレット未指定は 401、宛先不明は 404、シークレット不一致は 401 を返します。

一般形は POST /api/webhooks/:type/:id で、:id はソースの id(設定画面に 表示されるもので、シークレットではありません)。type=topology は Webhook モードの トポロジーソースのグラフを再取得し、それ以外の type は対応するデータソースプラグインに ディスパッチされます — 現在 Webhook を処理するのは grafana のみです。

メソッドエンドポイント説明
POST/api/webhooks/topology/:idトポロジーソース Webhook(:id = トポロジーソース id)— ソースを再同期(例: NetBox)
POST/api/webhooks/grafana/:idGrafana アラート Webhook(:id = データソース id)
GET/api/webhooks/healthWebhook ヘルスチェック

その他

メソッドエンドポイント説明
GET/api/healthヘルスチェック(認証不要)
GET/api/auth/status認証状態の確認
POST/api/auth/setup初期パスワード設定
POST/api/auth/logoutログアウト

WebSocket

ws://<host>/ws に接続してリアルタイムメトリクスをストリーミングします。

クライアントメッセージ

// トポロジー更新を購読
{ "type": "subscribe", "topology": "<topology-id>" }

// 特定のノード/リンクをフィルタ
{ "type": "filter", "nodes": ["router1"], "links": ["link-0"] }

サーバーメッセージ

{
  "type": "metrics",
  "data": {
    "nodes": {
      "router1": { "status": "up" }
    },
    "links": {
      "link-0": {
        "status": "up",
        "utilization": { "in": 45.2, "out": 12.8 }
      }
    },
    "timestamp": 1705849200000
  }
}

目次