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
Nunca compartas tus claves API en código público ni en el frontend de aplicaciones web. Úsalas exclusivamente en el backend.
GET / — Ping
GET / — PingVerifica 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
GET /api/whoami — Información del usuarioDevuelve 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):
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
POST /api/reports — Consultar informesEjecuta 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):
id
UUID
Sí
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:
Recomendaciones:
Activa
safeColumnsName=trueen 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
pageyresultsPerPagepara iterar sobre conjuntos grandes de datos.
POST /api/dynamicdocuments — Documentos dinámicos
POST /api/dynamicdocuments — Documentos dinámicosGenera 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):
id
UUID
Sí
ID del documento dinámico
Body (opcional): JSON con variables para sustituir en la plantilla.
Request:
Response:
POST /api/writeoperations — Escribir datos
POST /api/writeoperations — Escribir datosCrea, edita o elimina registros en cualquier sección de Dinaup.
Parámetros (query string):
sectionId
UUID
Sí
ID de la sección donde escribir
FieldPrimary
string
Sí
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:
No existe un endpoint DELETE separado. La eliminación es lógica (soft delete) y se realiza mediante WriteOperations.
Nombres de campo (pr_*)
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):
Las operaciones de escritura respetan los permisos del usuario asociado a la clave API. Si el usuario no tiene permiso de escritura en una sección, la operación fallará.
Herramientas auxiliares
GET /api/tools/aeat — Validación NIF/CIF
GET /api/tools/aeat — Validación NIF/CIFValida un NIF o CIF contra el censo de la Agencia Estatal de Administración Tributaria (AEAT).
GET /api/tools/vies — Validación VIES
GET /api/tools/vies — Validación VIESValida 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
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:
Última actualización