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

# Generar código de plantilla

> Utiliza este endpoint para convertir una secuencia estructurada de bloques de plantilla en código de plantilla Pongo2. La respuesta devuelve el código generado junto con los campos de datos que referencia, de modo que puedas previsualizar una plantilla antes de guardarla.



## OpenAPI

````yaml es/openapi/v3-current/reporter.yaml post /v1/templates/generate-code
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/templates/generate-code:
    post:
      tags:
        - Constructor de plantillas
      summary: Generar código de plantilla
      description: >-
        Utiliza este endpoint para convertir una secuencia estructurada de
        bloques de plantilla en código de plantilla Pongo2. La respuesta
        devuelve el código generado junto con los campos de datos que
        referencia, de modo que puedas previsualizar una plantilla antes de
        guardarla.
      operationId: generateTemplateCode
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateCodeInput'
        description: Bloques de la plantilla y formato de salida objetivo.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateCodeResponse'
          description: Correcto
        '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
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error interno del servidor
components:
  schemas:
    GenerateCodeInput:
      properties:
        blocks:
          description: Bloques del constructor de plantillas convertidos en código Pongo2.
          examples:
            - - type: variable
                variable: account.id
          items:
            $ref: '#/components/schemas/TemplateBlock'
          type:
            - array
            - 'null'
        format:
          description: Formato de salida de destino de la plantilla generada.
          examples:
            - html
          type: string
      type: object
    GenerateCodeResponse:
      properties:
        code:
          description: Código fuente generado de la plantilla Pongo2.
          examples:
            - '{{ account.id }}'
          type: string
        mappedFields:
          additionalProperties:
            additionalProperties:
              items:
                type: string
              type:
                - array
                - 'null'
            type: object
          description: >-
            Campos referenciados por la plantilla generada, agrupados por fuente
            de datos y entidad.
          examples:
            - primary:
                account:
                  - id
          type: object
      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
    TemplateBlock:
      properties:
        assignment:
          description: Expresión de asignación emitida por un bloque set.
          examples:
            - total = account.balance
          type: string
        blockId:
          description: >-
            Identificador definido por el cliente usado para localizar errores
            de validación.
          examples:
            - customer-name
          type: string
        children:
          description: Bloques anidados que se renderizan dentro de este bloque.
          examples:
            - - content: Transaction
                type: text
          items:
            $ref: '#/components/schemas/TemplateBlock'
          type:
            - array
            - 'null'
        collection:
          description: Expresión de colección recorrida por un bloque de bucle.
          examples:
            - account.transactions
          type: string
        condition:
          description: Expresión booleana evaluada por un bloque condicional.
          examples:
            - account.active
          type: string
        content:
          description: Contenido literal renderizado por los bloques de texto.
          examples:
            - 'Account holder: '
          type: string
        elifBranches:
          description: Ramas condicionales adicionales evaluadas en orden.
          examples:
            - - children:
                  - content: Pending
                    type: text
                condition: account.pending
          items:
            $ref: '#/components/schemas/ElifBranch'
          type:
            - array
            - 'null'
        elseChildren:
          description: Bloques que se renderizan cuando la condición principal es falsa.
          examples:
            - - content: Inactive
                type: text
          items:
            $ref: '#/components/schemas/TemplateBlock'
          type:
            - array
            - 'null'
        expression:
          description: Expresión emitida por un bloque de expresión.
          examples:
            - account.balance > 0
          type: string
        field:
          description: Campo de datos referenciado por el bloque.
          examples:
            - transaction.amount
          type: string
        filters:
          description: Filtros ordenados que se aplican a la variable.
          examples:
            - - name: upper
          items:
            $ref: '#/components/schemas/FilterChain'
          type:
            - array
            - 'null'
        format:
          description: Opción de formato aplicada por el bloque.
          examples:
            - '2006-01-02'
          type: string
        function:
          description: Función de plantilla invocada por el bloque.
          examples:
            - format_currency
          type: string
        inline:
          description: Indica si el bloque se renderiza sin añadir un salto de línea.
          examples:
            - true
          type: boolean
        iterator:
          description: Nombre de la variable iteradora usada por los bloques de bucle.
          examples:
            - transaction
          type: string
        properties:
          additionalProperties: {}
          description: Propiedades de configuración específicas del bloque.
          examples:
            - class: summary
          type: object
        tagArgs:
          description: Argumentos que se pasan a la etiqueta de Pongo2.
          examples:
            - '"summary.html"'
          type: string
        tagName:
          description: >-
            Nombre de la etiqueta de Pongo2 emitida por un bloque de etiqueta
            personalizada.
          examples:
            - include
          type: string
        trimWhitespace:
          description: >-
            Indica si se eliminan los espacios en blanco circundantes durante el
            renderizado.
          examples:
            - true
          type: boolean
        type:
          description: Tipo de bloque del constructor de plantillas.
          examples:
            - variable
          type: string
        variable:
          description: Expresión de variable renderizada por el bloque.
          examples:
            - account.holderName
          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
    ElifBranch:
      properties:
        children:
          description: Bloques que se renderizan cuando esta rama coincide.
          examples:
            - - content: Pending
                type: text
          items:
            $ref: '#/components/schemas/TemplateBlock'
          type:
            - array
            - 'null'
        condition:
          description: Expresión booleana evaluada para esta rama.
          examples:
            - account.pending
          type: string
      type: object
    FilterChain:
      properties:
        args:
          description: Argumentos que se pasan al filtro.
          examples:
            - '"2006-01-02"'
          type: string
        name:
          description: Nombre del filtro de Pongo2.
          examples:
            - date
          type: string
      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

````