メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt

Use this file to discover all available pages before exploring further.

ストアに Webhook エンドポイントを追加します。各ストアでは、すべてのチャネルにわたって最大 20 個の Webhook を持つことができます。
POST /v1/actions/store/add-webhook
認証: API Key(owner または admin ロールが必要)

リクエストボディ

フィールド必須説明
storeIdstringYesStore ID(Short ID フォーマット STO_xxx
channelstringYeshttpfeishudiscordtelegramslack のいずれか
urlstringYesWebhook 送信先 URL(HTTPS。マーチャントは URL が選択したチャネルと一致することを保証)
eventsstring[]Yes購読するイベントタイプ — 例:["order.completed", "refund.succeeded"]。空配列の場合、この Webhook にはイベントが配信されません。
testModebooleanYestrue = テストトランザクションで発火、false = 本番で発火
secretstring | nullNoチャネル固有の認証情報(例:Telegram の chat_id)。不透明なテキストとして保存されます。

リクエスト例

import { WaffoPancake } from "@waffo/pancake-ts";

const client = new WaffoPancake({
  merchantId: process.env.WAFFO_MERCHANT_ID!,
  privateKey: process.env.WAFFO_PRIVATE_KEY!,
});

// Standard HTTPS webhook (RSA-signed envelope)
const { webhook } = await client.webhooks.add({
  storeId: "STO_2aUyqjCzEIiEcYMKj7TZtw",
  channel: "http",
  url: "https://example.com/webhooks/pancake",
  events: ["order.completed", "refund.succeeded"],
  testMode: false,
});

成功レスポンス (200)

{
  "data": {
    "webhook": {
      "id": "11111111-2222-3333-4444-555555555555",
      "storeId": "uuid-of-store",
      "channel": "http",
      "url": "https://example.com/webhooks/pancake",
      "events": ["order.completed", "refund.succeeded"],
      "testMode": false,
      "secret": null,
      "createdAt": "2026-05-07T00:00:00.000Z",
      "updatedAt": "2026-05-07T00:00:00.000Z"
    }
  }
}
返される webhook.id は UUID であり、Short ID ではありません — Webhook ID は IdPrefix のスコープに含まれません。update-webhook および remove-webhook にはそのまま渡してください。

レスポンスフィールド

フィールド説明
idstringWebhook UUID
storeIdstring所属ストアの UUID
channelstringWebhook チャネル(httpfeishudiscordtelegram、または slack
urlstring送信先 Webhook URL
eventsstring[]購読するイベントタイプ
testModebooleantrue はテストトランザクションで発火、false は本番で発火
secretstring | nullチャネル固有の認証情報(不透明テキスト)、未設定の場合は null
createdAtstring作成タイムスタンプ(ISO 8601)
updatedAtstring最終更新タイムスタンプ(ISO 8601)

エラーレスポンス

ステータス説明
400channel が許可リストにない、url が有効な HTTPS URL でない、events が文字列配列でない、secret が string/null でない、またはストアの Webhook 数が既に 20 に達している
403呼び出し元がストアの owner または admin ではありません