Skip to main content
Para cada petición de webhook:
  1. Lee el cuerpo RAW tal cual lo envía el servidor (ojo a middlewares que lo parsean/modifican).
  2. Calcula HMAC_SHA256(secret, rawBody).
  3. Convierte a hex lowercase y compón sha256=<hex>.
  4. Compara de forma tiempo‑constante con el valor de la cabecera X-Integration-Signature.
Rechaza la petición si el skew de tiempo del header Date (si se envía) supera 5 minutos.

Node.js (Express)

Python (FastAPI / Starlette)

Reintentos e idempotencia

Si tu endpoint responde >=500 o no responde a tiempo, MarIA reintentará la entrega.

Errores frecuentes

Leer req.body ya parseado pierde el RAW. Usa middleware para conservar el buffer antes de cualquier parser.