Webhook 通知
Takumi API では、診断などのワークフロー完了時に Webhook で通知を受け取ることができます。これにより、ポーリングを行わなくてもワークフローの完了を検知し、結果の取得や後続 処理を自動的に開始できます。
ワークフロー完了イベント
ワークフローの実行が完了すると、指定した Webhook エンドポイントに以下の形式で HTTP POST リクエストが送信されます。イベントの type は api.workflow_run.exited です。
{
"type": "api.workflow_run.exited",
"timestamp": "2000-01-01T00:00:00Z",
"data": {
"workflow_id": "whitebox-assessment",
"workflow_run_id": "TWR..."
}
}
data.workflow_run_id を使ってワークフロー実行を特定し、/o/{org_id}/workflows/{workflow_id}/describe エンドポイントで結果を取得できます。
Webhook エンドポイントの指定方法
ワークフロー実行 API (/o/{org_id}/workflows/{workflow_id}/dispatch) のリクエストボディで notification.webhook_endpoint_ids にエンドポイント ID を指定すると、そのワークフロー完了時に通知が送られます。
{
"input": { /* ... */ },
"notification": {
"webhook_endpoint_ids": ["WH..."]
}
}
Webhook の仕様
イベントが発生した場合に、指定された Webhook エンドポイントに対して HTTP POST リクエストが送信されます。
リクエストボディは以下の構造を持ちます。
{
"type": "{イベント種別}",
"timestamp": "2024-01-01T00:00:00Z",
"data": {/* イベントに応じたデータ */}
}
Webhook エンドポイントは 10 秒以内に HTTP 2xx ステータスコードを返すことで、リクエストの受信成功を示す必要があります。ステータスコードが 3xx の場合は失敗として扱われ、リダイレクト先にリクエストは送られません。
リクエスト送信に失敗した場合(非 2xx レスポンス、タイムアウト、ネットワークエラーなど)、本サービスは自動的にリトライを行います。
Webhook の配送は at-least-once であり、同一イベントが複数回配送される場合があります。各リクエストには webhook-id ヘッダーが付与されており、同一の webhook-id を持つリクエストは同一イベントの再送です。エンドポイントは webhook-id を用いて冪等に実装することをお勧めします。