> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Inicio rápido de la API de Reporter

<Tip>
  **Esta guía está dirigida a desarrolladores.** Si buscas una visión general a nivel de negocio de lo que hace Reporter, consulta [¿Qué es Reporter?](/es/reporter/what-is-reporter).
</Tip>

Pon Reporter en funcionamiento en minutos. Esta guía recorre el camino completo, desde la carga de tu primera plantilla hasta la descarga de un reporte generado.

## Antes de comenzar

***

Necesitas:

* Una instancia de Reporter en ejecución
* Un token de autenticación válido (si Access Manager está habilitado)
* Un archivo de plantilla `.tpl` listo para cargar

Todos los ejemplos usan `cURL`. Reemplaza `$TOKEN` con tu token de autenticación y `https://reporter.example.com` con la URL de tu Reporter.

## Paso 1: Cargar una plantilla

***

Carga un archivo `.tpl` que define la estructura y contenido de tu reporte. El contenido del archivo debe coincidir con el formato de salida deseado (HTML, XML, CSV, TXT), pero el archivo en sí debe tener extensión `.tpl`.

<Tip>
  Referencia de API: [Cargar plantilla](/es/reference/reporter/upload-template)
</Tip>

```bash cURL theme={null}
curl -X POST "https://reporter.example.com/v1/templates" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769" \
 -F "template=@account_summary.tpl" \
 -F "outputFormat=PDF" \
 -F "description=Reporte de resumen diario de cuentas"
```

```json theme={null}
{
  "id": "0196b270-a315-7137-9408-3f16af2685e1",
  "outputFormat": "PDF",
  "description": "Reporte de resumen diario de cuentas",
  "fileName": "0196b270-a315-7137-9408-3f16af2685e1.tpl",
  "createdAt": "2026-03-05T10:00:00Z",
  "updatedAt": "2026-03-05T10:00:00Z"
}
```

Guarda el `id` de la plantilla. Lo usarás para generar reportes.

### Formatos de salida soportados

| Formato | Caso de uso                                               |
| ------- | --------------------------------------------------------- |
| `CSV`   | Exportaciones de datos e integración con hojas de cálculo |
| `XML`   | Datos estructurados y envíos regulatorios                 |
| `HTML`  | Reportes visualizables en navegador                       |
| `PDF`   | Documentos listos para imprimir y compartir               |
| `TXT`   | Texto plano e integración con sistemas legados            |

## Paso 2: Verificar la plantilla

***

Lista tus plantillas para confirmar que la carga fue exitosa.

<Tip>
  Referencia de API: [Listar plantillas](/es/reference/reporter/list-templates)
</Tip>

```bash cURL theme={null}
curl -X GET "https://reporter.example.com/v1/templates" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769"
```

## Paso 3: Generar un reporte

***

Envía una solicitud de generación de reporte con el ID de la plantilla y filtros opcionales para acotar los datos.

<Tip>
  Referencia de API: [Crear reporte](/es/reference/reporter/create-report)
</Tip>

```bash cURL theme={null}
curl -X POST "https://reporter.example.com/v1/reports" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769" \
 -H "Content-Type: application/json" \
 -d '{
   "templateId": "0196b270-a315-7137-9408-3f16af2685e1",
   "filters": {
     "midaz_onboarding": {
       "account": {
         "created_at": {
           "between": ["2026-03-01", "2026-03-05"]
         }
       }
     }
   }
 }'
```

```json theme={null}
{
  "id": "0196c5c0-5044-724f-95f3-4b32076e7ad7",
  "templateId": "0196b270-a315-7137-9408-3f16af2685e1",
  "filters": {
    "midaz_onboarding": {
      "account": {
        "created_at": {
          "between": ["2026-03-01", "2026-03-05"]
        }
      }
    }
  },
  "status": "Processing",
  "completedAt": null,
  "createdAt": "2026-03-05T10:05:00Z",
  "updatedAt": "2026-03-05T10:05:00Z",
  "deletedAt": null
}
```

