Report

A paginated table with the columns, rows and totals you declare, in portrait or landscape, formatted but never calculated.

informe, with the premium design: a table with the columns you declare. It lets you export to PDF what your application already shows on screen —a summary by branch, the list of operations in a period— without this service needing to know anything about your business.

"informe": {
  "titulo": "Consolidado por sucursal",
  "subtitulo": "Operaciones completadas",
  "alcance": "Todas las sucursales",
  "periodo": { "desde": "2026-09-01", "hasta": "2026-09-15" },
  "generadoEn": "2026-09-15T14:30:00-05:00",
  "generadoPor": "Andrés Montoya",
  "orientacion": "vertical"
},
"columnas": [
  { "clave": "grupo", "titulo": "Sucursal", "alineacion": "izquierda", "formato": "texto" },
  { "clave": "operaciones", "titulo": "Operaciones", "alineacion": "derecha", "formato": "numero" },
  { "clave": "totalCop", "titulo": "Total", "alineacion": "derecha", "formato": "moneda" }
],
"filas": [ { "grupo": "Aeropuerto", "operaciones": 12, "totalCop": 45000000 } ],
"totales": { "grupo": "Total", "operaciones": 20, "totalCop": 71000000 },
"moneda": "COP",
"notas": ""
  • Required: informe.titulo, columnas (a list with at least one column) and filas (a list, which may be empty: the table then says «Sin registros», “No records”). If any is missing, the response is a 400 with faltan, and nothing is composed.
  • Each column takes from each row the value of its clave. alineacion is izquierda (left) —the default—, derecha (right) or centro (center). ancho, optional, is a relative weight: a column with "ancho": 2 is twice as wide as one with 1. Without it, text weighs more than figures.
  • formato only shapes the value, it never calculates:
    • texto —the default—: as it arrives.
    • numero: thousands separated with a dot and up to two decimals (1.200,75).
    • moneda: with the symbol of moneda ($ 45.000.000, US$ 1.500,25); decimals only if the figure has them.
    • fecha: an ISO date comes out as 15/09/2026, with the time if it has one (15/09/2026 14:30, the time as written, without converting its time zone). Anything that isn’t ISO comes out as it arrives.
    • porcentaje: the number already computed, with % (12,5 comes out as 12,5 %; it is not multiplied by one hundred).
    • A value that already arrives as text comes out unchanged in any format, and one that doesn’t arrive leaves the cell empty.
  • totales is drawn as it arrives, in a final row, column by column using the same keys. It is not the sum of the rows, and without totales there is no row.
  • orientacion: vertical (portrait) —the default— or horizontal, landscape A4, for lists with many columns. With seven or more columns, the font size and row spacing shrink a little.
  • It paginates. A list of thousands of rows continues over as many pages as needed, and each page repeats the table header, a line with the title, the scope and the period, and «Página x de y» (“Page x of y”).
  • Optional data that doesn’t arrive —subtitle, scope, period, who and when, notes— takes up no row.
  • The file is named Informe_<titulo>_<periodo.desde>.pdf, without accents or spaces (Informe_Consolidado-por-sucursal_2026-09-01.pdf), with sin-fecha if the period doesn’t arrive.

Examples: informe.json (portrait) and informe-horizontal.json (landscape).