PipelineDocs
GitHub
Docs / リファレンス / REST API

REST API リファレンス

FastAPI が /docs で OpenAPI Swagger UI を、/openapi.json でスキーマを自動配信します。全ての業務エンドポイントは /api/v1/... 配下です (既定 http://localhost:8000)。以下は主要なものです。

システム

methodpath説明
GET/api/v1/health軽量ヘルスチェック (LB用)。{ok, version}
GET/api/v1/statusversion / mode / db_url / now。
GET/api/v1/runs?limit=N全 workload 横断の直近N件の run (最大1000)。

ワークロード

methodpath説明
GET/api/v1/workloads一覧を取得。
POST/api/v1/workloads新規作成 (slug 重複は409)。
GET/api/v1/workloads/{slug}1件取得。
PUT/api/v1/workloads/{slug}更新。
PATCH/api/v1/workloads/{slug}/enabledenabled をトグル。
PATCH/api/v1/workloads/{slug}/supervisor_enabledsupervisor 介入の許可をトグル。
DELETE/api/v1/workloads/{slug}削除 (204)。
POST/api/v1/workloads/{slug}/tasksタスクを1件投入。
POST/api/v1/workloads/{slug}/tasks/batchバルク投入 (最大10000)。
GET/api/v1/workloads/{slug}/queuestate 別のキュー件数。
GET/api/v1/workloads/{slug}/queue/peekキュー行を覗く (limit/offset/state)。
POST/api/v1/workloads/{slug}/queue/reset-failedfailed を pending に戻す。
GET/api/v1/workloads/{slug}/runs?limit=Nrun 履歴 (最大500)。

ワーカー

methodpath説明
GET/api/v1/workers一覧を取得。
GET/api/v1/workers/cpuworker/host 別 CPU% + クラスタ最大。
GET/api/v1/workers/metrics?minutes=NGPU メトリクス時系列。
POST/api/v1/workers/{id}/restartSSH で worker を再起動 (watchdog)。
POST/api/v1/workers/{id}/filterworker の workload filter を変更 (replace/add/remove)。
GET/api/v1/workers/elastic/inventorysystemd instance の棚卸し。
POST/api/v1/workers/elastic/spawnworker instance を起動。
POST/api/v1/workers/elastic/stopworker instance を停止。

この他、worker daemon が使う内部エンドポイント (heartbeat / claim / complete / fail / runs / config poll / admin-cmd) が /api/v1/workers/{id}/... 配下にあります。

Dashboard / Flow

methodpath説明
GET/api/v1/dashboard/overviewrunning / recent_failures / queue_depths の集約。
GET/api/v1/dashboard/workloads-runs-summary各 workload の直近20件の成否 (sparkline用)。
GET/api/v1/flow/snapshotフロー図のノード + エッジ全体スナップショット。
GET/api/v1/flow/rates?since_min=N&slug=&metric=1分バケットのレート時系列 (最大2880分)。
POST/api/v1/flow/layoutノード配置を YAML に保存。

プラグイン

methodpath説明
GET/api/v1/plugins/availableプラグイン一覧 + manifest。
GET/PUT/DELETE/api/v1/plugins/{slug}/state/{key}プラグインの JSON 状態を保存/取得/削除。
GET/PUT/DELETE/api/v1/plugins/{slug}/blob/{key}バイナリ blob (最大5MB) を保存/取得/削除。
GET/api/v1/plugins/{slug}/web/{path}プラグイン同梱の静的 UI (panel.html 等) を配信。

その他

methodpath説明
GET/api/v1/agentsエージェント一覧 (desired + 最新 report)。
POST/api/v1/agents/{host}/syncエージェントが VRAM/子プロセス状態を報告し desired を受領。
GET/api/v1/settings設定一覧 (secret はマスク)。
POST/api/v1/settings/llm/testLLM 接続テスト。
GET/api/v1/service-logsサービスログの取得 (host/service/min_level 等でフィルタ)。
POST/GET/api/v1/admin/deployデプロイの実行 / 履歴。
GET/api/v1/minio/{key}許可プレフィックスの MinIO オブジェクトをプロキシ配信 (サムネ等)。

リクエスト/レスポンス例

代表的なボディの形です。正確な全フィールドは /openapi.json が権威です。

ワークロードを作る (POST /workloads)

ボディは WorkloadCreate (未知キーは拒否)。最小構成の例:

curl -X POST http://localhost:8000/api/v1/workloads \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "url-check",
    "name": "URL Check",
    "enabled": true,
    "executor_type": "python_module",
    "executor_config": {
      "source_path": "plugins/url_check",
      "module": "main",
      "init_kwargs": { "timeout_secs": 10 }
    },
    "priority": 100,
    "batch_size": 10,
    "lease_secs": 300,
    "max_attempts": 5
  }'

成功は 201 で作成された workload を返します。slug が既存なら 409 です。

キュー件数を見る (GET /workloads/{slug}/queue)

{ "pending": 3, "claimed": 1, "failed": 0, "total": 4 }

run 履歴を見る (GET /workloads/{slug}/runs)

1件の run は概ね次の形です (成功なら output_json、失敗なら error/stderr が入ります)。

{
  "runs": [
    {
      "run_id": 1287,
      "pk": "https://example.com",
      "attempt": 1,
      "success": true,
      "worker_id": "host-a:12345",
      "started_at": "2026-07-11T09:00:01Z",
      "duration_ms": 83,
      "output_json": { "url": "https://example.com", "status": 200, "bytes": 1256 },
      "stdout": "", "stderr": "", "error": null
    }
  ]
}

典型的な自動化フロー

外部システムから使う場合の定番は「投入 → ポーリング」です。

① POST /workloads/{slug}/tasks/batch   … 対象をまとめて投入
② GET  /workloads/{slug}/queue         … pending が捌けるのを監視
③ GET  /workloads/{slug}/runs?limit=N  … 結果 (output_json) を回収
④ POST /workloads/{slug}/queue/reset-failed … 失敗分をまとめて再試行 (必要なら)

タスク投入例

curl -X POST http://localhost:8000/api/v1/workloads/echo-sample/tasks \
  -H "Content-Type: application/json" \
  -d '{"pk": "task-001", "extra": {"foo": "bar"}}'

バルク投入例

curl -X POST http://localhost:8000/api/v1/workloads/echo-sample/tasks/batch \
  -H "Content-Type: application/json" \
  -d '{"items": [{"pk": "t1"}, {"pk": "t2"}, {"pk": "t3"}]}'
対話的に叩くなら http://localhost:8000/docs の Swagger UI が便利です。全エンドポイントの正確な body スキーマは /openapi.json が権威です。
Pipeline — GUI-first batch fleet · ぱっぷすラボ GitHub · ホーム