> ## Documentation Index
> Fetch the complete documentation index at: https://alan-ramirez-dev.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 🗂️ Formatos y Generación

> Documentación del endpoint principal para la compilación de reportes.

El microservicio procesa peticiones HTTP para renderizar documentos binarios (CSV o PDF) a partir de datos en formato JSON, utilizando un motor de estrategias dinámico.

## 🔌 Endpoint de Generación

<ParamField path="POST" type="/api/v1/reportes/generar">
  Compila un documento según los parámetros solicitados y devuelve el archivo binario (`Blob`) para su descarga.
</ParamField>

### 🏷️ Cabeceras (Headers)

El motor detecta el idioma preferido del cliente para cambiarlo en el documento generado.

| Cabecera          | Requerido | Descripción                                                                                                                                      |
| :---------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |
| `Accept-Language` | Opcional  | Define el idioma del reporte. Valores soportados: `es` (Español) o `en` (Inglés). Si se omite o es inválido, el sistema aplica `es` por defecto. |

### 📦 Payload de la Petición (Body)

El endpoint espera un cuerpo en formato `application/json` validado por las reglas estrictas del controlador:

<ParamField body="formato" type="string" required>
  Define el motor de salida. Valores permitidos: `csv`, `pdf`.
</ParamField>

<ParamField body="timezone" type="string">
  Zona horaria del cliente para estampar la fecha de emisión (ej. `America/Mexico_City`). Si es nulo, se utiliza la zona horaria del servidor.
</ParamField>

<ParamField body="data" type="object" required>
  Contenedor principal del payload.

  <Expandable title="Propiedades del objeto data">
    <ParamField body="items" type="array">
      Arreglo con los movimientos transaccionales. Los límites máximos dependen del formato solicitado para proteger la memoria RAM:

      * **PDF:** Límite estricto de **100** elementos.
      * **CSV:** Límite extendido de **50,000** elementos.
    </ParamField>
  </Expandable>
</ParamField>

### 🚦 Reglas de Infraestructura

Para garantizar la estabilidad del servicio, el endpoint está protegido por un middleware perimetral:

* **Rate Limiting (Throttle):** Se permite un máximo de **10 peticiones por minuto por dirección IP**. Al superar este umbral, el servidor responderá con un error HTTP `429 Too Many Requests`.
