Skip to content

REST API リファレンス

manager は /api をルートとする単一の REST API を公開します。web/ の SPA がこれを呼び、任意の HTTP クライアントから直接呼ぶこともできます。GraphQL も、アプリケーショントラフィック用の gRPC もありません(gRPC は manager 内部の geminio トンネル用のみ)。

このページは手書き swagger 仕様ではなくルートカタログです。真実の出所:cmd/ongrid/main.go(chi.Router のマウント)と internal/manager/server/*/http.go(BC ごとハンドラー)。正確なリクエスト / レスポンス構造体フィールドはハンドラーをクリックスルーしてください。

規約

  • ベースパス:すべてのルートは /api プレフィックス。なので GET /v1/edgeshttps://<manager>/api/v1/edges で到達。
  • バージョニング:すべてのルートは /v1/ 下。/v2/ は無し。後方非互換変更はフィーチャーフラグまたは新ルートで出荷。
  • 認証Authorization: Bearer ... の bearer JWT。公開ルート(ログイン、リフレッシュ、登録、IM webhook、Prometheus の auth_request プローブ)はミドルウェアをスキップ。下の「公開」表にリスト。
  • ロールadminuserviewer。書き込みルートは admin(または edge:* / write のような関連 casbin アクション)が必要。読み取りルートは任意の認証済みロールを受け入れる。viewer はチャットできますが、エージェントの toolbag は ClassSafe にフィルタされます。ADR-022 三ロール RBAC 参照。
  • エラー:JSON {"error":"code","message":"human text"}。コードは安定 enum(not_foundinvalid_argumentunauthorizedforbiddenconflict)。
  • コンテンツタイプ:明示的に注記しない限りすべてのリクエストとレスポンスは application/json(ストリームチャットは SSE、log/trace 取り込みは OTLP-protobuf または Loki-JSON)。

公開ルート(認証なし)

メソッドパス目的
GET/healthzliveness プローブ
GET/readyzreadiness プローブ
GET/internal/auth/dataplane-verifylog/trace 取り込み用 nginx auth_request プローブ
POST/api/v1/auth/loginemail+password を JWT に交換
POST/api/v1/auth/refreshリフレッシュトークンを新しいアクセストークンに交換
POST/api/v1/auth/registerセルフ登録(設定でゲート)
GET/api/v1/prometheus/authGrafana 埋め込み用 nginx auth_request プローブ
POST/api/v1/im/feishu/eventsインバウンド Feishu/Lark コールバック。webhook 署名が認証

認証済みルート

iam(users、orgs、sessions)

メソッドパスロールソース
GET/v1/versionanycmd/ongrid/main.go(インライン)
GET/v1/meanyinternal/iam/server/http.go
GET/v1/selfanyinternal/iam/server/http.go
GET/v1/usersanyユーザーリスト
POST/v1/usersadminユーザー作成
PATCH/v1/users/{id}adminユーザー更新(name、email)
PATCH/v1/users/{id}/passwordself または adminパスワードローテ
PATCH/v1/users/{id}/roleadminロール変更(admin/user/viewer)
DELETE/v1/users/{id}adminユーザー削除
GET/v1/orgsany組織リスト
POST/v1/orgsadmin組織作成
PATCH/v1/orgs/{id}admin組織更新
DELETE/v1/orgs/{id}admin組織削除
GET/v1/orgs/{id}/membersanyメンバーリスト
POST/v1/orgs/{id}/membersadminメンバー追加
PATCH/v1/orgs/{id}/members/{user_id}adminメンバーロール変更
DELETE/v1/orgs/{id}/members/{user_id}adminメンバー削除

edge(トンネル接続エージェント)

メソッドパスロール説明
POST/v1/edgesedge:*edge 作成、access+secret キー発行
GET/v1/edgesanyedge リスト
GET/v1/edges/{id}anyedge 詳細取得
DELETE/v1/edges/{id}edge:*edge 削除
POST/v1/edges/{id}/rotate-secretedge:*secret キーローテ
POST/v1/edges/{id}/upgradeedge:*明示 URL+sha256 でリモートエージェントアップグレードをトリガー
POST/v1/edges/{id}/upgrade-packageedge:*ワンクリックバンドルアップグレード(ADR-024)
GET/v1/edges/{id}/processesany読み取り専用プロセスリスト(オンデマンド RPC)
GET/v1/edges/{id}/pluginsanyedge の設定済み + ライブプラグインリスト(ヘルス付き)
PUT/v1/edges/{id}/plugins/{name}edge:pluginプラグインの有効化/無効化 + チューン
GET/v1/integrations/plugin-countsanyグローバルプラグイン有効/無効カウント(ホームページタイル用)

device(ホストエンティティ、トンネル状態と切り離し)

メソッドパスロール説明
GET/v1/devicesanyホストデバイスリスト
GET/v1/devices/{id}anyデバイス詳細取得
PATCH/v1/devices/{id}device:*表示名、tags 更新
DELETE/v1/devices/{id}device:*デバイス削除
PATCH/v1/devices/{id}/rolesdevice:*ロール割り当て(dbwebcache...)
GET/v1/devices/{id}/edgesanyこのデバイスを現在表す edge
GET/v1/devices/{device_id}/shellwebshellWebSSH ストリームをオープン(websocket アップグレード)

topology(型付き CMDB)

メソッドパスロール説明
GET/v1/topology/node-typesanyノードタイプスキーマリスト
POST/v1/topology/node-typestopology:*ノードタイプ作成
GET/v1/topology/node-types/{name}any1 ノードタイプ取得
DELETE/v1/topology/node-types/{name}topology:*ノードタイプ削除
GET/v1/topology/nodesanyノードリスト(type、tag でフィルタ)
POST/v1/topology/nodestopology:*ノード作成
GET/v1/topology/nodes/{id}anyノード取得
PATCH/v1/topology/nodes/{id}topology:*ノード更新
DELETE/v1/topology/nodes/{id}topology:*ノード削除
GET/v1/topology/relation-typesanyリレーションタイプスキーマリスト
POST/v1/topology/relation-typestopology:*リレーションタイプ作成
GET/v1/topology/relation-types/{name}any1 リレーションタイプ取得
DELETE/v1/topology/relation-types/{name}topology:*リレーションタイプ削除
GET/v1/topology/relationsanyエッジ(リレーション)リスト
POST/v1/topology/relationstopology:*リレーション作成
GET/v1/topology/relations/{id}anyリレーション取得
PATCH/v1/topology/relations/{id}topology:*リレーション更新
DELETE/v1/topology/relations/{id}topology:*リレーション削除

alert(rules、incidents、channels)

メソッドパスロール説明
GET/v1/alert-rulesanyルールリスト
POST/v1/alert-rulesalert:*ルール作成
GET/v1/alert-rules/{id}anyルール取得
PUT/v1/alert-rules/{id}alert:*ルール置換
DELETE/v1/alert-rules/{id}alert:*ルール削除
POST/v1/alert-rules/{id}/enabledalert:*enabled フラグ反転
POST/v1/alert-rules/previewalert:*現在のデータに対しルール定義をドライラン
GET/v1/alerts/incidentsanyインシデントリスト(フィルター:status、severity、scope)
GET/v1/alerts/incidents/{id}anyインシデント取得
GET/v1/alerts/incidents/{id}/eventsanyイベントタイムライン
POST/v1/alerts/incidents/{id}/ackanyacknowledge
POST/v1/alerts/incidents/{id}/resolveanyresolved マーク
POST/v1/alerts/incidents/{id}/silenceanyN 時間サイレンス
GET/v1/alerts/incidents/{id}/investigationanyAI 生成調査レポート取得
POST/v1/alerts/incidents/{id}/investigationany調査トリガーまたは再実行
GET/v1/alerts/runtime-infoanyevaluator ペース + 直近サイクル統計
GET/v1/notification-channelsanyチャネルリスト
POST/v1/notification-channelschannel:*チャネル作成
GET/v1/notification-channels/{id}anyチャネル取得
PUT/v1/notification-channels/{id}channel:*チャネル置換
DELETE/v1/notification-channels/{id}channel:*チャネル削除
POST/v1/notification-channels/{id}/testchannel:*合成通知送信

ルールの JSON 形は アラートルールスキーマ を参照。

aiops(chat、agents、models)

メソッドパスロール説明
GET/v1/agentsanyエージェントペルソナリスト
GET/v1/agents/{name}anyペルソナ詳細取得
DELETE/v1/agents/{name}agent:*組み込み / ディスクペルソナの削除(稀。通常は custom のみ削除可能)
POST/v1/agents/customagent:*ユーザー定義ペルソナ作成
PATCH/v1/agents/custom/{name}agent:*ユーザーペルソナ更新
DELETE/v1/agents/custom/{name}agent:*ユーザーペルソナ削除
GET/v1/chat/sessionsanyセッションリスト
POST/v1/chat/sessionsanyセッション作成
PATCH/v1/chat/sessions/{id}anyセッションのリネーム / タグ付け
DELETE/v1/chat/sessions/{id}anyセッション削除
GET/v1/chat/sessions/{id}/messagesanyメッセージ履歴
POST/v1/chat/sessions/{id}/messagesanyメッセージ送信(非ストリーミング、最終返信を返す)
POST/v1/chat/sessions/{id}/messages/streamanyメッセージ送信(トークン + ツール呼び出しイベントの SSE ストリーム)
GET/v1/aiops/modelsany利用可能なプロバイダー + モデル(設定済み API キーでゲート)
POST/v1/aiops/query-translateanyLLM 支援の PromQL / LogQL / TraceQL 合成
GET/v1/aiops/mentions/searchany@edge@device@dashboard メンションのオートコンプリート
GET/v1/usage/todayany現在 UTC 日のトークン使用量

ペルソナの markdown フロントマター形は エージェントペルソナフォーマット を参照。

knowledge(RAG、vault、repos、uploads)

メソッドパスロール説明
GET/v1/knowledge/docsanyドキュメントリスト(ツリー)
POST/v1/knowledge/docsknowledge:*ドキュメント作成
GET/v1/knowledge/docs/{id}anyドキュメント取得
PATCH/v1/knowledge/docs/{id}knowledge:*ドキュメント本文編集
PATCH/v1/knowledge/docs/{id}/moveknowledge:*別パスに移動
DELETE/v1/knowledge/docs/{id}knowledge:*ドキュメント削除
GET/v1/knowledge/pathsanyパスノードリスト(ツリー用)
GET/v1/knowledge/reposanyGit リポリスト
POST/v1/knowledge/reposknowledge:*リポ登録
DELETE/v1/knowledge/repos/{id}knowledge:*リポ削除
POST/v1/knowledge/repos/{id}/syncknowledge:*再同期トリガー
POST/v1/knowledge/uploadknowledge:*.md / .txt / .pdf / .docx アップロード(docextract でパース)
GET/v1/knowledge/searchanyRAG クエリ(チャンク + スコアを返す)
POST/v1/knowledge/vault/syncknowledge:*組み込み vault を GitHub から再 pull
GET/v1/knowledge/ssh-identitiesknowledge:*Git 認証用 SSH キーリスト
POST/v1/knowledge/ssh-identitiesknowledge:*既存 SSH キー登録
POST/v1/knowledge/ssh-identities/generateknowledge:*新規キーペア生成(秘密鍵はサーバーを離れない)
PATCH/v1/knowledge/ssh-identities/{id}knowledge:*identity 編集(name、comment)
DELETE/v1/knowledge/ssh-identities/{id}knowledge:*identity 削除

skill(toolbag 内省)

メソッドパスロール説明
GET/v1/skillsanyスキルリスト(manager-scope + edge-scope)
GET/v1/skills/{key}anyスキル詳細取得(schema、description、scope、class)
POST/v1/skills/{key}/executeskill:*直接スキル実行(テスト / デバッグ)

ディスク上の skill.json の形は スキルマニフェスト を参照。

logs / traces(読み取り専用プロキシ)

メソッドパスロール説明
GET/v1/logs/query_rangeanyプロキシ LogQL query_range
GET/v1/logs/labelsanyプロキシ label-names
GET/v1/logs/labels/{name}/valuesanyプロキシ label-values
GET/v1/traces/searchanyプロキシ TraceQL /api/search
GET/v1/traces/{trace_id}anyID で 1 トレース
GET/v1/traces/tags/{tag}/valuesanyプロキシ /api/search/tag/.../values

monitor(dashboards / panels)

メソッドパスロール説明
GET/v1/monitor/panelsanyパネルリスト
POST/v1/monitor/panelsmonitor:*パネル作成
PATCH/v1/monitor/panels/{id}monitor:*パネル編集
DELETE/v1/monitor/panels/{id}monitor:*パネル削除
GET/v1/observability/dashboards/{uid}anyレンダー準備済み Grafana ダッシュボード JSON

metric(edge ごとメトリクススナップショット)

メソッドパスロール説明
GET/v1/edges/{id}/metricsany最新のクローズドセットホストメトリクススナップショット

prometheus(admin)

メソッドパスロール説明
POST/v1/prometheus/launchadmin組み込み Prometheus を(再)起動
POST/v1/prometheus/query_rangeanyLLM ツール向け query_range(正規化された行列を返す)

imbridge(チャット画面 —— Slack / Telegram / Lark / DingTalk / WeCom)

メソッドパスロール説明
GET/v1/im/appsany接続された IM アプリのリスト
POST/v1/im/appsim:*IM アプリ登録
GET/v1/im/apps/{id}anyアプリ取得
PUT/v1/im/apps/{id}im:*アプリ更新
DELETE/v1/im/apps/{id}im:*アプリ削除
POST/v1/im/apps/{id}/revealadminマスクされた secret を表示

marketplace(スキルパック)

メソッドパスロール説明
GET/v1/marketplace/registriesany設定済みレジストリのリスト
GET/v1/marketplace/installedanyインストール済みパックのリスト
POST/v1/marketplace/installmarketplace:*レジストリからパックをインストール
DELETE/v1/marketplace/installed/{pack_id}marketplace:*パックアンインストール

setting(システム設定:integration、デフォルト、secrets)

メソッドパスロール説明
GET/v1/system-settingsany可視設定リスト
PUT/v1/system-settings/{category}/{key}admin設定 upsert
DELETE/v1/system-settings/{category}/{key}admin設定削除
GET/v1/system-settings/{category}/{key}/revealadminマスクされた secret を表示

integration(接続テスト)

メソッドパスロール説明
POST/v1/integrations/grafana/syncadminダッシュボード + データソース同期
POST/v1/integrations/grafana/testadminGrafana 接続テスト
POST/v1/integrations/llm/invalidateadminキャッシュ LLM クライアントを無効化(API キー再読み込み強制)
POST/v1/integrations/loki/testadminLoki 接続テスト
POST/v1/integrations/prom/testadminPrometheus 接続テスト
POST/v1/integrations/tempo/testadminTempo 接続テスト
POST/v1/integrations/websearch/testadminSearXNG / web-search バックエンドテスト

webshell(トンネル越しの対話的シェル)

メソッドパスロール説明
GET/v1/devices/{device_id}/shellwebshellWebSocket アップグレード SSH ストリームを開く
GET/v1/webshell/sessionsanyアクティブセッションリスト
DELETE/v1/webshell/sessions/{id}webshellセッション強制終了

audit(admin log)

メソッドパスロール説明
GET/v1/admin/audit-logsadminテナント全体の監査証跡(HLD-010)

ページング

リストエンドポイントは opaque カーソルを使用:

text
GET /v1/edges?limit=50&cursor=eyJpZCI6MTAwMH0

レスポンスは {"items":[...], "next_cursor":"...", "total":...} を持ちます。next_cursor は最後のページで空。

レート制限

オープンソースビルドにグローバルレート制限はありません。LLM バジェットゲート(ONGRID_LLM_DAILY_TOKEN_LIMIT)がチャットトラフィックを制限します —— それ以外のエンドポイントは manager の前に置いたもの(nginx、自前ゲートウェイ)に依存します。

バージョニング

GET /v1/version{"manager_version":"vX.Y.Z"} を返します。SPA がこれを読み、エージェントバージョンが manager からドリフトした edge をフラグします。アップグレードツールに使用してください。

関連