Skip to main content
La tabla event debe reflejar el catálogo generado antes de que los suscriptores puedan elegir eventos. Dos mecanismos lo garantizan: Verifica con:
missing_internals lista eventos presentes en código pero aún no en la base de datos; stale_internals lista filas de la base de datos que ninguna ruta produce ya (siguen siendo suscribibles hasta que un operador las desactive).

Entrega de prueba

POST /api/v3/webhook/webhook/{id}/test encola una entrega sintética webhook.test hacia ese suscriptor y devuelve el dispatch_id. Síguela en GET /api/v3/webhook/dispatch/{dispatch_id} o en la pantalla de detalle de Horizon Enterprise. El webhook no necesita estar suscrito a webhook.test para que la acción funcione; suscribirse solo permite filtrar esas entregas después.

Sink de desarrollo

POST /api/v3/webhook/sink es un endpoint suscriptor integrado que solo se monta cuando APP_ENV es development o certification y WEBHOOK_SINK_SECRET está definido. Verifica la firma con ese secreto, registra Webhook sink delivery accepted con las cabeceras del sobre y responde 200, de modo que una fila de dispatch pasa a success sin ningún sistema externo.
1

Crea un webhook apuntando al sink

url = https://<host de la api>/api/v3/webhook/sink, is_global = true. Copia el secreto whsec_… devuelto.
2

Comparte el secreto con la API

Define WEBHOOK_SINK_SECRET con ese valor en el entorno del tier y redespliega (o reinicia en local).
3

Envía una prueba

POST /api/v3/webhook/webhook/{id}/test, luego revisa la fila de dispatch y los logs de la API.
Producción nunca monta el sink: la ruta responde 404 allí sin importar la variable.

Dashboard y salud

Variables de entorno

La tolerancia de firma (300 s), el calendario de backoff, el tope de intentos (5) y el umbral de desactivación automática (20) son constantes de código en lib/webhook/outbound/webhook-out.constants.ts y webhook-signature.ts, no variables de entorno — forman parte del contrato público y solo cambian con un release.

Permisos

Todos los permisos de webhook se conceden únicamente al rol administrator en este release. Los tokens de automatización deben portar los internals concretos:

Límites conocidos

  • Sin IP de egreso fija. Las entregas salen del runtime serverless de la API; filtra por firma, no por dirección.
  • Cuerpo fino. El payload nunca incluye el recurso; hace falta una segunda llamada a la API para leerlo.
  • Al menos una vez. Reintentos y replays pueden repetir una entrega; deduplica por id.
  • Sin garantía de orden entre eventos, incluso del mismo recurso.
  • La rotación de secreto no tiene ventana de solape.
  • Los eventos de purga llevan data.account = null y solo llegan a suscriptores globales.

Relacionado

  • Runbook interno del primer despliegue (pasos por tier, rollback, señales de día 2): docs/initiatives/webhook/outbound/11-rollout-and-operations.md en el monorepo.
  • Referencia API: Webhook, Webhook Event, Webhook Dispatch, Event.