Skip to main content
Los webhooks permiten la comunicación en tiempo real entre Matcher y sistemas externos. Esta guía cubre las notificaciones de eventos salientes y los callbacks de resolución entrantes.

Descripción general


Matcher admite comunicación bidireccional mediante webhooks, manteniendo tus herramientas operativas sincronizadas con cada evento de conciliación en tiempo real. Esto reduce la intervención manual, ayuda a mantener el cumplimiento de SLAs y garantiza una trazabilidad de auditoría continua en todos los sistemas conectados.
  • Webhooks salientes: el enrutamiento de excepciones envía excepciones a destinos externos — JIRA, ServiceNow o un endpoint HTTP de webhook que tú configuras
  • Callbacks entrantes: los sistemas externos notifican a Matcher cuando se toman acciones
Cuando una excepción se enruta a un destino de webhook, Matcher entrega una solicitud HTTP firmada a tu endpoint. Los sistemas externos como JIRA o ServiceNow pueden entonces enviar callbacks para actualizar el estado de las excepciones o cerrar elementos automáticamente. Este flujo bidireccional mantiene tus herramientas sincronizadas sin intervención manual. Más allá del envío de excepciones, Matcher publica su catálogo completo de eventos de ciclo de vida en el backbone de streaming de la plataforma — esos eventos se consumen como un stream, no se entregan como webhooks HTTP.
Matcher Webhooks Callbacks

Flujo bidireccional entre Matcher y sistemas externos.

Eventos salientes


Matcher emite eventos cuando ocurren acciones significativas en el proceso de conciliación. El catálogo a continuación se publica en el backbone de streaming; los eventos de excepción además llegan a endpoints HTTP de webhook a través del enrutamiento de excepciones.

Eventos disponibles

El catálogo de eventos de Matcher se define de forma centralizada. Los eventos más comúnmente consumidos se agrupan por dominio a continuación. Configuración Descubrimiento (Fetcher) Ingesta Coincidencia Excepciones y disputas Gobernanza y reportes

Payload de entrega de webhook

Los envíos de excepciones a un destino de webhook llevan un payload consistente — eventId, eventType, timestamp, el snapshot de la excepción bajo data y la información de enrutamiento/trazado bajo metadata:
data.dueAt y los campos de metadata traceId, queue, ruleName y assignee se omiten cuando no están definidos. Los eventos del catálogo de streaming (las tablas anteriores) siguen sus propios esquemas por evento en el stream de eventos y no se entregan en esta forma HTTP.

Callbacks entrantes


Los sistemas externos envían callbacks a Matcher para actualizar el estado de las excepciones después del procesamiento. El endpoint de callback acepta actualizaciones de estado, notas de resolución y cambios de asignación desde cualquier sistema externo.

Procesar un callback

El endpoint de callback se autentica con el encabezado X-Callback-Token — un token opaco emitido a través de la superficie de credenciales de callback —, no con un JWT de operador. Todos los campos mostrados abajo son obligatorios; dueAt y updatedAt aceptan null, y payload puede ser un objeto vacío:
cURL
El campo externalSystem identifica el sistema externo que procesó la excepción. Los valores comunes incluyen "JIRA", "SERVICENOW" o "WEBHOOK", pero los callbacks pueden reportar cualquier identificador de sistema. Omitir cualquiera de los nueve campos obligatorios devuelve un 422.

Respuesta

Referencia de API: Procesar callback
Cuando Matcher procesa un callback, actualiza el estado de la excepción y registra la resolución en la pista de auditoría. Usa el encabezado X-Idempotency-Key para prevenir el procesamiento duplicado.

Reintento automático de callbacks fallidos

Si un callback previo para la misma clave de idempotencia falló durante el procesamiento, Matcher intenta automáticamente readquirir el bloqueo de idempotencia y reprocesar el callback. Esto significa que no necesitas generar una nueva clave de idempotencia al reintentar un callback fallido: simplemente reenvía la misma solicitud y Matcher gestiona la recuperación. El comportamiento de reintento se aplica solo a los callbacks que se marcaron como failed internamente. Los callbacks que se completaron correctamente se siguen deduplicando como se espera.

