本文へスキップ
Sursa Developers

POST/v1/webhooks

Webhookを作成する

create_webhook

URLはhttpsを使い、そのホストは公開アドレスに解決される必要があります。プライベート(RFC 1918)、ループバック、リンクローカル、クラウドのメタデータ、その他の特殊用途のネットワークは、登録時にも接続のたびにも拒否されます。署名シークレットはレスポンスで一度だけ表示されます(secret)。その後はローテーションしかできません。組織で作成できるWebhookは最大20件です。

購読には、イベントタイプとドメインマスク(card.*、*)を列挙します。アクセスはAPIキーと同じ方法で設定します:role、data_profile_id、collection_idsです。ロール、データプロファイル、コレクションの範囲でアクセスできないオブジェクトに関するイベントは配信されません。tagsは、カードのイベントを、いずれかのタグを持つカードに限定します。payload: thinはdataなしでイベントを送信します。カスタムヘッダー(headers)と送信時の認可(auth)は暗号化して保存されます。レスポンスに含まれるのは、ヘッダーの名前と、フラグvalue_setとauth_setだけです。

認証

AuthorizationヘッダーでAPIキーを送信します:Authorization: Bearer <キー>。

ヘッダーパラメーター

  • Idempotency-Keystring

    書き込みを安全に再試行するためのキー:1〜255文字の印字可能なASCII文字で、論理的な操作ごとにUUID v4を使うことを推奨します。同じキーで24時間以内に再試行しても操作は再実行されず、保存済みのレスポンス(ステータス、ヘッダー、ボディ)がIdempotency-Replayed: trueヘッダー付きで返されます。同じキーでメソッド、パス、Content-Type、ボディのいずれかが異なる場合は409 api.idempotency_mismatchを返し、最初のリクエストがまだ実行中の場合は409 api.idempotency_in_progressをRetry-After: 1付きで返します。5xxまたは429のレスポンスの後はキーが解放され、再試行で操作がもう一度実行されます。キーの有効範囲は、組織と呼び出し元(APIキー、ユーザー、カスタムソースのソースキー)の組み合わせです。

    length ≥ 1, length ≤ 255

リクエストボディ

application/json

オブジェクト:WebhookCreate

  • urlstring必須

    受信先URL。https://のみ、最大2048文字。

    length ≤ 2048

  • descriptionstring

    length ≤ 200

  • eventsarray of WebhookEventFilter必須

    items ≥ 1

  • data_profile_idinteger | null
  • collection_idsarray of integer

    Webhookがイベントを受信するコレクション。値なしまたは空のリストは、ロールとデータプロファイルで利用できるすべてのコレクションを意味します。コレクションに限定されたキー自体がWebhookを作成できるのは、自身のコレクションからなる空でないリストを指定した場合だけです。このフィールドがない場合、空のリストの場合、またはそのリストにないコレクションを含む場合、リクエストは403 webhooks.collections_outside_keyを返します。

    items ≤ 200

  • tagsarray of string

    items ≤ 50

  • headersarray of WebhookHeaderInput

    items ≤ 10

レスポンス

201作成しました。`secret`が表示されるのはこのときだけです。

レスポンスヘッダー

  • RateLimit-Policy

    適用中の制限。IETFのドラフトdraft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。

  • RateLimit

    RateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。

  • X-RateLimit-Limit

    RateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。

  • X-RateLimit-Remaining

    最も厳しい制限での残りのリクエスト数。

  • X-RateLimit-Reset

    最も厳しい制限がリセットされるまでの秒数。

  • Idempotency-Replayed

    trueは、このIdempotency-Keyの保存済みのレスポンスが再送されたことを示します:操作は再実行されていません。

application/json

オブジェクト:WebhookCreated

  • idinteger必須
  • urlstring必須
  • descriptionstring必須
  • eventsarray of WebhookEventFilter必須
  • activeboolean必須
  • statusWebhookStatus必須
  • paused_atstring (date-time) | null
  • paused_reasonstring | null

    failures:10回連続で配信試行が失敗した。feature_disabled:プランにWebhookが含まれていない。

  • disabled_reasonstring | null

    gone:受信サーバーが410を返した。manual:管理者が無効にした。

    指定できる値: gonemanualnull

  • disabled_atstring (date-time) | null
  • roleWebhookRole必須
  • data_profile_idinteger | null

    Webhookのデータプロファイル(nullはプロファイルなしを意味し、同じロールのAPIキーと同じ扱いです)。

  • collection_idsarray of integer必須

    Webhookがイベントを受け取る対象のコレクション。空の場合は、ロールとデータプロファイルで利用できるすべてのコレクション。

  • tagsarray of string必須

    これらのタグのいずれかを持つカードについてのカードイベントのみ。空の場合はフィルターなし。

  • payloadWebhookPayloadMode必須
  • headersarray of WebhookHeader必須
  • auth_typestring | null

    送信時の認可の種類(nullはなしを意味します)。

    指定できる値: bearerbasicnull

  • auth_setboolean必須

    送信時の認可が設定されているかどうか(値は返されません)。

  • previous_secret_valid_untilstring (date-time) | null

    配信が以前のシークレットでも署名される期限(nullは並行期間がないことを意味します)。

  • consecutive_failuresinteger必須
  • last_delivery_atstring (date-time) | null
  • last_success_atstring (date-time) | null
  • last_errorstring | null
  • created_byinteger | null
  • created_by_namestring | null
  • created_atstring (date-time)必須
  • updated_atstring (date-time)必須
  • secretstring必須

    whsec_の後に、base64でエンコードされた32バイトが続きます(新しいシークレットはパディング付きの標準のアルファベット、古いものはbase64urlを使います)。受信サーバー側に保存してください。APIのレスポンスに再び現れることはありません。Standard Webhooksの署名キーは、whsec_の後の部分をbase64でデコードしたものです。

  • previous_valid_untilstring (date-time) | null

    以前のシークレットが引き続き受け入れられる期限(ローテーション後)。作成時はnull。

