> ## 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 una Ruta de Operación

> Utilice este endpoint para crear una Ruta de Operación.



## OpenAPI

````yaml es/openapi/v3-current/ledger.yaml post /v1/organizations/{organization_id}/ledgers/{ledger_id}/operation-routes
openapi: 3.1.0
info:
  title: API de Midaz Ledger
  description: >-
    Referencia completa de la API para los servicios de Midaz Ledger, incluyendo
    gestión de organizaciones, operaciones de ledger, activos, segmentos,
    portafolios, cuentas, tipos de cuenta, transacciones, operaciones, saldos,
    rutas de operación, rutas de transacción e índices de metadatos.
  version: 3.7.8
servers:
  - url: https://ledger.sandbox.lerian.net
security: []
tags:
  - name: Organizations API
  - name: Ledgers API
  - name: Assets API
  - name: Segments API
  - name: Portfolios API
  - name: Account Types API
  - name: Accounts API
  - name: Balances API
  - name: Transactions API
  - name: Operations API
  - name: Operation Routes API
  - name: Transaction Routes API
  - name: Metadata Indexes API
  - name: Holders API
  - name: Instruments API
  - name: Billing Packages API
  - name: Packages API
  - name: Billing Calculation API
  - name: Estimation API
  - name: Encryption API
  - name: Protection API
  - name: Asset Rates API
paths:
  /v1/organizations/{organization_id}/ledgers/{ledger_id}/operation-routes:
    post:
      tags:
        - Operation routes API
      summary: Crear una Ruta de Operación
      description: Utilice este endpoint para crear una Ruta de Operación.
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/LedgerId'
        - $ref: '#/components/parameters/ContentType'
        - $ref: '#/components/parameters/XRequestId'
        - $ref: '#/components/parameters/Authorization'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOperationRouteRequest'
            example:
              account:
                ruleType: alias
                validIf: '@external/BRL'
              code: PIX-DEBIT
              title: PIX External Account Debit
              description: PIX External Account Debit
              metadata:
                customField1: value1
                customField2: 123
              operationType: source
              accountingEntries:
                direct:
                  debit:
                    code: 1.1.001
                    description: Cash - Available funds
                  credit:
                    code: 3.1.001
                    description: Service Revenue
      responses:
        '201':
          description: >-
            Indica que el recurso fue creado exitosamente y la operación se
            completó como se esperaba.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateOperationRouteResponse'
              example:
                id: 019c96a0-1071-7a0d-9916-a831221de252
                organizationId: 019c96a0-0a98-7287-9a31-786e0809c769
                ledgerId: 019c96a0-0ac0-7de9-9f53-9cf842a2ee5a
                account:
                  ruleType: alias
                  validIf:
                    - '@external/BRL'
                code: PIX-DEBIT
                description: PIX External Account Debit
                operationType: source
                action: direct
                title: PIX External Account Debit
                metadata:
                  customField1: value1
                  customField2: 123
                accountingEntries:
                  direct:
                    debit:
                      code: 1.1.001
                      description: Cash - Available funds
                    credit:
                      code: 3.1.001
                      description: Service Revenue
                createdAt: '2026-02-25T21:06:38.321656Z'
                deletedAt: null
                updatedAt: '2026-02-25T21:06:38.321656Z'
          headers: {}
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0009:
                  $ref: '#/components/examples/Error0009'
                Error0047:
                  $ref: '#/components/examples/Error0047'
                Error0065:
                  $ref: '#/components/examples/Error0065'
                Error0111:
                  $ref: '#/components/examples/Error0111'
                Error0112:
                  $ref: '#/components/examples/Error0112'
                Error0155:
                  $ref: '#/components/examples/Error0155'
        '401':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0041:
                  $ref: '#/components/examples/Error0041'
                Error0042:
                  $ref: '#/components/examples/Error0042'
        '403':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0043:
                  $ref: '#/components/examples/Error0043'
        '409':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0100:
                  $ref: '#/components/examples/Error0100'
        '500':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFormat'
              examples:
                Error0046:
                  $ref: '#/components/examples/Error0046'
