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

# Criar uma Rota de Operação

> Use este endpoint para criar uma Rota de Operação.



## OpenAPI

````yaml pt/openapi/v3-current/ledger.yaml post /v1/organizations/{organization_id}/ledgers/{ledger_id}/operation-routes
openapi: 3.1.0
info:
  title: API Midaz Ledger
  description: >-
    Referência completa da API para serviços do Midaz Ledger incluindo
    gerenciamento de organizações, operações de ledger, ativos, segmentos,
    portfolios, contas, tipos de conta, transações, operações, saldos, rotas de
    operação, rotas de transação e índices de metadata.
  version: 3.7.8
servers:
  - url: https://ledger.sandbox.lerian.net
security: []
tags:
  - name: API de Organizações
  - name: API de Ledgers
  - name: API de Ativos
  - name: API de Segmentos
  - name: API de Portfolios
  - name: API de Tipos de Conta
  - name: API de Contas
  - name: API de Saldos
  - name: API de Transações
  - name: API de Operações
  - name: API de Rotas de Operação
  - name: API de Rotas de Transação
  - name: API de Índices de Metadata
  - name: API de Titulares
  - name: API de Instrumentos
  - name: API de Pacotes de Cobrança
  - name: API de Pacotes
  - name: API de Cálculo de Cobrança
  - name: API de Estimativa
  - name: API de Criptografia
  - name: API de Proteção
  - name: API de Taxas de Ativos
