Quickstart
Configuracion minima para dejar un receptor funcionando y verificar la firma en menos de una hora.
Ir al quickstartDeveloper docs
Esta documentacion cubre el recorrido completo: configuracion de la organizacion, contrato del webhook, estructura de payloads, recetas de integracion, matices de arquitectura y operacion en produccion.
Ruta de lectura
La documentacion esta organizada por la secuencia real de trabajo. Si alguien nuevo entra al proyecto, este es el mejor punto de partida para no saltarse supuestos importantes.
Configuracion minima para dejar un receptor funcionando y verificar la firma en menos de una hora.
Ir al quickstartDiferencia entre la via org-level y la via legacy, gatillos reales del backend y puntos de deduplicacion.
Ver arquitecturaCabeceras, algoritmo de firma, payloads, ejemplos Node/Python y contrato de recepcion.
Abrir referenciaMatriz de decisiones y patrones concretos para n8n, Make, endpoints propios y salidas tabulares.
Ver playbookSintomas, causas probables y verificaciones concretas cuando la entrega no se comporta como se espera.
Abrir troubleshootingComo mantener la docs, publicarla en Vercel y replicarla en Hostinger sin tocar la app principal.
Ver despliegueModelo actual
El proyecto tiene dos superficies de salida. Entender la diferencia evita confusiones al debuggear entregas o al leer el codigo.
Es la superficie publica y la que el panel expone hoy. Se configura en la organizacion con `webhookEnabled`, `webhookUrl`, `webhookSecret` y `webhookEvents`.
Se mantienen para compatibilidad y solo participan en `expedient.completed`. Usan Cloud Tasks y un worker HTTP intermedio.
Journey
Si el objetivo es integrar un sistema externo o mantener la salida actual, este orden de lectura reduce mucho el tiempo de orientacion.
Codigo fuente
Estos son los puntos de entrada reales para quien vaya a tocar backend, UI de configuracion o el sitio de documentacion.
backend/functions/src/services/WebhookDispatcher.ts
Firma, headers, payload publico y POST directo del webhook org-level.
backend/functions/src/triggers/webhooks.ts
Trigger de `record.created` con `failurePolicy: true`.
backend/functions/src/triggers/expedients/onExpedientWrite.ts
Produccion de `expedient.completed`, sanitizacion y bifurcacion legacy/org-level.
backend/functions/src/workers/dispatchWebhook.ts
Worker HTTP de la via legacy con envelope, custom headers y semantica 4xx/5xx.
web-admin/src/routes/(protected)/settings/organization/general/+page.svelte
UI para activar, configurar y previsualizar la integracion saliente por organizacion.
docs-site/
Sitio estatico de documentacion publicado en Hostinger y en Vercel.
Puntos finos
Si una organizacion antigua tiene `webhookUrl` y `webhookSecret` pero no `webhookEvents`, el backend resuelve por compatibilidad solo `record.created`.
El receptor debe responder `2xx` apenas acepte el evento. El procesamiento pesado deberia continuar de forma asincrona del lado receptor.
El handoff de `expedient.completed` elimina `imageBytes` antes de salir para evitar mover binarios grandes innecesariamente.
No asumas entrega exactamente una vez. Usa `event + id` como llave minima de dedupe en el sistema receptor.