400リクエストが無効です:パラメーターの値またはオブジェクトの状態により、この操作を実行できません(`detail`はメッセージ)。

レスポンスヘッダー

  • RateLimit-Policy

    適用中の制限。IETFのドラフトdraft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。

  • RateLimit

    RateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。

  • X-RateLimit-Limit

    RateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。

  • X-RateLimit-Remaining

    最も厳しい制限での残りのリクエスト数。

  • X-RateLimit-Reset

    最も厳しい制限がリセットされるまでの秒数。

401認証情報が送信されていない(セッションCookieもAPIキーもない)か、キーが見つかりません。

レスポンスヘッダー

  • RateLimit-Policy

    適用中の制限。IETFのドラフトdraft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。

  • RateLimit

    RateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。

  • X-RateLimit-Limit

    RateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。

  • X-RateLimit-Remaining

    最も厳しい制限での残りのリクエスト数。

  • X-RateLimit-Reset

    最も厳しい制限がリセットされるまでの秒数。

403この操作は許可されていません:ロールの権限が足りない、コレクションやカードへのアクセス権がない、リクエストが「View as」モードで実行されている、または組織が停止中か削除済みです(`detail`は`code: org_suspended | org_deleted`を持つオブジェクト)。

レスポンスヘッダー

  • RateLimit-Policy

    適用中の制限。IETFのドラフトdraft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。

  • RateLimit

    RateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。

  • X-RateLimit-Limit

    RateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。

  • X-RateLimit-Remaining

    最も厳しい制限での残りのリクエスト数。

  • X-RateLimit-Reset

    最も厳しい制限がリセットされるまでの秒数。

409オブジェクトの状態により、この操作を実行できません。たとえば、重複している、インデックス作成中である、ジョブがすでに処理済みである場合です。

レスポンスヘッダー

  • RateLimit-Policy

    適用中の制限。IETFのドラフトdraft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。

  • RateLimit

    RateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。

  • X-RateLimit-Limit

    RateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。

  • X-RateLimit-Remaining

    最も厳しい制限での残りのリクエスト数。

  • X-RateLimit-Reset

    最も厳しい制限がリセットされるまでの秒数。

422バリデーションエラー:ボディまたはパラメーターがスキーマに一致しない(`detail`はバリデーションエラーのリスト)、またはパラメーターの値が範囲外です(`detail`はメッセージ)。

レスポンスヘッダー

  • RateLimit-Policy

    適用中の制限。IETFのドラフトdraft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。

  • RateLimit

    RateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。

  • X-RateLimit-Limit

    RateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。

  • X-RateLimit-Remaining

    最も厳しい制限での残りのリクエスト数。

  • X-RateLimit-Reset

    最も厳しい制限がリセットされるまでの秒数。

429リクエストが多すぎる(`api.rate_limited`)、組織の1分・1日・1か月のクォータを使い切った(`api.quota_exceeded`。`error.details`には`quota`、`limit`、`reset_at`が含まれます)、組織の上限に達した、または回答サービスが混雑しています(`answers.engine_busy`)。`Retry-After`ヘッダーの時間だけ待ってください。

レスポンスヘッダー

  • Retry-After

    リクエストを再試行するまでに待つ秒数。

  • RateLimit-Policy

    適用中の制限。IETFのドラフトdraft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。

  • RateLimit

    RateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。

  • X-RateLimit-Limit

    RateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。

  • X-RateLimit-Remaining

    最も厳しい制限での残りのリクエスト数。

  • X-RateLimit-Reset

    最も厳しい制限がリセットされるまでの秒数。

エラーコード

すべてのリクエストに共通のコードに加えて、このエンドポイントがerror.codeで返すことのあるコード。

安全な再試行

POSTとPATCHのたびにIdempotency-Keyヘッダー(UUIDなど)を送信してください。24時間以内に同じキーで再試行すると、リクエストをもう一度実行せずに、保存済みのレスポンスが返ります。

レート制限

レスポンスには、RateLimitヘッダーとRateLimit-Policyヘッダー、以前のX-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Resetが含まれます。429レスポンスにはRetry-After(秒)が含まれます。その時間だけ待ってから再試行してください。

← webhooks · APIリファレンス