本文へ移動

フォルダWebhook

外部から送信されるファイルを、指定したフォルダに自動的に受け取れます。フォルダごとに固有の受信アドレスが作成され、外部からそのアドレスにデータを送信すると、フォルダに自動的に保存されます。


始める前に

  • 管理者設定:Webhookの設定で、インバウンドWebhookを使用するとユーザーAPIキー発行を許可するの両方をオンにする必要があります。

フォルダにWebhookを作成する

  1. Webhookを受信するフォルダの名前の横にある設定(⚙️)アイコンを選択します。 フォルダ設定
  2. ウェブフック受信タブで追加ボタンを選択します。
  3. 認証方式と競合ポリシーを選択します。どちらの値も、以下で詳しく説明します。 Webhookの作成
  4. 作成ボタンを選択すると、フォルダ専用の固有の受信アドレス(エンドポイントURL)が作成されます。Secureを選択した場合は、署名シークレット(signing secret)も一緒に作成されます。これらの値はこのときだけ表示され、あとから再確認することはできないため、安全な場所にコピーしておきます。 Simple認証で作成したWebhook
  5. 画面に表示された受信アドレスとサンプルのガイドに従って、外部システムでWebhookを設定します。認証方式ごとのリクエスト例は、下記の「認証方式を選択する」で確認します。
  6. Webhookが設定されたフォルダには、:icon{name="webhooks-logo"}アイコンが表示されます。

認証方式を選択する

Webhookを作成するときに、SimpleとSecureのどちらかを選択します。

認証方式動作
Simple受信アドレス(URL)そのものが認証情報です。別途署名を付けなくても、発行されたアドレスにPOSTリクエストを送信するだけでファイルが保存されます。
SecureリクエストごとにHMAC署名を計算し、X-Webhook-Timestamp、X-Webhook-Nonce、X-Webhook-Signatureヘッダーに設定して一緒に送信する必要があります。受信アドレスが外部に漏れても、署名のないリクエストは拒否されます。

Simpleで作成したWebhookは、URLだけでリクエストを送信できます。

# マルチパート形式でファイルをアップロード
curl -i -X POST "https://<受信アドレス>?filename=photo.jpg" \
  -F "file=@./photo.jpg"

Secureで作成したWebhookでは、リクエスト本文(マルチパート本文全体を、境界とパートヘッダーまで含めてSHA-256でハッシュした値)を署名に含める必要があります。 Secure Webhookの設定画面

# マルチパート形式でファイルをアップロード(HMAC署名付き)
TS=$(date +%s)
NONCE=$(cat /proc/sys/kernel/random/uuid)
BOUNDARY="------------------------$(cat /proc/sys/kernel/random/uuid)"
TMP=$(mktemp /tmp/multipart.XXXXXX)

# マルチパート本文を先に作成し、その本文をハッシュします。
printf -- --%s$'\r\n' "$BOUNDARY" > "$TMP"
printf 'Content-Disposition: form-data; name="file"; filename="photo.jpg"' >> "$TMP"
printf $'\r\n' >> "$TMP"
printf 'Content-Type: application/octet-stream' >> "$TMP"
printf $'\r\n\r\n' >> "$TMP"
cat ./photo.jpg >> "$TMP"
printf $'\r\n' >> "$TMP"
printf -- --%s--$'\r\n' "$BOUNDARY" >> "$TMP"

BODY_SHA=$(sha256sum "$TMP" | awk '{print $1}')
SIG=$(printf 'POST\n<受信パス>\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA" \
  | openssl dgst -sha256 -hmac "$SECRET" -binary | xxd -p -c 256)

curl -i -X POST "https://<受信アドレス>?filename=photo.jpg" \
  -H "Content-Type: multipart/form-data; boundary=$BOUNDARY" \
  -H "X-Webhook-Timestamp: $TS" \
  -H "X-Webhook-Nonce: $NONCE" \
  -H "X-Webhook-Signature: sha256=$SIG" \
  --data-binary @"$TMP"

rm -f "$TMP"

競合ポリシーを選択する

同じ名前のファイルをもう一度受信したときの処理方法を決めます。Webhookを作成するときに選択し、作成後も同じ画面で調整し直して適用を選択すると変更できます。

ポリシー動作
拒否同じ名前のファイルがある場合、新しく受信したファイルを保存しません。
上書き既存のファイルを、新しく受信したファイルに置き換えます。
名前を変更既存のファイルはそのまま残し、新しく受信したファイルを別の名前で保存します。

ファイル名を指定する

アップロードするファイルの名前は、次の2つの方法のどちらかで指定します。

  • クエリパラメータ:?filename=report.json
  • HTTPヘッダー:X-Webhook-Filename: report.json

ファイル名の指定方法

サブフォルダに保存する

Webhookで受信したファイルは、Webhookを作成したフォルダの直下に保存されます。ファイル名にサブパスを付けて、そのフォルダの下のサブフォルダに保存するには、Webhookのサブフォルダーへの保存をオンにします。

  1. Webhookの一覧で、設定するWebhookを展開します。
  2. サブフォルダーへの保存で許可を選択します。
  3. 適用を選択します。

ファイル名には、Webhookのフォルダを基準にした相対パスを指定します。存在しないフォルダは自動的に作成されます。

  • クエリパラメータ:?filename=releases/1.0/a.zip
  • HTTPヘッダー:X-Webhook-Filename: releases/1.0/a.zip
ルール説明
深さと長さサブフォルダは最大8階層まで、名前は1つあたり255バイトまで使用できます。
使用できないパス..を含む名前、/で始まるパスや/で終わるパス、バックスラッシュ(\)、.で始まるフォルダ名は拒否されます。
パスを指定する場所サブパスは、クエリパラメータまたはヘッダーでのみ指定します。multipart/form-dataのファイル項目の名前に書いたフォルダは使用されません。

受信したデータを確認する

外部から送信されたデータは、フォルダにファイルとして蓄積されます。フォルダを開いて受信内容を確認します。

Webhookの一時停止と削除

  • フォルダで、Webhookを一時停止または削除できます。一覧でWebhookにマウスポインターを合わせると、一時停止・削除ボタンが表示されます。 Webhook一覧の一時停止・削除ボタン
  • 自分がどのフォルダにWebhookを設定したかは、アカウント設定の自分のWebhookタブでひと目で確認できます。この一覧からも、Webhookを一時停止または削除できます。

自分のWebhook

活用例

  • Webサイト/画面のモニタリング:Zapier、n8n、Makeなどで定期的にキャプチャしたWebサイトのスクリーンショットを自動的にフォルダへ蓄積し、変更履歴を追跡できます。
  • 業務自動化の成果物の保存:RPAや自動化ツールで生成したレポート、請求書、PDFなどを、人手を介さずにそのままフォルダへ保存します。
  • フォーム送信の添付ファイルの収集:Googleフォーム、Typeformなどで送信された添付ファイルを、自動的に1つのフォルダに集められます。
  • ビルド/デプロイ成果物の保存:CI/CDパイプラインで生成されたビルドアーティファクトやテストレポートを自動的に受け取れます。

関連ドキュメント