# Webhook

Source: https://openflow.run/ja/docs/nodes/webhook/
Language: ja
Product version: 0.1.0-beta.77

HTTP リクエストからワークフローを開始し、応答の内容とタイミングを選択します。

Webhook は HTTP リクエストを実行の入口にします。Webhook のエンドポイントを公開できる環境にフローを公開してください。

## リクエストを定義する

HTTP メソッドとリクエストボディのフィールドを選択します。公開編集インターフェースは `config.body` で名前付きフィールド定義を受け付けます。

```json
{
  "op": "node.add", "as": "webhook", "type": "webhook", "name": "Receive a ticket",
  "config": {
    "method": "POST",
    "body": { "message": { "schema": { "type": "string" }, "nullable": false } }
  }
}
```

リクエストデータは、トリガーが定義する出力から取得できます。ボディのフィールドは `body` 出力から直接のフィールド名で選びます。任意の下流入力に自動で値がバインドされるわけではありません。

## 応答モードを選ぶ

*   **即時応答**：`options.responseBody` を省略し、設定済みの即時応答を使います。
*   **ワークフロー出力**：`kind: "workflow-outputs"` を選ぶと、実行全体の成功を待って Outputs 全体または指定フィールドを返します。
*   **応答ノード**：`kind: "webhook-response"` と到達可能なノードを選び、その最初の成功時に返答します。

POST Webhook が message を Code に渡します。Webhook Response は後続処理を待たずに受領確認を返します。

**入力**
POST ボディ：{"message":"Please check my order"}

**想定される結果**
HTTP 202、本文 "Received: Please check my order"、ヘッダー X-Workflow: ticket-intake。

**実行前の準備**
外部から到達できる Webhook URL を持つ環境でフローを公開してください。

[ワークフローをダウンロード](https://openflow.run/docs/examples/webhook-response.openflow.json)

## 動的応答の制限

動的応答のタイムアウトは 1,000–60,000 ミリ秒、デフォルトは 30,000 ミリ秒です。キューと待機の時間も含みます。HTTP がタイムアウトしても、受け付け済みの実行は取り消されません。

ワークフロー出力モードでは、文字列はテキスト、他の JSON 値は JSON で返します。選択した出力がない場合や、実行が成功しなかった場合はエラーです。仕様上の制約に従い、ステータスとヘッダーもワークフロー出力から選べます。

モードの切り替えには明示的なフィールド解除を使います。固定の応答本文、ステータス、ヘッダーは、無効な間も設定が残る場合があります。入れ子の 1 フィールドを消しても、他の応答ポリシーまで消えるとは限りません。

CORS、ヘッダー制限、リクエスト上限、公開オリジンはデプロイ側の規則に従います。早期応答は [Webhook Response](https://openflow.run/ja/docs/nodes/webhook-response/index.md) を参照してください。

## 参照元

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md#webhook-http-responses)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#trigger-configuration-and-outputs)
*   [packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts)
