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

# Enviar una plantilla de diseño de ancho fijo del operador

> Valida y almacena una plantilla de diseño de ancho fijo por tenant (con espacio de nombres región/familia/variante). El diseño pasa por la compuerta de buena formación ANTES del almacenamiento: desbordamiento, solapamiento, requerido faltante, campo cero o una columna de dinero mal marcada (el dinero DEBE ser kind=decimal) rechaza con 422 y la plantilla nunca se almacena. Una plantilla aprobada se resuelve por la ruta de parseo como una fuente de diseño aditiva. Tenant desde el JWT; nunca del cuerpo.



## OpenAPI

````yaml es/openapi/v3-current/matcher.yaml post /v1/imports/formats/templates
openapi: 3.1.0
info:
  title: Matcher APIs
  description: >-
    Referencia completa de la API para el motor de conciliación Matcher, que
    proporciona conciliación automatizada de transacciones entre Midaz Ledger y
    sistemas externos.
  version: 4.1.0
  license:
    name: Elastic License 2.0
    url: https://www.elastic.co/licensing/elastic-license
servers:
  - url: https://matcher.sandbox.lerian.net
security: []
paths:
  /v1/imports/formats/templates:
    post:
      tags:
        - Ingestion
      summary: Enviar una plantilla de diseño de ancho fijo del operador
      description: >-
        Valida y almacena una plantilla de diseño de ancho fijo por tenant (con
        espacio de nombres región/familia/variante). El diseño pasa por la
        compuerta de buena formación ANTES del almacenamiento: desbordamiento,
        solapamiento, requerido faltante, campo cero o una columna de dinero mal
        marcada (el dinero DEBE ser kind=decimal) rechaza con 422 y la plantilla
        nunca se almacena. Una plantilla aprobada se resuelve por la ruta de
        parseo como una fuente de diseño aditiva. Tenant desde el JWT; nunca del
        cuerpo.
      operationId: submitLayoutTemplate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLayoutTemplateRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayoutTemplateResponse'
          description: Creado
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    CreateLayoutTemplateRequest:
      additionalProperties: false
      properties:
        discriminatorLength:
          description: Ancho del discriminador en bytes
          examples:
            - 1
          format: int64
          minimum: 1
          type: integer
        discriminatorStart:
          description: >-
            Desplazamiento de bytes (base cero) del discriminador de tipo de
            registro
          examples:
            - 0
          format: int64
          minimum: 0
          type: integer
        family:
          description: Familia de formato bajo la que se agrupa la plantilla
          examples:
            - cnab400
          minLength: 1
          type: string
        records:
          description: Tipos de registro declarados por el diseño
          items:
            $ref: '#/components/schemas/LayoutTemplateRecordRequest'
          minItems: 1
          type:
            - array
            - 'null'
        region:
          description: Región ISO alpha-2 (en mayúsculas) o XX
          examples:
            - BR
          minLength: 1
          type: string
        requiredFields:
          description: Nombres de campo que la variante debe declarar
          items:
            type: string
          type:
            - array
            - 'null'
        variant:
          description: Eje de variante de operador/marca
          examples:
            - acme-cobranca
          minLength: 1
          type: string
      required:
        - region
        - family
        - variant
        - discriminatorStart
        - discriminatorLength
        - records
      type: object
    LayoutTemplateResponse:
      additionalProperties: false
      properties:
        createdAt:
          description: Marca de tiempo de creación (RFC 3339, UTC)
          examples:
            - '2025-01-15T10:30:00Z'
          format: date-time
          type: string
        discriminator:
          $ref: '#/components/schemas/LayoutTemplateDiscriminatorResponse'
          description: >-
            Rango de bytes del discriminador de tipo de registro que el parser
            lee para seleccionar un tipo de registro
        formatKey:
          description: >-
            Clave de descriptor de formato canónico (región/familia/variante)
            bajo la que se registra la plantilla
          examples:
            - br/cnab400/acme-cobranca
          type: string
        id:
          description: Identificador de la plantilla
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        recordTypeCount:
          description: Número de tipos de registro que declara el diseño
          examples:
            - 1
          format: int64
          type: integer
        recordWidths:
          additionalProperties:
            format: int64
            type: integer
          description: >-
            Ancho fijo en bytes por tipo de registro, indexado por tipo de
            registro
          type: object
        records:
          description: >-
            Tipos de registro que declara el diseño, cada uno con su ancho fijo
            y campos de rango de bytes ordenados, ordenados por tipo de registro
          items:
            $ref: '#/components/schemas/LayoutTemplateRecordResponse'
          type:
            - array
            - 'null'
        requiredFields:
          description: >-
            Nombres de campo que la variante debe declarar en sus tipos de
            registro
          items:
            type: string
          type:
            - array
            - 'null'
        variantKey:
          description: Clave de variante en el archivo por la que se indexa el diseño
          examples:
            - acme-cobranca
          type: string
      required:
        - id
        - formatKey
        - variantKey
        - recordTypeCount
        - discriminator
        - records
        - recordWidths
        - requiredFields
        - createdAt
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Código de error de dominio estable y legible por máquina con alcance
            al servicio emisor (formato: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: >-
            Una explicación legible por humanos específica de esta ocurrencia
            del problema.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Lista opcional de detalles de errores individuales
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            Una referencia URI que identifica la ocurrencia 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: >-
            Un resumen breve y legible por humanos del tipo de problema. Este
            valor no debería cambiar entre ocurrencias del error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: >-
            Una referencia URI a documentación legible por humanos para el
            error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    LayoutTemplateRecordRequest:
      additionalProperties: false
      properties:
        fields:
          description: Campos posicionales ordenados de este tipo de registro
          items:
            $ref: '#/components/schemas/LayoutTemplateFieldRequest'
          type:
            - array
            - 'null'
        recordType:
          description: >-
            Valor de tipo de registro que el segmento de bytes del discriminador
            debe coincidir (p. ej. "1")
          examples:
            - '1'
          type: string
        width:
          description: Ancho fijo en bytes que debe tener cada registro de este tipo
          examples:
            - 33
          format: int64
          type: integer
      required:
        - recordType
        - width
        - fields
      type: object
    LayoutTemplateDiscriminatorResponse:
      additionalProperties: false
      properties:
        length:
          description: Ancho del discriminador en bytes
          examples:
            - 1
          format: int64
          type: integer
        startByte:
          description: >-
            Desplazamiento de bytes (base cero) del discriminador de tipo de
            registro
          examples:
            - 0
          format: int64
          type: integer
      required:
        - startByte
        - length
      type: object
    LayoutTemplateRecordResponse:
      additionalProperties: false
      properties:
        fields:
          description: Campos posicionales ordenados de este tipo de registro
          items:
            $ref: '#/components/schemas/LayoutTemplateFieldResponse'
          type:
            - array
            - 'null'
        recordType:
          description: >-
            Valor de tipo de registro que coincide con el segmento de bytes del
            discriminador (p. ej. "1")
          examples:
            - '1'
          type: string
        width:
          description: Ancho fijo en bytes que debe tener cada registro de este tipo
          examples:
            - 33
          format: int64
          type: integer
      required:
        - recordType
        - width
        - fields
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Dónde ocurrió el error, p. ej. 'body.items[3].tags' o
            'path.thing-id'
          type: string
        message:
          description: Texto del mensaje de error
          type: string
        value:
          description: El valor en la ubicación indicada
      type: object
    LayoutTemplateFieldRequest:
      additionalProperties: false
      properties:
        kind:
          description: >-
            Tipo de valor: string (texto sin procesar), decimal (token literal
            de dinero/numérico, parseado más adelante) o date. Una columna de
            dinero DEBE ser decimal
          examples:
            - decimal
          type: string
        length:
          description: Ancho del campo en bytes (debe ser mayor que 0)
          examples:
            - 12
          format: int64
          type: integer
        name:
          description: >-
            Nombre de campo canónico que alimenta este segmento de bytes (p. ej.
            external_id, amount, currency, date)
          examples:
            - amount
          type: string
        startByte:
          description: Desplazamiento de bytes (base cero) donde comienza el campo
          examples:
            - 11
          format: int64
          type: integer
      required:
        - name
        - startByte
        - length
        - kind
      type: object
    LayoutTemplateFieldResponse:
      additionalProperties: false
      properties:
        kind:
          description: >-
            Tipo de valor: string (texto sin procesar), decimal (token literal
            de dinero/numérico, parseado más adelante) o date
          examples:
            - decimal
          type: string
        length:
          description: Ancho del campo en bytes
          examples:
            - 12
          format: int64
          type: integer
        name:
          description: >-
            Nombre de campo canónico que alimenta este segmento de bytes (p. ej.
            external_id, amount, currency, date)
          examples:
            - amount
          type: string
        startByte:
          description: Desplazamiento de bytes (base cero) donde comienza el campo
          examples:
            - 11
          format: int64
          type: integer
      required:
        - name
        - startByte
        - length
        - kind
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Autenticación con token Bearer (formato: "Bearer {token}")'

````