Webhooks
Lorsque quelque chose se passe dans l'entreprise, Cyzyra envoie un POST en JSON à l'adresse que vous enregistrez. Configurer dans Plateforme API → Webhooks, en choisissant les événements.
Ce qui arrive
X-Cyzyra-Event cabeçalho
Le type d'événement, par ex. paiement.payé
X-Cyzyra-Delivery cabeçalho
L'identifiant de cette livraison. Utilisez pour ignorer les répétitions.
Signature X-Cyzyra cabeçalho
t=<heure unix>,v1=<HMAC-SHA256>
{
"id": "evt_3f9c…",
"type": "payment.paid",
"created_at": "2026-11-08T14:02:11Z",
"data": {
"entity_type": "payment",
"entity_id": "a93e…",
"title": "Pagamento confirmado",
"object": {
"id": "a93e…",
"amount": 1500,
"currency": "BRL",
"status": "paid"
}
}
}Anschauliches Beispiel.
Confirmer l'abonnement
Calculer HMAC-SHA256 à partir de <t>.<corps brut> avec le secret du point de terminaison et comparer avec v1. Recuse horários muito antigos para evitar reenvio por terceiros.
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(rawBody, header, secret) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const expected = createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) < 300;
return fresh && timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}Nouvelles tentatives
Répondez avec un statut 2xx dans les 10 secondes. En cas d'échec, Cyzyra réessaye jusqu'à 5 fois, à intervalles croissants, et affiche chaque tentative sur le tableau de bord.
Événements
lead.createdlead.status_changedlead.mergeddeal.createddeal.stage_changeddeal.wondeal.lostproposal.sentproposal.acceptedproposal.rejectedcontract.sentcontract.signedpayment.createdpayment.paidpayment.failedpayment.refundedwork_order.createdmessage.received