Skip to Content

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ámetroTipoPor defectoQué hace
idGUIDobligatorioEl informe. Con el ID de una sección, usa su informe principal.
pageentero1La página, mayor que 0.
resultsPerPageentero10Filas por página, mayor que 0.
withFilesbooleanofalseIncluye los adjuntos de las filas en files.
safeColumnsNamebooleanofalseNombra las columnas por su GUID: renombrar un campo no rompe tu integración.
calculatePagesbooleanotrueCon 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 }
  ]
}
PropiedadReglas
variablesObjeto de textos. Admite null como valor.
filterLista de { "field", "op", "value" }. Operadores: =, <>, >, <, >=, <=, * (contiene) e in (o en), con los valores separados por `[
orderLista 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
}
CampoQué es
dataLas filas. Cada valor llega como texto.
currentPageLa página que pediste.
totalPagesLas 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.
totalResultsNo trae el total de filas: llega a 0.
filesCon 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ódigoCuándo
400Un 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.
401El token no vale, o el empleado de la clave no puede consultar el informe: No tiene permisos para consultar este informe.
500Otro 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.

Ver también

En esta página