> ## 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.

# Crear un informe

> Utiliza este endpoint para generar informes de forma asíncrona usando plantillas previamente registradas. Puedes aplicar filtros personalizados para definir criterios específicos por dominio, como IDs de cuentas en onboarding.

La solicitud devuelve un `id` único para rastrear el estado y descargar el informe cuando esté listo.



## OpenAPI

````yaml es/openapi/v3-current/reporter.yaml post /v1/reports
openapi: 3.1.0
info:
  contact:
    name: Discord community
    url: https://discord.gg/DnhqKwkGv3
  description: >-
    Esta es la documentación OpenAPI de Reporter. El binario unificado de
    Reporter ejecuta la API REST (RUN_MODE=api), el worker de generación de
    informes de RabbitMQ (RUN_MODE=worker) o ambos; RUN_MODE=all ejecuta los dos
    en un único proceso para el desarrollo local. Todos los endpoints REST
    documentados aquí solo están disponibles cuando RUN_MODE=api o RUN_MODE=all
    (puerto :4005); el worker (puerto :4006) expone únicamente los endpoints de
    health y readyz.
  license:
    name: Lerian Studio General License
  title: Midaz Reporter API
  version: 4.0.0
servers:
  - url: http://localhost:4005
  - url: https://localhost:4005
security:
  - BearerAuth: []
tags:
  - description: Instancias de informes generados y su ciclo de vida.
    name: Informes
  - description: Definiciones de informes reutilizables.
    name: Plantillas
  - description: Creación interactiva de plantillas de informes.
    name: Constructor de plantillas
  - description: Seguimiento de las fechas de vencimiento de informes programados.
    name: Plazos
  - description: Entradas configuradas que proporcionan datos a los informes.
    name: Fuentes de datos
  - description: Métricas agregadas de informes.
    name: Métricas
  - description: Catálogo publicado de eventos de negocio y políticas de entrega.
    name: Streaming
