Files
sap-webhook-api/README.md
T
GeorgeandClaude Sonnet 5 5e0df73477 Initial commit: sap-webhook-api
API NestJS que recibe el Webhook Messenger de SAP Business One
(CloudEvents), valida HMAC opcional y guarda cada notificacion
local (data/events/) e inserta en Postgres (webhook_events).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 07:41:25 -05:00

2.6 KiB

sap-webhook-api

API en NestJS que escucha el Webhook Messenger de SAP Business One (Service Layer) y captura cada Event Notification que llega.

Qué hace

  • Expone POST /webhooks/sap por HTTPS (certificado autofirmado en certs/), pensado para responder rápido y no arriesgar el timeout de 10s que impone el Webhook Messenger de SAP.
  • Soporta el payload real de SAP: un array de eventos en formato CloudEvents.
  • Guarda cada notificación como:
    • un archivo .json en data/events/ (uno por evento, nombrado por su id), y
    • una fila en Postgres (tabla webhook_events), para que sap-intercompany-worker la pueda procesar de forma asíncrona.
  • Soporta autenticación None (default) o HMAC (X-B1-Webhook-Signature, HMAC-SHA256), activable/desactivable con un script que sincroniza SAP y la propia API — ver docs/EJECUCION.md.
  • Expone también GET /webhooks/sap (chequeo de vida / handshake) porque SAP lo usa para validar el endpoint antes de despachar eventos.

Quick start

npm install
cp .env.example .env   # completar con los datos reales de tu Service Layer

# Postgres compartida con sap-intercompany-worker (una sola vez, desde la raíz del repo)
cd .. && docker compose up -d && cd sap-webhook-api

npm run start

La API queda escuchando en https://<tu-ip>:3000/webhooks/sap.

Estructura

src/
  main.ts                          # bootstrap, HTTPS
  webhooks/
    webhooks.controller.ts         # GET/POST /webhooks/sap
    webhook-events.repository.ts   # insert a Postgres (webhook_events)
certs/                             # certificado autofirmado (key.pem / cert.pem)
data/events/                       # cada notificación, como .json
scripts/                           # enable/disable-hmac-auth.sh
tools/sl.http                      # requests de referencia contra el Service Layer
docs/                              # bitácora, arquitectura, guía de ejecución

Documentación

  • docs/PASOS-REALIZADOS.md — bitácora paso a paso de cómo se armó el proyecto y se configuró la suscripción en SAP.
  • docs/EJECUCION.md — cómo correr la API en modo None y en modo HMAC.
  • docs/ARQUITECTURA.md / docs/ARQUITECTURA.pdf — diagrama de arquitectura (servidores, puertos, certificados).
  • tools/sl.http — requests de ejemplo (Login, EventSubscriptions, HMAC) para usar con la extensión REST Client / httpyac.

Para el diagnóstico del bug de SAP que bloqueaba la entrega de eventos (DATEFORMAT), y el resto del contexto de la sesión, ver CLAUDE.md en la raíz del repo.