Mewk

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/:id

Webhook を削除します。

認証

settings:write
GET/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/test

Webhook 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>