paths:
  /v1/reports:
    post:
      tags:
        - Informes
      summary: Crear un informe
      description: >-
        Utiliza este endpoint para generar informes de forma asíncrona usando
        plantillas previamente registradas. Puedes aplicar filtros
        personalizados para definir criterios específicos por dominio, como IDs
        de cuentas en onboarding.


        La solicitud devuelve un `id` único para rastrear el estado y descargar
        el informe cuando esté listo.
      operationId: createReport
      parameters:
        - description: >-
            Clave de idempotencia proporcionada por el cliente que evita la
            creación duplicada de informes.
          example: report-request-2026-01
          in: header
          name: X-Idempotency
          schema:
            description: >-
              Clave de idempotencia proporcionada por el cliente que evita la
              creación duplicada de informes.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                filters:
                  additionalProperties:
                    additionalProperties:
                      additionalProperties:
                        $ref: '#/components/schemas/FilterCondition'
                      type: object
                    type: object
                  description: >-
                    Condiciones de filtro agrupadas por fuente de datos, tabla y
                    campo.
                  examples:
                    - accounts:
                        account:
                          status:
                            eq:
                              - ACTIVE
                  type: object
                templateId:
                  description: >-
                    Identificador de la plantilla utilizada para generar el
                    informe.
                  examples:
                    - 00000000-0000-0000-0000-000000000000
                  type: string
              required:
                - filters
                - templateId
              type: object
        description: Datos de entrada del informe.
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
          description: Creado
          headers:
            X-Idempotency-Replayed:
              schema:
                description: >-
                  Se establece en `true` cuando la respuesta reproduce una
                  solicitud idempotente completada.
                type:
                  - string
                  - 'null'
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Solicitud incorrecta
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: No autorizado
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Prohibido
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: No encontrado
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Conflicto
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Entidad no procesable
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error interno del servidor
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Servicio no disponible
components:
  schemas:
    FilterCondition:
      properties:
        between:
          description: >-
            Límites inferior y superior inclusivos para una coincidencia de
            rango.
          examples:
            - - 100
              - 1000
          items: {}
          type:
            - array
            - 'null'
        eq:
          description: >-
            Valores que se comparan por igualdad; los valores múltiples se
            combinan con OR.
          examples:
            - - active
              - pending
          items: {}
          type:
            - array
            - 'null'
        gt:
          description: Valor único de límite inferior que el campo debe superar.
          examples:
            - - 100
          items: {}
          type:
            - array
            - 'null'
        gte:
          description: Valor único de límite inferior inclusivo para el campo.
          examples:
            - - '2025-06-01'
          items: {}
          type:
            - array
            - 'null'
        in:
          description: >-
            Valores para los que el campo puede coincidir con cualquier elemento
            de la lista.
          examples:
            - - active
              - pending
              - suspended
          items: {}
          type:
            - array
            - 'null'
        lt:
          description: >-
            Valor único de límite superior por debajo del cual debe permanecer
            el campo.
          examples:
            - - 1000
          items: {}
          type:
            - array
            - 'null'
        lte:
          description: Valor único de límite superior inclusivo para el campo.
          examples:
            - - '2025-06-30'
          items: {}
          type:
            - array
            - 'null'
        nin:
          description: Valores excluidos de los registros coincidentes.
          examples:
            - - deleted
              - archived
          items: {}
          type:
            - array
            - 'null'
      type: object
    Report:
      properties:
        completedAt:
          description: >-
            Fecha y hora en que finalizó la generación del informe, cuando está
            disponible.
          examples:
            - '2026-01-31T15:04:05Z'
          format: date-time
          type:
            - string
            - 'null'
        createdAt:
          description: Fecha y hora en que se creó el informe.
          examples:
            - '2026-01-31T15:00:00Z'
          format: date-time
          type: string
        deletedAt:
          description: >-
            Fecha y hora en que se eliminó lógicamente el informe, cuando
            aplica.
          examples:
            - '2026-02-01T09:00:00Z'
          format: date-time
          type:
            - string
            - 'null'
        filters:
          additionalProperties:
            additionalProperties:
              additionalProperties:
                $ref: '#/components/schemas/FilterCondition'
              type: object
            type: object
          description: Condiciones de filtro agrupadas por fuente de datos, tabla y campo.
          examples:
            - accounts:
                account:
                  status:
                    eq:
                      - ACTIVE
          type: object
        id:
          description: Identificador estable del informe.
          examples:
            - 00000000-0000-0000-0000-000000000001
          type: string
        metadata:
          additionalProperties: {}
          description: Metadatos adicionales del informe indexados por nombre de atributo.
          examples:
            - source: ledger
              tenant: sandbox
          type: object
        status:
          description: Estado actual de generación del informe.
          examples:
            - Processing
          type: string
        templateDescription:
          description: Descripción copiada de la plantilla cuando se creó el informe.
          examples:
            - Monthly accounting report
          type: string
        templateId:
          description: Identificador de origen de la instantánea de la plantilla.
          examples:
            - 00000000-0000-0000-0000-000000000002
          type: string
        templateOutputFormat:
          description: Formato de salida seleccionado para el informe generado.
          examples:
            - pdf
          type: string
        updatedAt:
          description: Fecha y hora de la última actualización del informe.
          examples:
            - '2026-01-31T15:04:05Z'
          format: date-time
          type: string
      type: object
    Detail:
      properties:
        code:
          description: >-
            Código de error de dominio estable y legible por máquina, limitado
            al servicio emisor (formato: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: Explicación legible específica de esta instancia del problema.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Lista opcional de detalles individuales del error
          examples:
            - - location: body.templateId
                message: expected string to match 'uuid' format
                value: not-a-uuid
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: Referencia URI que identifica la instancia específica del problema.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: Código de estado HTTP
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            Resumen breve y legible del tipo de problema. Este valor no debe
            cambiar entre instancias del error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: Referencia URI a la documentación legible del error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    ErrorDetail:
      properties:
        location:
          description: >-
            Lugar donde ocurrió el error, por ejemplo, 'body.items[3].tags' o
            'path.thing-id'
          examples:
            - body.templateId
          type: string
        message:
          description: Texto del mensaje de error
          examples:
            - expected string to match 'uuid' format
          type: string
        value:
          description: Valor en la ubicación indicada
          examples:
            - not-a-uuid
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: >-
        Autenticación mediante token Bearer. Formato: 'Bearer {access_token}'.
        Solo es obligatoria cuando el plugin de autenticación está habilitado.
      scheme: bearer
      type: http

````