Documentación

Webhook endpoints

Los destinos HTTPS a los que se entregan los eventos de comprobantes ( document.authorized · document.rejected · document.failed ). El secret firma cada entrega (HMAC-SHA256 en X-Datil-Signature ) y nunca se vuelve a serializar después de crearlo. También se administran en Contabilidad → Configuración → API.

El objeto webhook_endpoint #

Atributos

active boolean requerido

false pausa las entregas sin eliminar el endpoint.

events array requerido

Eventos suscritos; vacío = todos ( document.authorized , document.rejected , document.failed ).

tenant_slug string requerido

La organización dueña del libro.

url string requerido

Destino HTTPS de las entregas.

book_id uuid

El libro contable dueño del registro — siempre el de tu llave.

last_delivered_at datetime

Última entrega confirmada (2xx).

last_status string

Estado HTTP de la última entrega intentada.

Filtrable por: activebook_ididlast_delivered_atlast_statustenant_slugurl

Ordenable por: activebook_ididlast_delivered_atlast_statustenant_slugurl

Crear un endpoint#

POST /api/v1/webhook-endpoints Bearer

La URL debe ser HTTPS. events vacío suscribe todos los eventos. Guarda el secret que envías: no se puede volver a leer.

Content-Type: application/vnd.api+json

Cuerpo de la solicitud

secret string requerido

El secreto HMAC con el que se firma cada entrega. Solo se escribe: nunca vuelve en una respuesta.

url string requerido

Destino HTTPS de las entregas.

active boolean

false pausa las entregas sin eliminar el endpoint.

events array

Eventos suscritos; vacío = todos ( document.authorized , document.rejected , document.failed ).

Devuelve · 201 con data (sin secret ) · 400 / 422 si la URL no es válida.

cURL
curl -X POST https://edge.datil.com/api/v1/webhook-endpoints \
  -H "Authorization: Bearer $DATIL_API_KEY" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
  "data": {
    "type": "webhook_endpoint",
    "attributes": {
      "url": "https://erp.acme.ec/webhooks/datil",
      "events": [
        "document.authorized",
        "document.rejected"
      ],
      "secret": "whsec_una_cadena_larga_y_aleatoria"
    }
  }
}'
Respuesta · 201
{
  "data": {
    "type": "webhook_endpoint",
    "id": "4d6f8a0c-2e4b-4c6d-9a1b-3d5f7a9c1e3d",
    "attributes": {
      "active": true,
      "events": [
        "document.authorized",
        "document.rejected"
      ],
      "tenant_slug": "acme",
      "url": "https://erp.acme.ec/webhooks/datil",
      "book_id": "1d2f4b6a-8c0e-4a2b-9d3f-5e7a9c1b3d5f",
      "last_delivered_at": "2026-07-03T14:07:02Z",
      "last_status": "200"
    }
  }
}

Listar endpoints#

GET /api/v1/webhook-endpoints Bearer

Parámetros

filter[…] object

Filtra por atributo: filter[kind]=customer , u operadores anidados como filter[issue_date][greater_than]=2026-07-01 . Combinable con filter[and] / filter[or] .

sort string

Atributos separados por coma; prefijo - para descendente: sort=-issue_date .

page[limit] integer

Máximo de registros por página.

page[offset] integer

Desplazamiento desde el inicio del listado.

page[count] boolean

Con true , la respuesta incluye el total en meta.page.total .

fields[tipo] string

Atributos a devolver, separados por coma — el sparse fieldset de JSON:API.

Devuelve · 200 con data — lista de objetos webhook_endpoint .

cURL
curl "https://edge.datil.com/api/v1/webhook-endpoints" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "data": [
    {
      "type": "webhook_endpoint",
      "id": "4d6f8a0c-2e4b-4c6d-9a1b-3d5f7a9c1e3d",
      "attributes": {
        "active": true,
        "events": [
          "document.authorized",
          "document.rejected"
        ],
        "tenant_slug": "acme",
        "url": "https://erp.acme.ec/webhooks/datil",
        "book_id": "1d2f4b6a-8c0e-4a2b-9d3f-5e7a9c1b3d5f",
        "last_delivered_at": "2026-07-03T14:07:02Z",
        "last_status": "200"
      }
    }
  ]
}

Consultar un endpoint#

GET /api/v1/webhook-endpoints/:id Bearer

Parámetros

id uuid requerido

Id del endpoint.

Devuelve · 200 con data · 404 .

cURL
curl "https://edge.datil.com/api/v1/webhook-endpoints/4d6f8a0c-2e4b-4c6d-9a1b-3d5f7a9c1e3d" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "data": {
    "type": "webhook_endpoint",
    "id": "4d6f8a0c-2e4b-4c6d-9a1b-3d5f7a9c1e3d",
    "attributes": {
      "active": true,
      "events": [
        "document.authorized",
        "document.rejected"
      ],
      "tenant_slug": "acme",
      "url": "https://erp.acme.ec/webhooks/datil",
      "book_id": "1d2f4b6a-8c0e-4a2b-9d3f-5e7a9c1b3d5f",
      "last_delivered_at": "2026-07-03T14:07:02Z",
      "last_status": "200"
    }
  }
}

Eliminar un endpoint#

DELETE /api/v1/webhook-endpoints/:id Bearer

Las entregas a ese destino cesan de inmediato.

Parámetros

id uuid requerido

Id del endpoint.

Devuelve · 200 / 204 · 404 .

cURL
curl -X DELETE https://edge.datil.com/api/v1/webhook-endpoints/4d6f8a0c-2e4b-4c6d-9a1b-3d5f7a9c1e3d \
  -H "Authorization: Bearer $DATIL_API_KEY"
Sin conexión — reintentando…

Esenciales

Sesión, seguridad, idioma y tema. Sin ellas el sitio no funciona.

Siempre activas