コンテンツにスキップ

Playbook API

共通仕様

認証・エラー形式・レート制限・共通ヘッダーは API 概要・認証 を参照してください。

Playbook(自動化ワークフロー)の管理と実行を行う API です。 Playbook はユーザーが定義したノードを順に実行します。 ワークフロー実行基盤がスケジュールとトリガーに応じて起動します。


Playbook 一覧取得

GET /api/user/<user_id>/playbook/

レスポンス例:

[
  {
    "id": "pb-001",
    "name": "Slack Alert Notification",
    "trigger": [{"type": 104, "schedule": "*/5 * * * *"}],
    "version": 3,
    "updated_at": "2025-01-15T10:30:00Z"
  }
]

Playbook 作成

POST /api/user/<user_id>/playbook/

リクエストボディ:

{
  "name": "Block Malicious IP",
  "conditions": [
    {
      "type": 1,
      "name": "check_ip",
      "code": "import requests\nresponse = requests.get(f'https://api.abuseipdb.com/api/v2/check?ipAddress={input_data[\"ip\"]}')\noutput = response.json()"
    }
  ],
  "trigger": [],
  "environment_variables": [
    {"key": "API_KEY", "value": "your-api-key"}
  ]
}

Playbook 詳細取得

GET /api/user/<user_id>/playbook/<playbook_id>/

Playbook 更新

PUT /api/user/<user_id>/playbook/

Playbook 削除

DELETE /api/user/<user_id>/playbook/

編集申請と承認

Playbook のノード編集は、即時反映ではなく「編集申請 → 承認 → 反映」の流れで行います。 状態は pending(承認待ち)/ applied(反映済)/ rejected(却下)/ cancelled(取下げ)です。

旧 edit エンドポイントは廃止

POST /api/user/<user_id>/playbook/<playbook_id>/edit/410 Gone を返します。 以下の編集申請エンドポイントを使用してください。

編集申請の作成

POST /api/user/<user_id>/playbook/<playbook_id>/edit-request/

リクエストボディ:

{
  "client_version_number": 3,
  "operations": [ { "type": "...", "target_name": "...", "value": {} } ],
  "comment": "承認者向けの補足"
}

レスポンスには request_id と、変更の影響プレビューtarget_scope:差分、適用前後の対象ケース件数、サンプル等)が含まれます。

編集申請の一覧

GET /api/user/<user_id>/playbook/edit-requests/

クエリパラメータ: statusrequester_uuidme 可)、approver_uuidme 可)、playbook_idoffsetlimit(最大 200)

編集申請の詳細

GET /api/user/<user_id>/playbook/edit-requests/<request_id>/

?refresh=true を付けると、pending の申請は影響プレビューを再計算します。

承認 / 却下 / 取下げ

POST /api/user/<user_id>/playbook/edit-requests/<request_id>/approve/   # 申請者本人以外
POST /api/user/<user_id>/playbook/edit-requests/<request_id>/reject/    # body: {"reason": "..."}
POST /api/user/<user_id>/playbook/edit-requests/<request_id>/cancel/    # 申請者本人のみ

権限分離

自分が出した編集申請を自分で承認することはできません。


Playbook 実行

Playbook を手動で実行します。

POST /api/user/<user_id>/playbook/<playbook_id>/execute/

リクエストボディ:

{
  "trigger_type": 1,
  "trigger_id": 123
}

Webhook トリガー

外部システムから Playbook をトリガーします。

POST /api/user/<user_id>/playbook/<playbook_id>/webhook/

任意の JSON ボディを送信できます。 送信したボディは Playbook 内で input_data として参照できます。


実行履歴

履歴一覧

GET /api/user/<user_id>/playbook/<playbook_id>/histories/

レスポンス例:

[
  {
    "id": "hist-001",
    "execution_id": "exec-abc-123",
    "status": "success",
    "start_time": "2025-01-15T10:30:00Z",
    "end_time": "2025-01-15T10:30:05Z"
  }
]

履歴詳細

GET /api/user/<user_id>/playbook/<playbook_id>/history/<history_id>/

レスポンス例:

{
  "id": "hist-001",
  "execution_id": "exec-abc-123",
  "status": "success",
  "start_time": "2025-01-15T10:30:00Z",
  "end_time": "2025-01-15T10:30:05Z",
  "logs": [
    {"node": "check_ip", "output": {"score": 95}, "status": "success"},
    {"node": "block_ip", "output": {"blocked": true}, "status": "success"}
  ]
}

バージョン管理

バージョン一覧

GET /api/user/<user_id>/playbook/<playbook_id>/versions/

特定バージョン取得

GET /api/user/<user_id>/playbook/<playbook_id>/version/<version_id>/

環境変数

一覧取得

GET /api/user/<user_id>/playbook/<playbook_id>/environments/

更新

PUT /api/user/<user_id>/playbook/<playbook_id>/environments/

リクエストボディ:

{
  "key": "SLACK_TOKEN",
  "value": "xoxb-xxx-xxx"
}

削除

DELETE /api/user/<user_id>/playbook/<playbook_id>/environments/

特定の環境変数取得

GET /api/user/<user_id>/playbook/<playbook_id>/environment/<key>/

Playbook マージ

2 つの Playbook を 1 つに統合します。

POST /api/user/<user_id>/playbook/<playbook_id>/merge/<target_id>/

自動テスト

テスト設定取得

GET /api/user/<user_id>/playbook/<playbook_id>/autotest/

テスト設定更新

PUT /api/user/<user_id>/playbook/<playbook_id>/autotest/

テスト実行

POST /api/user/<user_id>/playbook/<playbook_id>/autotest/execute

ノードタイプ

Playbook のノードは conditions 配列内で定義されます。

type 説明
1 Action - 処理の実行
2 Condition (If/Else) - 条件分岐
4 Loop - 繰り返し処理

Condition ノード構造

{
  "type": 2,
  "name": "check_severity",
  "code": "output = input_data['severity'] == 'high'",
  "true": [
    {"type": 1, "name": "escalate", "code": "..."}
  ],
  "false": [
    {"type": 1, "name": "log_only", "code": "..."}
  ]
}

トリガータイプ

type 説明 設定
104 スケジュール schedule フィールドに cron 式