Webhooks sind wie Ovra deinen Systemen mitteilt dass etwas passiert ist. Jede state-ändernde Operation feuert einen. Deliveries sind HMAC-SHA256-signiert, retried auf einem plan-tier-aware Backoff-Schedule und SSRF-checked gegen Private-IPs und Metadata-Endpoints.Documentation Index
Fetch the complete documentation index at: https://docs.getovra.com/llms.txt
Use this file to discover all available pages before exploring further.
Subscriben
["*"] für alle Events.
URL-Constraints (isBlockedWebhookUrl):
- HTTPS oder HTTP (HTTPS in Prod stark empfohlen)
- Kein localhost
- Kein RFC 1918 (10.0.0.0/8, 172.16/12, 192.168/16)
- Kein Link-local (169.254.0.0/16) oder Metadata-Endpoints (
169.254.169.254,metadata.google.internal) - DNS-Rebinding-Check zur Delivery-Time
Event-Katalog
~50 Event-Typen über diese Kategorien. Source of Truth:apps/api/src/services/webhook.ts WebhookEvent-Union.
Intent
Intent
intent.created · intent.approved · intent.denied · intent.expired · intent.cancelled · intent.matched (reserviert) · intent.mismatched (reserviert)Transaction
Transaction
transaction.created · transaction.updated · transaction.authorization · transaction.settlement · transaction.settled · transaction.completed · transaction.declined · transaction.refundedCard
Card
card.issued · card.activated · card.frozen · card.unfrozen · card.closed · card.rotated · card.funded · card.shipped · card.limits_changed · card.details_changedCard-Limit-Request
Card-Limit-Request
card_limit_request.updatedWallet
Wallet
wallet.created · wallet.funded · wallet.creditedTransfer
Transfer
transfer.completed · transfer.failed · transfer.split.completedRisk
Risk
risk.agent_frozen · risk.review_required · risk.alert_created · risk.denied · risk.velocity_alert · risk.geo_impossibleAgent
Agent
agent.created · agent.frozen · agent.unfrozenEinzug (Legacy `claim.*` Namespace)
Einzug (Legacy `claim.*` Namespace)
claim.request.created · claim.request.paid · claim.request.expired · claim.request.cancelledDispute
Dispute
dispute.created · dispute.updated · dispute.resolvedMPP (Credential-Issuer)
MPP (Credential-Issuer)
mpp.credential.minted · mpp.credential.consumed · mpp.credential.expired (reserviert) · mpp.transaction.completedVerification + Misc
Verification + Misc
verification.mismatch · mobile_wallet.updated · payment.updated · receipt.updated · bill.updated · cardholder.updatedDelivery-Format
Headers:| Header | Wert |
|---|---|
X-Ovra-Event | Event-Name |
X-Ovra-Timestamp | Unix-Sekunden zur Sign-Time |
X-Ovra-Delivery-Id | Eindeutig pro Versuch |
X-Ovra-Signature | sha256=<hex> HMAC-SHA256 von {deliveryId}.{timestamp}.{rawBody} |
X-Request-Id | Korrelation zurück zum Originating-Request |
Signatur verifizieren
Retry-Policy (plan-tier-aware)
| Tier | Max Versuche | Backoff | Dead-Letter |
|---|---|---|---|
basic | 1 | – | – |
full | 1 | – | – |
full_retry | 5 | 1m · 5m · 15m · 1h · 4h | – |
full_dlq | 5 | Wie oben | ✓ |
FOR UPDATE SKIP LOCKED damit Multi-Instance-API-Hosts nie doppelt deliveren.
| Plan | Webhook-Tier |
|---|---|
| Free | basic |
| Starter | full |
| Business | full_retry |
| Enterprise | full_dlq |
Best Practices
- Signaturen verifizieren bevor verarbeitet wird — niemals dem Body unsigned vertrauen.
- Idempotente Handler — derselbe Event kann mehrfach delivered werden.
- Schnell acknowledgen — 2xx in 30s zurückgeben. Slow Work in Queue verschieben.
- Timestamp-Window prüfen um sehr alte Replays abzulehnen.
Weiter
Intelligenz
Audit + Decision-Logs ergänzen Webhooks für Forensik.
Sandbox
Signaturverifikation End-to-End testen.
