Ir al contenido

Webhooks

Registra una URL HTTPS en API / Desarrolladores → Webhooks o con POST /webhooks. Gravitas te envía un POST con un JSON por cada evento:

document.accepted, document.accepted_conditional, document.rejected, document.delivered, document.commercially_approved, document.commercially_rejected, received_document.arrived, range.low.

Cada entrega trae el encabezado Gravitas-Signature: t=<unix>,v1=<hex>. La firma es HMAC-SHA256 de "{t}.{cuerpo}" con el secreto del webhook. Rechaza firmas con más de 5 minutos.

Ventana de terminal
# Verificar la firma de un webhook (Gravitas-Signature: t=<unix>,v1=<hex>[,v1=<hex>]).
# BODY es el cuerpo recibido sin modificar; WEBHOOK_SECRET es el secreto del endpoint (whsec_...).
T=$(echo "$SIGNATURE_HEADER" | tr ',' '\n' | sed -n 's/^t=//p')
EXPECTED=$(printf '%s.%s' "$T" "$BODY" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET" | sed 's/^.* //')
echo "$SIGNATURE_HEADER" | tr ',' '\n' | grep -qx "v1=$EXPECTED" && echo "firma válida" || echo "firma inválida"
# Rechace eventos con t de más de 5 minutos y elimine duplicados por Gravitas-Event-Id.

Durante la rotación del secreto (24 horas), cada entrega trae dos valores v1: acepta el mensaje si cualquiera coincide.

  • Responde 2xx en menos de 10 segundos; procesa en segundo plano.
  • Si fallas, reintentamos durante 24 horas con espera creciente. Puedes ver el historial y reenviar desde el portal.
  • La entrega es al menos una vez: elimina duplicados con el encabezado Gravitas-Event-Id.
  • Usa el botón Probar para enviar un evento de prueba.