Webhooks API
Contratos para ingesta de eventos, replay controlado y trazabilidad operacional.
reference • updated 2026-03-17
Objetivo
Ingerir eventos Stripe con verificación de firma, deduplicación por evento y replay controlado para recuperación de incidentes.
Endpoints principales
| Endpoint | Uso | Seguridad |
|---|---|---|
POST /api/webhooks/stripe?org={slug}&mode={test|live} | ingesta general de eventos Stripe y deduplicación técnica | firma Stripe obligatoria |
POST /api/webhooks/stripe/billing?org={slug}&mode={test|live} | eventos de billing/suscripciones | firma Stripe obligatoria |
POST /api/billing/webhooks/{webhookEventId}/replay?org={slug}&mode={test|live} | replay manual de un webhook ya guardado | bearer token Beacon + OWNER/ADMIN |
Modelo de procesamiento
11) Recibir evento
Validar firma y estructura mínima del payload.22) Deduplicar
Usarevent.iddel proveedor como clave de deduplicación; los duplicados devuelvenduplicate: true.33) Persistir y procesar
GuardarwebhookEventIdinterno y ejecutar handlers asíncronos de forma segura.44) Confirmar estado
Actualizar estado funcional y métricas de entrega; billing puede hacer upsert de suscripciones.
URLs canónicas por entorno
test:https://test.beacon.pt/api/webhooks/stripe?org=<organization_slug>&mode=testlive:https://app.beacon.pt/api/webhooks/stripe?org=<organization_slug>&mode=live- Si usas el endpoint dedicado de billing, mantén la misma convención en
/api/webhooks/stripe/billing.
Política de retries y replay
- Los retries automáticos deben preservar el contexto original.
- El replay manual usa el identificador interno
webhookEventId, no elevent.idde Stripe. - Evita replay masivo sin priorización por impacto y criterios de validación explícitos.
Ejemplo de respuesta del endpoint general
{
"ok": true,
"webhookEventId": "whevt_123",
"eventId": "evt_123",
"mode": "test",
"duplicate": false
}
Ejemplo de replay manual
curl -X POST "https://test.beacon.pt/api/billing/webhooks/whevt_123/replay?org=acme&mode=test" \
-H "Authorization: Bearer <beacon_session_token>"
Señales operativas
| Señal | Significado | Acción |
|---|---|---|
subida de 4xx | fallo de firma/payload | revisar secreto y contrato del endpoint |
| backlog creciente | consumer lento o bloqueado | aumentar capacidad y priorizar eventos críticos |
| efectos duplicados | deduplicación insuficiente | reforzar clave por event.id + organización |