Skip to content

Convenciones

Base URL

http://qrsgen:3100 desde dentro de la overlay docker. Aliases válidos: qrsgen o bridge_bridge.

Autenticación

Casi todos los endpoints requieren Authorization: Bearer <QRSGEN_API_TOKEN>. Exentos:

Endpoint Por qué
GET /api/health Liveness / readiness probes.
POST /api/instances/:name/webhook El downstream rara vez manda headers arbitrarios; usa HMAC en otro header si necesitas autenticación (ver abajo).
GET /metrics Prometheus scrape.
GET /static/* Assets públicos.

Si QRSGEN_API_TOKEN está vacío en env, todos los endpoints quedan abiertos (modo dev — un WARNING aparece al boot).

HMAC del webhook entrante (opcional)

Cuando WEBHOOK_HMAC_SECRET está set en env, POST /api/instances/:name/webhook exige X-Qrsgen-Signature: sha256=<hex> donde <hex> = HMAC-SHA256(secret, raw_body). Mismatches devuelven 401. Si la env var está vacía, el endpoint queda abierto en LAN.

Headers comunes

  • Authorization: Bearer <token> — auth (ver arriba).
  • Content-Type: application/json — requests con body JSON.
  • X-Qrsgen-Signature: sha256=<hex> — sólo en webhook si HMAC activo.
  • X-Migration-Id: <id> — opcional, se propaga a logs y response para correlacionar trazas entre tu orquestador y qrsgen.

Códigos de error genéricos

Código Significado
200 OK Operación síncrona completada.
202 Accepted Outgoing encolado en outbox (instancia disconnected).
400 Bad Request JSON inválido o body malformado.
401 Unauthorized Bearer token incorrecto / ausente, o HMAC mismatch.
404 Not Found Instancia no existe (o no se encontró el recurso).
408 Request Timeout Solo en wait-ready cuando expira el timeout.
500 Internal Server Error Fallo DB / whatsmeow / downstream.
503 Service Unavailable Queue de outbox llena para esa instancia (MAX 200).

Cada endpoint puede añadir códigos específicos — se anotan en su página.

Glosario

Bearer token: credencial HTTP enviada en el header Authorization: Bearer <token>. Demuestra que la request viene de un cliente autorizado. Se llama "bearer" porque cualquiera que tenga el token puede usarlo — guárdalo como secreto.

HMAC (Hash-based Message Authentication Code): firma criptográfica calculada con HMAC-SHA256(secret, body). Demuestra que el body de la request fue creado por alguien que conoce secret y que no se ha modificado en tránsito. qrsgen lo usa opcionalmente en /webhook.

Preflight (CORS): petición OPTIONS que un navegador envía antes de una request cross-origin para preguntar si el servidor la acepta. qrsgen responde con headers Access-Control-* apropiados en /api/public/stats.

Idempotencia: propiedad de una operación donde repetirla produce el mismo efecto que ejecutarla una sola vez. qrsgen aplica idempotencia al POST /api/instances (reusa la instancia si ya existe) y al /webhook (dedup por id).

Migration ID: identificador opcional que el cliente manda en el header X-Migration-Id para correlacionar logs entre su sistema y qrsgen durante una migración o investigación.