Credenciales de callback


Los callbacks entrantes se autentican con un token bearer opaco que el sistema externo envía en el encabezado X-Callback-Token. Estas credenciales de callback se emiten, listan, rotan y revocan a través de una superficie CRUD dedicada bajo /v1/exceptions/callbacks/credentials. Cada credencial está vinculada al tenant del llamante, y solo el hash SHA-256 del token se almacena del lado del servidor — el token en bruto se retorna exactamente una vez al momento de emitir/rotar.

Emitir una credencial

El cuerpo de la solicitud es opcional; proporciona externalSystem como una etiqueta legible por el operador para el sistema que este token autentica.
cURL
La respuesta 201 (CredentialSecretResponse) retorna:
El token en bruto se muestra solo en las respuestas de emisión y rotación. Almacénalo de forma segura al recibirlo — no se puede recuperar nuevamente. Si se pierde o se filtra, rota o revoca la credencial.

Rotar una credencial

cURL
La rotación retorna un nuevo CredentialSecretResponse (nuevo token en bruto) y revoca la credencial anterior de forma atómica, de modo que los llamantes externos no experimentan ninguna interrupción al intercambiar el token.

Revocar una credencial

cURL
La revocación es terminal: la credencial ya no puede autenticar callbacks entrantes.

Seguridad de webhooks


Verificación de firma

Cuando se configura un secreto compartido de webhook, Matcher firma cada entrega con un HMAC-SHA256 sobre el cuerpo de la solicitud sin procesar y lo envía en el encabezado X-Signature-256, con el formato sha256=<hex-digest>:
Cada entrega también incluye un encabezado X-Idempotency-Key para que los receptores puedan deduplicar los reintentos. Proceso de verificación:
  1. Calcula el HMAC-SHA256 del cuerpo de la solicitud sin procesar usando el secreto compartido del webhook
  2. Antepón sha256= al hex digest
  3. Compara (en tiempo constante) con el encabezado X-Signature-256
Ejemplo (Node.js):
Ejemplo (Python):

Postura de red

Matcher se despliega en tu propia infraestructura, por lo que las entregas de webhooks se originan en el egress de tu despliegue — no hay un rango fijo de IPs de Lerian que permitir. Sirve los endpoints de webhook por HTTPS con un certificado válido. Como protección contra SSRF, Matcher se niega a entregar a direcciones IP privadas o de loopback a menos que el despliegue las permita explícitamente (solo desarrollo).

Lógica de reintentos


Las entregas de webhooks fallidas se reintentan con retroceso exponencial.

Política de reintentos por defecto

Una entrega fallida se reintenta hasta 3 veces por defecto. Los retrasos siguen un retroceso exponencial desde una base de 1 segundo, con jitter añadido para distribuir los reintentos — así el espaciado exacto varía de un intento a otro en lugar de seguir una escala fija.

Condiciones de reintento

Los reintentos ocurren para:
  • Respuestas HTTP 429
  • Respuestas HTTP 5xx
  • Errores de transporte (fallos de conexión, timeouts)
Sin reintento para:
  • Otras respuestas HTTP 4xx

Mejores prácticas


Verifica siempre la firma HMAC antes de procesar los payloads de webhooks. Esto previene solicitudes falsificadas.
Retorna una respuesta 2xx dentro de 5 segundos. Procesa el evento de forma asíncrona si es necesario.
Las entregas pueden llegar más de una vez. Deduplica con el encabezado X-Idempotency-Key o el eventId del payload.
Configura alertas para las tasas de falla de webhooks. Investiga las fallas persistentes de inmediato.

Próximos pasos


Enrutamiento de excepciones

Configura cómo las excepciones activan eventos de webhook.

Fuentes externas

Configura fuentes de datos que pueden enviar mediante webhooks.