components:
  parameters:
    OrganizationId:
      name: organization_id
      in: path
      description: El identificador único de la Organización asociada al Ledger.
      required: true
      example: 019c96a0-0a98-7287-9a31-786e0809c769
      schema:
        type: string
        format: uuid
    LedgerId:
      name: ledger_id
      in: path
      description: El identificador único del Ledger asociado.
      required: true
      example: 019c96a0-0ac0-7de9-9f53-9cf842a2ee5a
      schema:
        type: string
        format: uuid
    ContentType:
      name: Content-Type
      in: header
      description: >-
        El tipo de medio del recurso. El valor recomendado es
        `application/json`.
      required: false
      example: application/json
      schema:
        type: string
    XRequestId:
      name: X-Request-Id
      in: header
      description: Un identificador único utilizado para rastrear y seguir cada solicitud.
      required: false
      example: 019c96a0-0a98-7287-9a31-786e0809c769
      schema:
        type: string
        format: uuid
    Authorization:
      name: Authorization
      in: header
      required: false
      schema:
        type: string
      description: >
        Token JWT bearer para autenticación.

        Requerido cuando `PLUGIN_AUTH_ENABLED=true` (obligatorio en despliegues
        multiinquilino).

        Opcional en el modo OSS de inquilino único predeterminado.

        Formato: `Bearer <token>`
  schemas:
    CreateOperationRouteRequest:
      type: object
      properties:
        account:
          type: object
          description: >-
            Define la regla para seleccionar la cuenta que participará en la
            operación (origen o destino).
          properties:
            ruleType:
              type: string
              enum:
                - alias
                - account_type
              description: >
                Especifica el tipo de regla para la validación de la cuenta en
                la operación.

                - **alias**: Espera un alias de cuenta específico. El campo
                `validIf` debe contener la cadena de alias exacta (p. ej.,
                "validIf": "@john_doe").

                - **account_type**: Espera que la cuenta tenga uno de los tipos
                de cuenta especificados. El campo `validIf` debe contener un
                arreglo de `keyValues` de tipo de cuenta (p. ej., "validIf":
                ["current_asset", "payment_account"]).
            validIf:
              oneOf:
                - type: string
                  example: '@external/BRL'
                - type: array
                  items:
                    type: string
                    example: current_asset
                  example:
                    - current_asset
                    - payment_account
              description: >
                El criterio de validación basado en ruleType. 

                - Cuando `ruleType` es **alias**: una cadena que contiene el
                alias específico de la cuenta (p. ej., "@john_doe"). 

                - Cuando `ruleType` es **account_type**: un arreglo de cadenas
                que contiene los `keyValues` del tipo de cuenta (p. ej.,
                ["current_asset", "payment_account"]).
        code:
          type: string
          maxLength: 100
          deprecated: true
          description: >-
            Una referencia externa utilizada para identificar la ruta de
            operación. **Obsoleto:** utilice códigos de rúbrica dentro de
            `accountingEntries` en su lugar.
        title:
          type: string
          maxLength: 50
          description: >-
            Texto breve que resume el propósito de la operación. Se utiliza como
            nota de asiento para su identificación.
        description:
          type: string
          maxLength: 250
          description: Descripción detallada del propósito y uso de la Ruta de Operación.
        operationType:
          type: string
          enum:
            - source
            - destination
            - bidirectional
          description: >-
            El tipo de la Ruta de Operación. Use `bidirectional` cuando la ruta
            puede operar en ambas direcciones.
        metadata:
          $ref: '#/components/schemas/Metadata'
        accountingEntries:
          $ref: '#/components/schemas/AccountingEntries'
      required:
        - title
        - operationType
    CreateOperationRouteResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: El identificador único de la Ruta de Operación.
        organizationId:
          type: string
          format: uuid
          description: El identificador único de la Organización.
        ledgerId:
          type: string
          description: El identificador único del Ledger.
          format: uuid
        title:
          type: string
          description: >-
            Texto breve que resume el propósito de la operación. Se utiliza como
            nota de asiento para su identificación.
        code:
          type: string
          maxLength: 100
          deprecated: true
          description: >-
            Una referencia externa utilizada para identificar la ruta de
            operación. **Obsoleto:** utilice códigos de rúbrica dentro de
            `accountingEntries` en su lugar.
        description:
          type: string
          description: Descripción detallada del propósito y uso de la Ruta de Operación.
        operationType:
          type: string
          enum:
            - source
            - destination
            - bidirectional
          description: >-
            El tipo de la Ruta de Operación. Use `bidirectional` cuando la ruta
            puede operar en ambas direcciones.
        accountingEntries:
          $ref: '#/components/schemas/AccountingEntries'
        account:
          type: object
          description: >-
            Define la regla para seleccionar la cuenta que participará en la
            operación (débito o crédito).
          properties:
            ruleType:
              type: string
              enum:
                - alias
                - account_type
              description: >
                Especifica el tipo de regla para la validación de la cuenta en
                la operación.

                - **alias**: Espera un alias de cuenta específico. El campo
                `validIf` debe contener la cadena de alias exacta (p. ej.,
                "validIf": "@john_doe").

                - **account_type**: Espera que la cuenta tenga uno de los tipos
                de cuenta especificados. El campo `validIf` debe contener un
                arreglo de `keyValues` de tipo de cuenta (p. ej., "validIf":
                ["current_asset", "payment_account"]).
            validIf:
              oneOf:
                - type: array
                  items:
                    type: string
                    example:
                      - current_asset
                      - payment_account
                - type: string
                  example: '@external/BRL'
              description: >
                El criterio de validación basado en ruleType. Cuando `ruleType`
                es **alias**: una cadena que contiene el alias específico de la
                cuenta (p. ej., "@john_doe"). Cuando `ruleType` es
                **account_type**: un arreglo de cadenas que contiene los
                `keyValues` del tipo de cuenta (p. ej., ["current_asset",
                "payment_account"]).
        createdAt:
          type: string
          format: date-time
          description: Fecha y hora de creación (UTC).
        updatedAt:
          type: string
          format: date-time
          description: Fecha y hora de la última actualización (UTC).
        deletedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: Fecha y hora de la eliminación lógica, si aplica (UTC).
        metadata:
          $ref: '#/components/schemas/Metadata'
    ErrorFormat:
      type: object
      description: El mensaje de error de respuesta.
      required:
        - code
        - title
        - message
      properties:
        code:
          type: string
          description: Un identificador único y estable para el error.
        title:
          type: string
          description: Un breve resumen del problema.
        message:
          type: string
          description: Orientación detallada para resolver el error.
        entityType:
          type: string
          description: >-
            El tipo de entidad a la que se refiere el error (p. ej.
            organization, ledger, account, transaction). Opcional.
        fields:
          type: object
          additionalProperties: true
          description: Información adicional sobre los campos que causaron el error.
    Metadata:
      type: object
      additionalProperties:
        oneOf:
          - type: string
            maxLength: 2000
          - type: number
          - type: boolean
      description: >-
        Un objeto que contiene pares clave-valor para agregar como metadatos,
        donde el campo `name` es la clave y el campo `value` es el valor. Por
        ejemplo, para agregar un Centro de Costo, use `'costCenter':
        'BR_11101997'`.


        **Restricciones:** las claves deben tener como máximo 100 caracteres;
        los valores de cadena de texto, como máximo 2000 caracteres. No se
        permiten objetos anidados (los valores deben ser cadena de texto, número
        o booleano), la estructura no puede exceder una profundidad máxima de
        10, y se permite un máximo de 100 claves.
    AccountingEntries:
      type: object
      description: >-
        Entradas contables agrupadas por tipo de acción de transacción. Cada
        acción se mapea a un par de rúbricas de débito y crédito.
      properties:
        direct:
          $ref: '#/components/schemas/AccountingEntry'
          description: Entrada contable para acciones directas (aprobación inmediata).
        hold:
          $ref: '#/components/schemas/AccountingEntry'
          description: Entrada contable para acciones de retención (transacción pendiente).
        commit:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Entrada contable para acciones de confirmación (confirmar una
            transacción pendiente).
        cancel:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Entrada contable para acciones de cancelación (cancelar una
            transacción pendiente).
          nullable: true
        revert:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Entrada contable para acciones de reversión (revertir una
            transacción aprobada).
          nullable: true
        overdraft:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Entrada contable para el ciclo de vida del overdraft. La rúbrica de
            débito clasifica draws de overdraft (déficit crece); la rúbrica de
            crédito clasifica reembolsos (déficit disminuye). Ambas rúbricas son
            obligatorias cuando esta entrada está presente.
          nullable: true
    AccountingEntry:
      type: object
      description: >-
        Un par de contabilidad de partida doble con rúbricas de débito y
        crédito.
      required:
        - debit
        - credit
      properties:
        debit:
          $ref: '#/components/schemas/AccountingRubric'
        credit:
          $ref: '#/components/schemas/AccountingRubric'
    AccountingRubric:
      type: object
      description: >-
        Una rúbrica contable que representa un lado de un registro de partida
        doble.
      required:
        - code
        - description
      properties:
        code:
          type: string
          maxLength: 50
          description: El código de la rúbrica contable (ej., 1.1.001).
        description:
          type: string
          maxLength: 250
          description: Una descripción de la rúbrica contable.
  examples:
    Error0009:
      summary: Missing Fields in Request
      value:
        code: 9
        title: Missing Fields in Request
        message: >-
          Your request is missing one or more required fields. Please refer to
          the documentation to ensure all necessary fields are included in your
          request.
        fields:
          metadataKey: metadataKey is a required field
    Error0047:
      summary: Bad Request
      value:
        code: '0047'
        title: Bad Request
        message: >-
          The server could not understand the request due to malformed syntax.
          Please check the listed fields and try again.
    Error0065:
      value:
        code: '0065'
        title: Invalid Path Parameter
        message: >-
          The provided path parameter {{parameter_name}} is not in the expected
          format. Please ensure the parameter adheres to the required format and
          try again.
      summary: Invalid Path Parameter
    Error0111:
      value:
        code: '0111'
        title: Invalid Account Rule Type
        message: >-
          The provided 'account.ruleType' is not valid. Accepted types are
          'alias' or 'account_type'. Please provide a valid rule type.
      summary: Invalid Account Rule Type
    Error0112:
      value:
        code: '0112'
        title: Invalid Account Rule Value
        message: >-
          The provided 'account.validIf' is not valid. Please provide a string
          for 'alias' or an array of strings for 'account_type'.
      summary: Invalid Account Rule Value
    Error0155:
      summary: Invalid Route Action
      value:
        code: '0155'
        title: Invalid Route Action
        message: >-
          The provided action value is not valid. Accepted values are 'direct',
          'hold', 'commit', 'cancel', or 'revert'.
    Error0041:
      summary: Token Missing
      value:
        code: '0041'
        title: Token Missing
        message: >-
          A valid token must be provided in the request header. Please include a
          token and try again.
    Error0042:
      summary: Invalid Token
      value:
        code: '0042'
        title: Invalid Token
        message: >-
          The provided token is expired, invalid or malformed. Please provide a
          valid token and try again.
    Error0043:
      summary: Insufficient Privileges
      value:
        code: '0043'
        title: Insufficient Privileges
        message: >-
          You do not have the necessary permissions to perform this action.
          Please contact your administrator if you believe this is an error.
    Error0100:
      value:
        code: '0100'
        title: Operation Route Title Already Exists
        message: >-
          An operation route with the specified title already exists. Please use
          a different title and try again.
      summary: Operation Route Title Already Exists
    Error0046:
      summary: Internal Server Error
      value:
        code: '0046'
        title: Internal Server Error
        message: >-
          The server encountered an unexpected error. Please try again later or
          contact support.

````