API REST: informes y documentos
Ejecutar un informe de Flex con POST /api/reports, con sus filtros, orden y páginas, y renderizar un documento dinámico con POST /api/dynamicdocuments.
POST /api/reports ejecuta un informe y POST /api/dynamicdocuments renderiza un documento dinámico. La URL, el token y los límites son los de toda la API: Referencia de la API REST.
Antes de empezar
- El token Bearer de una clave API: El token Bearer.
- El id del informe o del documento, y su sección en la lista de secciones de la clave.
POST /api/reports: Consultar informes
Ejecuta un informe de Flex y devuelve una página de sus filas. El informe define columnas, filtros y agrupaciones; la petición elige la página y puede añadir filtros y orden.
Parámetros de la URL
| Parámetro | Tipo | Por defecto | Qué hace |
|---|---|---|---|
id | GUID | obligatorio | El informe. Con el ID de una sección, usa su informe principal. |
page | entero | 1 | La página, mayor que 0. |
resultsPerPage | entero | 10 | Filas por página, mayor que 0. |
withFiles | booleano | false | Incluye los adjuntos de las filas en files. |
safeColumnsName | booleano | false | Nombra las columnas por su GUID: renombrar un campo no rompe tu integración. |
calculatePages | booleano | true | Con false no cuenta las filas: totalPages llega a -1 y la respuesta tarda menos. |
Los booleanos van como true o false. Un booleano o un entero mal escrito responde 400 con application/problem+json.
Cuerpo
Opcional. Un diccionario plano con las variables del informe, todas como texto:
{ "desde": "2026-01-01", "hasta": "2026-01-31" }O una forma estructurada, solo con estas tres propiedades:
{
"variables": { "desde": "2026-01-01" },
"filter": [
{ "field": "pr_estado", "op": "=", "value": "1" }
],
"order": [
{ "field": "fechaia", "desc": true }
]
}| Propiedad | Reglas |
|---|---|
variables | Objeto de textos. Admite null como valor. |
filter | Lista de { "field", "op", "value" }. Operadores: =, <>, >, <, >=, <=, * (contiene) e in (o en), con los valores separados por `[ |
order | Lista de { "field", "desc" }, con desc opcional. Máximo 5 criterios, sin campos repetidos. |
field admite el nombre de la columna (pr_...), un campo de sistema (id, nombre, fecha, fecham, fechaia, eliminado, posicion), el GUID de la columna o un camino guidDeRelacion.campo. Un operador, un campo o un valor que no valen responden 400 con el motivo.
Petición
curl -X POST "https://<clave-de-conexion>.dinaup.io/api/reports?id=<id-del-informe>&page=1&resultsPerPage=100&safeColumnsName=true" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"Respuesta
{
"data": [
{ "columna1": "valor", "columna2": "valor" }
],
"currentPage": 1,
"totalPages": 5,
"totalResults": 0,
"files": null
}| Campo | Qué es |
|---|---|
data | Las filas. Cada valor llega como texto. |
currentPage | La página que pediste. |
totalPages | Las páginas del informe. -1 sin recuento (calculatePages=false, o si el recuento pasa de 4 segundos). 1 si el informe tiene marcado Ocultar la paginación. |
totalResults | No trae el total de filas: llega a 0. |
files | Con withFiles=true, los adjuntos: id, name, file, path, extension, height, width, crc, sizeInBytes, compatibilityPreview, mime, isImage y las URL url_original, url_1080, url_720, url_300, url_100 y url_32. Sin adjuntos, null. |
Paginar
Pide páginas hasta que llegue una con menos filas que resultsPerPage. resultsPerPage no tiene máximo, pero cada página tiene 30 segundos por defecto.
La página más alta es 50000 / resultsPerPage + 1, con división entera (con 100 filas, la 501). Por encima, data llega vacía. Para recorrer más filas, divide el informe en tramos con filter.
Errores
| Código | Cuándo |
|---|---|
400 | Un parámetro, el cuerpo, un filtro o un orden no valen (motivo en inglés), o el servidor no encuentra el informe (No se ha detectado listado.) o rechaza un campo o un valor. |
401 | El token no vale, o el empleado de la clave no puede consultar el informe: No tiene permisos para consultar este informe. |
500 | Otro fallo al ejecutar el informe, con el motivo. |
POST /api/dynamicdocuments: Documentos dinámicos
Renderiza un documento dinámico con el parámetro id (GUID, obligatorio). El cuerpo opcional es un diccionario plano con sus variables, como texto. Qué hacer con el HTML: Mostrar e imprimir.
curl -X POST "https://<clave-de-conexion>.dinaup.io/api/dynamicdocuments?id=<id-del-documento>" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{\"clienteId\": \"123e4567-e89b-12d3-a456-426614174000\"}"Responde 200 con el documento como texto (text/plain). Un id que no es GUID, un cuerpo que no es un diccionario de textos o un documento inexistente o eliminado responden 400; otro fallo, 500 con el motivo.