Crear
secret se devuelve una vez. Mínimo 16 caracteres si lo envías tú.
El módulo Odoo escucha POST https://<odoo>/webhooks/ecf (JSON plano, no JSON-RPC). web.base.url tiene que ser alcanzable desde api.emite.do.
Eventos que sí se envían
Al crear el webhook también se aceptan
*, ecf.*, signed, submitted y failed. Hoy el worker de cliente no dispara signed, submitted ni failed. Si los suscribes, no llegan notificaciones de esos pasos. El estado intermedio se consulta con GET /api/v1/ecf/{public_id}.
Payload
Campos en la raíz. No hay wrapperdata. Los nulos se omiten.
dgii_response, electronic_stamp y sign_date cuando el acuse los trae.
Headers:
Content-Type: application/jsonX-ECF-Event: <evento>X-ECF-Signature: sha256=<hmac-sha256(secret, body crudo)>
X-ECF-Timestamp ni X-ECF-Delivery-Id en el envío vivo.
2xx, hay reintentos exponenciales (backoff hasta 24 h). Dry-run: POST /api/v1/client/webhooks/{id}/test. Historial: .../deliveries.