Webhook
リアルタイムのイベント通知を受け取る Webhook を管理するエンドポイントです。
GET
/api/v1/settings/webhooks認証済みユーザーのすべての Webhook を一覧表示します。
認証
認証必須(任意の有効な API キー)
POST
/api/v1/settings/webhooks新しい Webhook を作成します。HTTPS URL のみ対応。
認証
settings:writeリクエストボディ
{
"name": "Discord Notify",
"url": "https://example.com/webhook",
"secret": "optional-signing-secret",
"notifyOnQuestionReceived": true,
"notifyOnAnswerSent": false
}PUT
/api/v1/settings/webhooks/:id既存の Webhook を更新します。
認証
settings:writeリクエストボディ
{
"name": "Updated Name",
"url": "https://example.com/webhook",
"secret": "new-secret",
"notifyOnQuestionReceived": true,
"notifyOnAnswerSent": true,
"isActive": true
}リクエストボディに含まれないフィールドは変更されません。
DELETE
/api/v1/settings/webhooks/:idWebhook を削除します。
認証
settings:writeGET
/api/v1/settings/webhooks/:id/deliveries指定した Webhook の直近 50 件の配信履歴を取得します。
認証
認証必須(任意の有効な API キー)
レスポンス
{
"logs": [
{
"id": "...",
"eventType": "QUESTION_RECEIVED",
"success": true,
"statusCode": 200,
"error": null,
"attemptedAt": "2026-02-14T00:00:00.000Z"
},
...
]
}POST
/api/v1/settings/webhooks/testWebhook URL にテストペイロードを送信します。
認証
settings:writeリクエストボディ
{
"url": "https://example.com/webhook",
"secret": "optional-signing-secret"
}ペイロード形式
Webhook ペイロードは JSON ボディを持つ POST リクエストとして送信されます。
{
"type": "QUESTION_RECEIVED",
"timestamp": "2026-02-14T00:00:00.000Z",
"data": { ... }
}署名の検証
シークレットが設定されている場合、各リクエストにはリクエストボディの HMAC-SHA256 署名を含む X-Hub-Signature ヘッダーが付きます。
X-Hub-Signature: sha256=<hmac-hex>