paths:
  /v1/organizations/{organization_id}/ledgers/{ledger_id}/operation-routes:
    post:
      tags:
        - API de Rotas de Operação
      summary: Criar uma Rota de Operação
      description: Use este endpoint para criar uma Rota de Operação.
      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 o recurso foi criado com sucesso e a operação foi
            concluída conforme esperado.
          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: O identificador único da Organização associada ao Ledger.
      required: true
      example: 019c96a0-0a98-7287-9a31-786e0809c769
      schema:
        type: string
        format: uuid
    LedgerId:
      name: ledger_id
      in: path
      description: O identificador único do Ledger associado.
      required: true
      example: 019c96a0-0ac0-7de9-9f53-9cf842a2ee5a
      schema:
        type: string
        format: uuid
    ContentType:
      name: Content-Type
      in: header
      description: O tipo de mídia do recurso. O valor recomendado é `application/json`.
      required: false
      example: application/json
      schema:
        type: string
    XRequestId:
      name: X-Request-Id
      in: header
      description: >-
        Um identificador único utilizado para rastrear e acompanhar cada
        requisição.
      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 autenticação.

        Obrigatório quando `PLUGIN_AUTH_ENABLED=true` (exigido em implantações
        multi-tenant).

        Opcional no modo OSS single-tenant padrão.

        Formato: `Bearer <token>`
  schemas:
    CreateOperationRouteRequest:
      type: object
      properties:
        account:
          type: object
          description: >-
            Define a regra para selecionar a conta que participará da operação
            (origem ou destino).
          properties:
            ruleType:
              type: string
              enum:
                - alias
                - account_type
              description: >
                Especifica o tipo de regra para validação de conta na operação.

                - **alias**: Espera um alias de conta específico. O campo
                `validIf` deve conter a string exata do alias (ex.: "validIf":
                "@john_doe").

                - **account_type**: Espera que a conta tenha um dos tipos de
                conta especificados. O campo `validIf` deve conter um array de
                `keyValues` de tipos de conta (ex.: "validIf": ["current_asset",
                "payment_account"]).
            validIf:
              oneOf:
                - type: string
                  example: '@external/BRL'
                - type: array
                  items:
                    type: string
                    example: deposit
                  example:
                    - deposit
                    - savings
              description: >
                Os critérios de validação baseados no ruleType. 

                - Quando `ruleType` é **alias**: Uma string contendo o alias
                específico da conta (ex.: "@john_doe"). 

                - Quando `ruleType` é **account_type**: Um array de strings
                contendo os `keyValues` dos tipos de conta (ex.:
                ["current_asset", "payment_account"]).
        code:
          type: string
          maxLength: 100
          deprecated: true
          description: >-
            Uma referência externa usada para identificar a rota de operação.
            **Obsoleto:** use códigos de rubrica dentro de `accountingEntries`
            em vez disso.
        title:
          type: string
          maxLength: 50
          description: >-
            Texto curto que resume o propósito da operação. Usado como nota de
            entrada para identificação.
        description:
          type: string
          maxLength: 250
          description: Descrição detalhada do propósito e uso da Rota de Operação.
        operationType:
          type: string
          enum:
            - source
            - destination
            - bidirectional
          description: >-
            O tipo da Rota de Operação. Use `bidirectional` quando a rota pode
            operar em ambas as direções.
        metadata:
          $ref: '#/components/schemas/Metadata'
        accountingEntries:
          $ref: '#/components/schemas/AccountingEntries'
      required:
        - title
        - operationType
    CreateOperationRouteResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: O identificador único da Rota de Operação.
        organizationId:
          type: string
          format: uuid
          description: O identificador único da Organização.
        ledgerId:
          type: string
          description: O identificador único do Ledger.
          format: uuid
        title:
          type: string
          description: >-
            Texto curto que resume o propósito da operação. Usado como nota de
            entrada para identificação.
        code:
          type: string
          maxLength: 100
          deprecated: true
          description: >-
            Uma referência externa usada para identificar a rota de operação.
            **Obsoleto:** use códigos de rubrica dentro de `accountingEntries`
            em vez disso.
        description:
          type: string
          description: Descrição detalhada do propósito e uso da Rota de Operação.
        operationType:
          type: string
          enum:
            - source
            - destination
            - bidirectional
          description: >-
            O tipo da Rota de Operação. Use `bidirectional` quando a rota pode
            operar em ambas as direções.
        accountingEntries:
          $ref: '#/components/schemas/AccountingEntries'
        account:
          type: object
          description: >-
            Define a regra para selecionar a conta que participará da operação
            (débito ou crédito).
          properties:
            ruleType:
              type: string
              enum:
                - alias
                - account_type
              description: >
                Especifica o tipo de regra para validação de conta na operação.

                - **alias**: Espera um alias de conta específico. O campo
                `validIf` deve conter a string exata do alias (ex.: "validIf":
                "@john_doe").

                - **account_type**: Espera que a conta tenha um dos tipos de
                conta especificados. O campo `validIf` deve conter um array de
                `keyValues` de tipos de conta (ex.: "validIf": ["current_asset",
                "payment_account"]).
            validIf:
              oneOf:
                - type: array
                  items:
                    type: string
                    example:
                      - current_asset
                      - payment_account
                - type: string
                  example: '@external/BRL'
              description: >
                Os critérios de validação baseados no ruleType. Quando
                `ruleType` é **alias**: Uma string contendo o alias específico
                da conta (ex.: "@john_doe"). Quando `ruleType` é
                **account_type**: Um array de strings contendo os `keyValues`
                dos tipos de conta (ex.: [\"current_asset\",
                \"payment_account\"]).
        createdAt:
          type: string
          format: date-time
          description: Data e hora de criação (UTC).
        updatedAt:
          type: string
          format: date-time
          description: Data e hora da última atualização (UTC).
        deletedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: Data e hora da exclusão lógica, se aplicável (UTC).
        metadata:
          $ref: '#/components/schemas/Metadata'
    ErrorFormat:
      type: object
      description: A mensagem de erro da resposta.
      required:
        - code
        - title
        - message
      properties:
        code:
          type: string
          description: Um identificador único e estável para o erro.
        title:
          type: string
          description: Um breve resumo do problema.
        message:
          type: string
          description: Orientação detalhada para resolver o erro.
        entityType:
          type: string
          description: >-
            O tipo de entidade ao qual o erro se refere (por exemplo,
            organization, ledger, account, transaction). Opcional.
        fields:
          type: object
          additionalProperties: true
          description: Informações adicionais sobre os campos que causaram o erro.
    Metadata:
      type: object
      additionalProperties:
        oneOf:
          - type: string
            maxLength: 2000
          - type: number
          - type: boolean
      description: >-
        Um objeto contendo pares de chave-valor para adicionar como metadata,
        onde o campo `name` é a chave e o campo `value` é o valor. Por exemplo,
        para adicionar um Centro de Custo, use `'costCenter': 'BR_11101997'`.


        **Restrições:** as chaves devem ter no máximo 100 caracteres; valores de
        string no máximo 2000 caracteres. Objetos aninhados não são permitidos
        (os valores devem ser string, número ou booleano), a estrutura não pode
        exceder uma profundidade máxima de 10, e é permitido um máximo de 100
        chaves.
    AccountingEntries:
      type: object
      description: >-
        Lançamentos contábeis agrupados por tipo de ação de transação. Cada ação
        é mapeada para um par de rubricas de débito e crédito.
      properties:
        direct:
          $ref: '#/components/schemas/AccountingEntry'
          description: Lançamento contábil para ações diretas (aprovação imediata).
        hold:
          $ref: '#/components/schemas/AccountingEntry'
          description: Lançamento contábil para ações de retenção (transação pendente).
        commit:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Lançamento contábil para ações de confirmação (confirmar uma
            transação pendente).
        cancel:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Lançamento contábil para ações de cancelamento (cancelar uma
            transação pendente).
          nullable: true
        revert:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Lançamento contábil para ações de reversão (reverter uma transação
            aprovada).
          nullable: true
        overdraft:
          $ref: '#/components/schemas/AccountingEntry'
          description: >-
            Lançamento contábil para o ciclo de vida do overdraft. A rubrica de
            débito classifica draws de overdraft (déficit cresce); a rubrica de
            crédito classifica reembolsos (déficit diminui). Ambas as rubricas
            são obrigatórias quando este lançamento está presente.
          nullable: true
    AccountingEntry:
      type: object
      description: >-
        Um par de contabilidade de partida dobrada com rubricas de débito e
        crédito.
      required:
        - debit
        - credit
      properties:
        debit:
          $ref: '#/components/schemas/AccountingRubric'
        credit:
          $ref: '#/components/schemas/AccountingRubric'
    AccountingRubric:
      type: object
      description: >-
        Uma rubrica contábil que representa um lado de um registro de partida
        dobrada.
      required:
        - code
        - description
      properties:
        code:
          type: string
          maxLength: 50
          description: O código da rubrica contábil (ex., 1.1.001).
        description:
          type: string
          maxLength: 250
          description: Uma descrição da rubrica contábil.
  examples:
    Error0009:
      summary: Missing Fields in Request
      value:
        code: '0009'
        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.

````