Webhooks sind signiert, werden begrenzt wiederholt, sind nachvollziehbar und vor jeder Zustellung erneut per DNS geprüft.
Das Ziel muss HTTPS auf Port 443 verwenden und ausschließlich in öffentliche Adressen auflösen. Weiterleitungen, private Netze, Ceyu-eigene Hosts und unsichere CNAME-Ketten werden abgelehnt. Die URL muss auf die Prüfzustellung mit 2xx antworten.
Lies den exakten Rohinhalt, prüfe Ceyu-Signature mit dem einmal ausgegebenen Geheimnis, erzwinge das standardmäßige Fünf-Minuten-Fenster und parse erst danach JSON. Bewahre während der 24-stündigen Rotation beide Geheimnisse auf.
await verifyWebhookSignature({
rawBody,
signature: request.headers.get("Ceyu-Signature") ?? "",
secret: process.env.CEYU_WEBHOOK_SECRET,
});
Antworte schnell mit 2xx und verschiebe langsame Arbeit in eine Warteschlange. Die Ereignisansicht und GET /v1/events/{id} zeigen begrenzte Antwortauszüge, Dauer und Fehlercodes jedes Versuchs. Sende ein aufbewahrtes Ereignis mit POST /v1/events/{id}/resend erneut.
Aktiviere exclude_own_events, wenn eine Integration Änderungen zu Ceyu zurückschreibt. Speichere Ereignis-IDs außerdem idempotent, damit eine wiederholte Zustellung dieselbe externe Änderung nie doppelt anwendet.