Entrantes

La API REST de Dinaup permite interactuar con tus datos de forma programática. Todos los endpoints se sirven desde https://webhook.dinaup.com.


Autenticación

Todos los endpoints (excepto el ping) requieren una Clave API de usuario en el header HTTP:

Authorization: Bearer <clave-api>

Las claves API se generan desde dinaup.com > Claves API. Cada clave hereda los permisos del usuario al que pertenece, por lo que solo podrá acceder a los datos que ese usuario tiene permiso de ver.

→ Ver Claves API

circle-exclamation

GET / — Ping

Verifica que el servidor de webhooks está operativo. No requiere autenticación.

Request:

curl -X GET "https://webhook.dinaup.com"

Response: 200 OK

"Hola :)"

GET /api/whoami — Información del usuario

Devuelve los datos del usuario asociado a la clave API. Útil para verificar que la autenticación funciona correctamente.

Request:

Response: 200 OK con los datos del usuario (nombre, email, permisos).


Límites de tasa (Rate Limiting)

Cada endpoint tiene un límite de peticiones por tenant (identificado por el Bearer Token):

Endpoint
Tokens
Reposición
Periodo

WriteOperations

30

5 tokens

10 seg

Reports

30

5 tokens

10 seg

DynamicDocuments

30

5 tokens

10 seg

Whoami

60

10 tokens

10 seg

Herramientas (AEAT/VIES)

10

2 tokens

10 seg

Si excedes el límite, recibirás un error 429 Too Many Requests con un header Retry-After: 10.


POST /api/reports — Consultar informes

Ejecuta un informe de Dinaup Flex y devuelve los resultados en formato JSON. Los informes se configuran previamente en Dinaup Flex con las columnas, filtros y agrupaciones deseadas.

Parámetros (query string):

Parámetro
Tipo
Obligatorio
Descripción

id

UUID

ID del informe a consultar

page

int

No

Número de página (por defecto: 1)

resultsPerPage

int

No

Resultados por página (por defecto: 10)

withFiles

bool

No

Incluir URLs de archivos adjuntos (por defecto: false)

safeColumnsName

bool

No

Usar GUIDs como nombres de columna para estabilidad (por defecto: false)

Body (opcional): JSON con variables de filtro si el informe tiene preguntas dinámicas.

Request:

Response:

circle-info

Recomendaciones:

  • Activa safeColumnsName=true en producción para que los nombres de columna no cambien si se renombra un campo en Dinaup.

  • Si el informe tiene preguntas dinámicas, puedes pasar los valores como parámetros adicionales en la URL para filtrar los resultados (por ejemplo, filtrar ventas por cliente o por rango de fechas).

  • Los resultados están paginados. Usa page y resultsPerPage para iterar sobre conjuntos grandes de datos.


POST /api/dynamicdocuments — Documentos dinámicos

Genera un documento dinámico y devuelve su contenido renderizado. Los documentos dinámicos son plantillas que combinan datos de diferentes secciones en formatos como HTML, JSON o texto plano.

Parámetros (query string):

Parámetro
Tipo
Obligatorio
Descripción

id

UUID

ID del documento dinámico

Body (opcional): JSON con variables para sustituir en la plantilla.

Request:

Response:


POST /api/writeoperations — Escribir datos

Crea, edita o elimina registros en cualquier sección de Dinaup.

Parámetros (query string):

Parámetro
Tipo
Obligatorio
Descripción

sectionId

UUID

ID de la sección donde escribir

FieldPrimary

string

Nombre del campo clave para identificar registros

scripts

bool

No

Ejecutar scripts del servidor asociados a la sección (por defecto: false)

Headers:

Crear, editar y eliminar

La operación se determina por el valor del campo id:

Valor de id

Operación

Descripción

"" (cadena vacía)

Crear

Se crea un nuevo registro. Dinaup genera el ID automáticamente.

UUID existente

Editar

Se actualizan los campos enviados del registro con ese ID.

UUID inexistente

Error

Devuelve error. No se puede editar un registro que no existe.

Para eliminar un registro, envía una operación de edición con el campo eliminado establecido a 1:

circle-info

No existe un endpoint DELETE separado. La eliminación es lógica (soft delete) y se realiza mediante WriteOperations.

Nombres de campo (pr_*)

Los campos se identifican por su columna PostgreSQL, que tiene formato pr_XXXXXXXXX. Puedes consultar los nombres de campo de cada sección desde:

  • Play Dinaup → módulo Desarrollo → Esquema

  • Dinaup Desktop (app Windows) → configuración de la sección

  • doc-flex.dinaup.com → referencia completa de todas las secciones

  • SDK .NET (MyDinaup) → todos los campos están tipados con nombres legibles

Formato 1: Objeto simple

Envía un solo registro como diccionario de campos:

"id": "" → crea un nuevo registro. Para editar, usa el UUID del registro existente.

Formato 2: Objeto con lista (padre + hijos)

Para secciones que tienen una sección lista asociada (ej: Factura + Líneas de factura):

Formato 3: Lote de objetos

Envía múltiples registros en una sola petición:

Formato 4: Lote de objetos con listas

Múltiples registros padre-hijo en una sola petición:

Ejemplo completo (crear un registro):

circle-exclamation

Herramientas auxiliares

GET /api/tools/aeat — Validación NIF/CIF

Valida un NIF o CIF contra el censo de la Agencia Estatal de Administración Tributaria (AEAT).

GET /api/tools/vies — Validación VIES

Valida un número de identificación fiscal intracomunitario contra el sistema VIES de la Unión Europea. Útil para verificar que un cliente es operador intracomunitario antes de emitir una factura con IVA al 0%.


Códigos de respuesta

Código
Significado

200

Operación exitosa

401

Clave API inválida o ausente

403

El usuario no tiene permisos para esta operación

404

Recurso no encontrado (informe, documento, sección)

422

Datos de entrada inválidos (campos obligatorios, formato incorrecto)

500

Error interno del servidor


Playground

Prueba todos los endpoints directamente desde Dinaup sin configurar herramientas externas:

Abrir Playground de Webhooksarrow-up-right

Última actualización