Webhaken
Wanneer er iets gebeurt in het bedrijf, stuurt Cyzyra een POST in JSON naar het adres dat u registreert. Configureer binnen API-platform → Webhooks, het kiezen van de evenementen.
Wat arriveert
X-Cyzyra-Event cabeçalho
Het gebeurtenistype, b.v. betaling.betaald
X-Cyzyra-Delivery cabeçalho
Het ID van deze levering. Gebruik om herhalingen te negeren.
X-Cyzyra-handtekening cabeçalho
t=<unix-tijd>,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.
Bevestig abonnement
Bereken HMAC-SHA256 uit <t>.<rauw lichaam> met het eindpuntgeheim en vergelijk ermee 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));
}Nieuwe pogingen
Reageer binnen 10 seconden met een 2xx-status. Als het niet lukt, probeert Cyzyra het maximaal vijf keer opnieuw, met toenemende tussenpozen, en geeft elke poging weer op het dashboard.
Evenementen
lead.createdlead.status_changedlead.mergeddeal.createddeal.stage_changeddeal.wondeal.lostproposal.sentproposal.acceptedproposal.rejectedcontract.sentcontract.signedpayment.createdpayment.paidpayment.failedpayment.refundedwork_order.createdmessage.received