出来事をその瞬間に通知
従業員の打刻や休暇承認の数秒以内に、あなたのバックエンドがPOSTを受け取ります——ポーリングもバッチも不要。署名付き配信、自動リトライ、エンドポイントがダウンしたときのデッドレターキューも完備。
できること
初日からの効果。中小企業の管理者がエンジニア不要で設定できます。
ポーリング不要のリアルタイム配信
従業員の打刻、休暇承認、ワークフロー状態の変更 — エンドポイントは数秒以内に POST を受け取ります。5 分ごとに API を叩きにいく必要はありません(コスト削減と高速化を同時に実現)。
改ざん検知付きの配送
各リクエストには X-SVDY-Signature: sha256=… ヘッダーが付与されます。これは JSON ボディとあなたのシークレットから計算されます。エンドポイント側で署名を検証すれば、偽造されたリクエストを最初の一行で拒否できます。
リトライとデッドレターキュー
2xx 以外のレスポンスは 1 分、5 分、30 分、2 時間、12 時間後にリトライします。5 回失敗するとデッドレターキューに入り、/system/integrations/webhooks で確認できます。エンドポイント不調の日もイベントを失いません。
4ステップで設定完了
目安:認証情報を準備済みの管理者なら5分以内。
組織の管理画面で webhook を作成する
連携 → Webhook → Webhook を追加 を選び、エンドポイント URL と購読したいイベントを入力します。SVDY は署名シークレットを 1 度だけ表示します — その場で保存してください。
受信側を実装する
エンドポイントは POST application/json を受け取ります。処理する前に HMAC 署名を検証してください。10 秒以内に 200 を返してください(さもなければ SVDY は失敗とみなしてリトライします)。
# Python receiver — Flask sketch
import hmac, hashlib, json
from flask import request, abort
SVDY_SECRET = b"<paste-from-svdy-admin>"
@app.post("/webhooks/svdy")
def receive():
sig = request.headers.get("X-SVDY-Signature", "")
expected = "sha256=" + hmac.new(
SVDY_SECRET, request.data, hashlib.sha256
).hexdigest()
if not hmac.compare_digest(sig, expected):
abort(401)
event = json.loads(request.data)
# ... handle event["type"], event["data"]
return "", 200「Send test event」ボタンで試す
webhook の詳細画面から、合成イベントをエンドポイントに送れます。レスポンスコードとボディは配送ログに即時表示されます。
失敗した配送を再実行する
各配送はアクティビティ画面でステータス(delivered / retrying / dead)が確認できます。エンドポイントを修正したあとは、デッドレターになった配送に対して「Replay」を押すと再配送されます。
