# WebHooks

Dinaup ofrece dos mecanismos de integración complementarios:

| Tipo                              | Dirección   | Descripción                                                                          |
| --------------------------------- | ----------- | ------------------------------------------------------------------------------------ |
| **API REST (Webhooks entrantes)** | Tú → Dinaup | Envías peticiones HTTP para leer informes, consultar documentos y escribir datos     |
| **Webhooks salientes**            | Dinaup → Tú | Dinaup envía notificaciones HTTP a tu servidor cuando se crean o modifican registros |

***

## API REST (Webhooks entrantes)

Base URL: `https://webhook.dinaup.com`

### Autenticación

Todas las peticiones (excepto el ping) requieren una **Clave API de usuario** en el header:

```
Authorization: Bearer <tu-clave-api>
```

Las claves API se generan desde el panel de administración. Cada clave hereda los permisos del usuario al que pertenece.

→ Ver [Claves API](/administracion/claves-api.md)

### Endpoints disponibles

| Método | Endpoint                | Descripción                                                                       |
| ------ | ----------------------- | --------------------------------------------------------------------------------- |
| `GET`  | `/`                     | Ping: comprueba que el servidor está operativo                                    |
| `GET`  | `/api/whoami`           | Devuelve la información del usuario asociado a la clave API                       |
| `POST` | `/api/reports`          | Consulta informes configurados en Dinaup Flex                                     |
| `POST` | `/api/dynamicdocuments` | Genera documentos dinámicos (HTML, JSON, PDF)                                     |
| `POST` | `/api/writeoperations`  | Crea o edita registros en cualquier sección (eliminar = editar con `eliminado=1`) |

→ Ver [Referencia completa de endpoints](/integraciones/webhook/entrantes.md)

### Herramientas de ayuda

| Herramienta | Descripción                                              |
| ----------- | -------------------------------------------------------- |
| **AEAT**    | `/api/tools/aeat` — Validación de NIF/CIF contra la AEAT |
| **VIES**    | `/api/tools/vies` — Validación de NIF intracomunitario   |

***

## Webhooks salientes

Los webhooks salientes permiten que Dinaup notifique a tus sistemas cuando ocurre un evento: creación de una factura, modificación de un cliente, actualización de stock, etc.

### Cómo funcionan

1. **Configuras** un webhook desde Dinaup Flex, seleccionando la sección a monitorizar
2. **Defines** qué eventos disparan la notificación (creación, modificación, campos específicos)
3. **Recibes** una petición HTTP POST en la URL que hayas configurado

### Seguridad

Cada webhook puede incluir un **Bearer Token** en la cabecera de la petición para que tu servidor verifique que la notificación proviene de Dinaup.

→ Ver [Configuración de webhooks salientes](/integraciones/webhook/salientes.md)

***

## Casos de uso típicos

| Caso de uso                                | Solución                                                                 |
| ------------------------------------------ | ------------------------------------------------------------------------ |
| Sincronizar clientes con otro sistema      | Webhook saliente en la sección Entidades + API para leer datos completos |
| Crear facturas desde una tienda online     | `POST /api/writeoperations` con los datos de la venta                    |
| Exportar informes a un dashboard externo   | `POST /api/reports` con el ID del informe configurado en Flex            |
| Generar PDFs de facturas desde tu sistema  | `POST /api/dynamicdocuments` con el documento dinámico correspondiente   |
| Notificar a Slack cuando se crea una venta | Webhook saliente → n8n/Make → Slack                                      |

***

## Límites y buenas prácticas

* Las respuestas de informes están **paginadas** (parámetros `page` y `resultsPerPage`)
* Activa `safeColumnsName=true` en informes para obtener nombres de columna estables entre versiones
* Los webhooks salientes se envían de forma asíncrona; tu endpoint debe responder con `2xx` en menos de 10 segundos
* Si tu endpoint no responde, Dinaup reintentará la entrega

***

## Playground

Prueba los endpoints directamente desde Dinaup sin necesidad de herramientas externas:

[Abrir Playground de Webhooks](https://play.dinaup.com/App/Dev/IncomingWebhooks)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.dinaup.com/integraciones/webhook.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
