Beacon

Webhooks API

Ver como Markdown

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

EndpointUsoSeguridad
POST /api/webhooks/stripe?org={slug}&mode={test|live}ingesta general de eventos Stripe y deduplicación técnicafirma Stripe obligatoria
POST /api/webhooks/stripe/billing?org={slug}&mode={test|live}eventos de billing/suscripcionesfirma Stripe obligatoria
POST /api/billing/webhooks/{webhookEventId}/replay?org={slug}&mode={test|live}replay manual de un webhook ya guardadobearer token Beacon + OWNER/ADMIN

Modelo de procesamiento

  1. 11) Recibir evento

    Validar firma y estructura mínima del payload.
  2. 22) Deduplicar

    Usar event.id del proveedor como clave de deduplicación; los duplicados devuelven duplicate: true.
  3. 33) Persistir y procesar

    Guardar webhookEventId interno y ejecutar handlers asíncronos de forma segura.
  4. 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=test
  • live: 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 el event.id de Stripe.
  • Evita replay masivo sin priorización por impacto y criterios de validación explícitos.

Ejemplo de respuesta del endpoint general

json
{
  "ok": true,
  "webhookEventId": "whevt_123",
  "eventId": "evt_123",
  "mode": "test",
  "duplicate": false
}

Ejemplo de replay manual

bash
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ñalSignificadoAcción
subida de 4xxfallo de firma/payloadrevisar secreto y contrato del endpoint
backlog crecienteconsumer lento o bloqueadoaumentar capacidad y priorizar eventos críticos
efectos duplicadosdeduplicación insuficientereforzar clave por event.id + organización