Guarda el `id` del reporte para los siguientes pasos.

### Estructura de filtros

Los filtros siguen la ruta: **fuente de datos > tabla > campo > operador > valores**.

| Operador     | Descripción                | Ejemplo                                       |
| ------------ | -------------------------- | --------------------------------------------- |
| `eq`         | Igual a                    | `{ "eq": ["active"] }`                        |
| `gt` / `gte` | Mayor que / mayor o igual  | `{ "gte": ["2026-01-01"] }`                   |
| `lt` / `lte` | Menor que / menor o igual  | `{ "lt": [1000] }`                            |
| `between`    | Valor dentro de un rango   | `{ "between": ["2026-03-01", "2026-03-31"] }` |
| `in` / `nin` | Valor en / no en una lista | `{ "in": ["active", "pending"] }`             |

<Info>
  Los filtros son opcionales. Omítelos para generar un reporte con todos los datos disponibles.
</Info>

## Paso 4: Verificar estado del reporte

***

La generación de reportes es asíncrona. Consulta el endpoint de estado hasta que el reporte esté listo.

<Tip>
  Referencia de API: [Verificar estado del reporte](/es/reference/reporter/check-report-status)
</Tip>

```bash cURL theme={null}
curl -X GET "https://reporter.example.com/v1/reports/0196c5c0-5044-724f-95f3-4b32076e7ad7" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769"
```

| Estado              | Significado                                                                                     |
| ------------------- | ----------------------------------------------------------------------------------------------- |
| `Processing`        | Reporter está consultando datos y renderizando la plantilla                                     |
| `PendingExtraction` | El reporte está esperando que se complete la extracción de datos antes de iniciar la generación |
| `Finished`          | El reporte está listo para descargar                                                            |
| `Error`             | Ocurrió un error durante la generación                                                          |

Espera el estado `Finished` antes de proceder a la descarga.

## Paso 5: Descargar el reporte

***

Una vez que el reporte está finalizado, descarga el archivo generado.

<Tip>
  Referencia de API: [Descargar reporte](/es/reference/reporter/download-report)
</Tip>

```bash cURL theme={null}
curl -X GET "https://reporter.example.com/v1/reports/0196c5c0-5044-724f-95f3-4b32076e7ad7/download" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769" \
 -o account_summary.pdf
```

El archivo se devuelve con encabezados `Content-Disposition` indicando el nombre del archivo y formato.

## Paso 6: Explorar fuentes de datos

***

Para entender qué datos están disponibles para tus plantillas, lista las fuentes de datos configuradas y sus esquemas.

<Tip>
  Referencia de API: [Listar fuentes de datos](/es/reference/reporter/list-data-sources) | [Obtener fuente de datos](/es/reference/reporter/retrieve-data-source)
</Tip>

```bash cURL theme={null}
curl -X GET "https://reporter.example.com/v1/data-sources" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769"
```

Cada fuente de datos incluye tablas y campos disponibles que puedes referenciar en tus plantillas usando la sintaxis `{{ datasource.table.field }}`.

## Próximos pasos

***

<CardGroup cols={2}>
  <Card title="¿Qué es Reporter?" icon="circle-info" href="/es/reporter/what-is-reporter">
    Descripción completa de la sintaxis de plantillas, tags y filtros.
  </Card>

  <Card title="Formatos de plantillas" icon="file-code" href="/es/reporter/template-examples">
    Ejemplos prácticos para plantillas HTML, XML y TXT.
  </Card>

  <Card title="Usando Reporter" icon="rocket" href="/es/reporter/using-reporter">
    Guía detallada sobre plantillas, almacenamiento y configuración de fuentes de datos.
  </Card>

  <Card title="Manejo de errores" icon="triangle-exclamation" href="/es/reference/reporter/reporter-error-list">
    Lista completa de códigos de error y cómo resolverlos.
  </Card>
</CardGroup>
