Webhooks for routines

A routine with the webhook trigger runs when a signed event arrives at its hook URL.

Create from Computer → Routines (“when a signed webhook event arrives”) or POST /open-bot/routines with schedule.kind: "webhook". The response returns the URL and secret once.

Signing schemes

SchemeHeaders
genericX-OpenBot-Timestamp, X-OpenBot-Signature: sha256=…, X-OpenBot-Event-Id
githubX-Hub-Signature-256, X-GitHub-Delivery
slackX-Slack-Request-Timestamp, X-Slack-Signature
BODY='{"alert":"disk full"}'; TS=$(date +%s)
SIG=$(printf '%s' "$TS.$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | sed 's/^.* //')
curl -X POST "$HOOK_URL" -H "X-OpenBot-Timestamp: $TS" -H "X-OpenBot-Signature: sha256=$SIG" \
  -H "X-OpenBot-Event-Id: alert-1" -H 'content-type: application/json' -d "$BODY"

Full behavior (dedupe, filters, rate limits): see also Webhooks API and repo docs/WEBHOOKS.md.