openapi: 3.1.0
info:
  title: API de Contas
  version: ''
  description: >
    A API de Contas da ONZ foi criada para integrar sistemas corporativos a
    serviços financeiros, com foco em gestão de contas, pagamentos,
    movimentações financeiras e notificações operacionais. Por meio desta API
    REST, sua aplicação pode consultar saldos e extratos, iniciar pagamentos,
    acompanhar transações, configurar webhooks e operar fluxos financeiros de
    forma segura, rastreável e escalável.


    Esta documentação descreve os recursos disponíveis, os parâmetros
    obrigatórios e opcionais, os cabeçalhos necessários, os formatos esperados e
    os exemplos de resposta para cenários de sucesso e erro.


    <h3>Objetivo da API</h3>

    O objetivo desta API é oferecer uma interface padronizada para que empresas
    acessem recursos bancários diretamente, sem depender de processos manuais.
    Ela permite automatizar operações como Pix, TED, transferências internas,
    pagamentos de boletos, consulta de saldo, conciliação de extratos e
    recebimento de notificações por webhook.


    <h3>O que cada grupo de endpoints representa</h3>

    <ul>
      <li><b>Autenticação:</b> emissão de tokens OAuth 2.0 para acesso seguro aos recursos da API.</li>
      <li><b>Contas:</b> consulta de saldo, extrato transacional e extratos consolidados por período.</li>
      <li><b>Contas BaaS:</b> listagem e consulta das contas filhas criadas dentro de um BaaS.</li>
      <li><b>Onboardings BaaS:</b> acompanhamento dos processos de abertura de conta vinculados ao BaaS.</li>
      <li><b>Pix:</b> criação, consulta e devolução de pagamentos Pix por chave, QR Code ou dados bancários.</li>
      <li><b>Boletos:</b> consulta, pagamento e acompanhamento de pagamentos de boletos.</li>
      <li><b>TED:</b> criação e consulta de transferências TED para outras instituições.</li>
      <li><b>Transferências internas:</b> criação e consulta de transferências entre contas da mesma instituição.</li>
      <li><b>Infrações:</b> consulta e resposta a contestações relacionadas a operações Pix.</li>
      <li><b>Webhooks:</b> cadastro de URLs para receber notificações assíncronas sobre eventos financeiros.</li>
    </ul>


    <h3>Credenciamento para uso da API</h3>

    Antes de iniciar a integração:

    <ol>

    <li>Solicite a habilitação da conta que será usada na integração;</li>

    <li>Crie as credenciais de API no ambiente administrativo pelo menu
    "Configurações" -> "API Contas" -> "Nova credencial";</li>

    <li>Para operar múltiplas contas de um BaaS, crie credenciais pelo menu
    "Configurações" -> "API BaaS" -> "Nova credencial BaaS";</li>

    <li>Solicite o certificado digital de integração.</li>

    </ol>


    <h3>Credenciais BaaS e seleção da conta alvo</h3>

    Credenciais BaaS possuem `clientId` com prefixo `baas_` e são emitidas pela
    conta dona do BaaS. Elas permitem consultar recursos do BaaS e operar contas
    filhas vinculadas a esse BaaS.


    Para endpoints operacionais de conta, como saldos, transações, Pix, TED,
    boletos, transferências internas, infrações e webhooks, envie o cabeçalho
    `x-account-id` com o identificador interno da conta filha que será operada.
    O cabeçalho é obrigatório apenas para tokens emitidos por credenciais BaaS.
    Tokens de credenciais de conta continuam operando a própria conta da
    credencial.


    Endpoints de escopo BaaS, como `GET /accounts`, `GET /accounts/{id}`, `GET
    /onboardings` e `GET /onboardings/{id}`, não exigem `x-account-id`.
servers:
  - url: https://api.example.com/api/v2
tags:
  - name: Autenticação
    description: >
      Esta seção descreve como obter tokens de acesso OAuth 2.0 para autenticar
      chamadas corporativas. Cada requisição aos recursos protegidos deve enviar
      um token válido no cabeçalho `Authorization`.
  - name: Contas
    description: >
      Os endpoints de contas permitem consultar saldo, listar transações, obter
      detalhes de movimentações e gerar extratos consolidados para apoiar
      conciliação, auditoria e acompanhamento financeiro.
  - name: Onboardings
    description: >
      Os endpoints de onboardings permitem acompanhar processos de abertura de
      conta criados no contexto de uma credencial BaaS.
  - name: Pix
    description: >
      Os endpoints Pix permitem iniciar pagamentos instantâneos, consultar
      transações, validar QR Codes, consultar chaves Pix e solicitar devoluções.
      As operações podem ser feitas por chave Pix, QR Code copia e cola ou dados
      bancários do favorecido.


      <h4>Sobre chaves Pix</h4>

      A chave Pix é uma forma simples de identificar o recebedor de uma
      transferência. Com ela, não é necessário informar agência, conta e demais
      dados bancários do destinatário. Uma mesma pessoa ou empresa pode possuir
      mais de uma chave.

      <table>
        <tr>
          <th>Tipo de chave Pix</th>
          <th>Descrição</th>
          <th>Validação de formato</th>
        </tr>
        <tr>
          <td>CPF</td>
          <td>Documento de pessoa física</td>
          <td>^[0-9]{11}$</td>
        </tr>
        <tr>
          <td>CNPJ</td>
          <td>Documento de pessoa jurídica</td>
          <td>^[0-9]{14}$</td>
        </tr>
        <tr>
          <td>Telefone</td>
          <td>Número de telefone</td>
          <td>^+[1-9][0-9]\d{1,14}$</td>
        </tr>
        <tr>
          <td>E-mail</td>
          <td>Endereço de e-mail</td>
          <td>^[a-z0-9.!#$&'*+\\\\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$</td>
        </tr>
        <tr>
          <td>EVP (chave aleatória)</td>
          <td>Chave aleatória gerada pelo Banco Central do Brasil</td>
          <td>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$</td>
        </tr>
      </table>

      <h4>QR Code Pix (copia e cola)</h4>

      Também é possível pagar usando o código conhecido como "copia e cola",
      padronizado pelo Banco Central do Brasil e representável por QR Code.

      <h4>Dados bancários do favorecido</h4>

      Como terceira opção, o pagamento pode ser iniciado informando diretamente
      os dados bancários do recebedor.
  - name: Boletos
    description: >
      Os endpoints de boletos permitem consultar informações do título, iniciar
      o pagamento, listar pagamentos realizados e acompanhar o detalhe de cada
      operação.
  - name: Infrações
    description: >
      Infrações são mecanismos de contestação de operações Pix, geralmente
      relacionadas a suspeita de fraude. Estes endpoints permitem consultar
      casos e enviar defesas quando aplicável.
  - name: Webhooks
    description: >
      Utilize webhooks para receber notificações sobre eventos da API assim que
      eles ocorrerem, como liquidação de Pix, recebimentos, devoluções, falhas
      em operações de saída e abertura de infrações.

      Quando um evento assinado acontece, a ONZ envia uma notificação HTTP para
      a URL configurada no seu ambiente.<br><br><br>

      <img src='/img/web-hooks-flow.png'>


      <h3>Comportamento em caso de falhas recorrentes</h3>

      <table>
        <tr>
          <th>Quantidade de falhas</th>
          <th>Ação</th>
        </tr>
        <tr>
          <td>1 a 5 falhas</td>
          <td>As mensagens enfileiradas serão reenviadas após 2 minutos</td>
        </tr>
        <tr>
          <td>6 a 10 falhas</td>
          <td>As mensagens enfileiradas serão reenviadas em intervalos de 15 minutos</td>
        </tr>
        <tr>
          <td>11 a 15 falhas</td>
          <td>As mensagens enfileiradas serão reenviadas em intervalos de 60 minutos</td>
        </tr>
        <tr>
          <td>Mais de 15 falhas</td>
          <td>O processamento do webhook será desativado</td>
        </tr>
      </table>
  - name: Transferências Internas
    description: >
      Os endpoints de transferências internas permitem criar e consultar
      transferências entre contas da mesma instituição.
  - name: TED
    description: >
      Os endpoints de TED permitem criar e consultar transferências para contas
      de outras instituições financeiras.
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /oauth/token
          scopes:
            pix.read: Permite consultar operações Pix
            pix.write: Permite criar pagamentos e devoluções Pix
            billets.read: Permite consultar boletos
            billets.write: Permite criar pagamentos de boletos
            webhook.read: Permite consultar webhooks
            webhook.write: Permite criar e remover webhooks
            transactions.read: Permite consultar transações
            account.read: Permite consultar informações da conta
            baas.accounts.read: Permite listar e consultar contas filhas do BaaS
            baas.onboarding.read: Permite listar e consultar onboardings do BaaS
            baas.onboarding.write: Permite criar onboardings no BaaS
            internal-transfer.read: Permite consultar transferências internas
            internal-transfer.write: Permite criar transferências internas
            ted.read: Permite consultar transferências TED
            ted.write: Permite criar transferências TED
  requestBodies:
    AuthData:
      required: true
      content:
        application/json:
          schema:
            required:
              - clientId
              - clientSecret
              - grantType
            properties:
              clientId:
                type: string
                description: >-
                  Identificador da credencial. Credenciais BaaS usam prefixo
                  `baas_`.
              clientSecret:
                type: string
              grantType:
                type: string
                default: client_credentials
              scope:
                type: string
        application/x-www-form-urlencoded:
          schema:
            properties:
              client_id:
                type: string
                description: >-
                  Identificador da credencial. Credenciais BaaS usam prefixo
                  `baas_`.
              client_secret:
                type: string
              grant_type:
                type: string
                default: client_credentials
              scope:
                type: string
    WebhookData:
      required: true
      content:
        application/json:
          schema:
            properties:
              uri:
                type: string
                format: uri
              email:
                type: string
                description: >-
                  E-mail utilizado para realizar as notificações de erros de
                  envio de webhooks
              method:
                type: string
                enum:
                  - POST
                  - GET
                  - PUT
                default: POST
              enabled:
                type: boolean
                default: true
              pauseOnFail:
                type: boolean
                default: true
              headers:
                type: object
                properties:
                  headerName:
                    type: string
            required:
              - uri
              - enabled
    WebhookPayload:
      content:
        application/json:
          schema:
            properties:
              data:
                type: object
                $ref: '#/components/schemas/PixDataProperties'
              type:
                type: string
                enum:
                  - TRANSFER
                  - RECEIVE
                  - REFUND
                  - CASHOUT
    CashOutWebhookPayload:
      content:
        application/json:
          schema:
            properties:
              data:
                type: object
                $ref: '#/components/schemas/CashoutWebhookProperties'
    InfractionWebhookPayload:
      content:
        application/json:
          schema:
            properties:
              data:
                type: object
                $ref: '#/components/schemas/InfractionData'
              type:
                type: string
                const: INFRACTION
    PixQrcData:
      required: true
      content:
        application/json:
          schema:
            required:
              - qrCode
              - payment
            properties:
              qrCode:
                type: string
              creditorDocument:
                type: string
              priority:
                description: >-
                  Quando definido como `HIGH`, o pagamento é processado
                  imediatamente, sem passar pela fila. O valor `HIGH` só é
                  permitido quando `creditorDocument` for informado.
                type: string
                enum:
                  - HIGH
                  - NORM
              description:
                type: string
              paymentFlow:
                $ref: '#/components/schemas/PaymentFlowType'
              expiration:
                $ref: '#/components/schemas/PixCashOutExpiration'
              payment:
                type: object
                properties:
                  currency:
                    type: string
                    enum:
                      - BRL
                  amount:
                    type: number
                    format: double
              ispbDeny:
                $ref: '#/components/schemas/IspbDenyList'
    PixManuData:
      required: true
      content:
        application/json:
          schema:
            required:
              - creditorAccount
              - payment
            properties:
              priority:
                description: >-
                  Quando definido como `HIGH`, o pagamento é processado
                  imediatamente, sem passar pela fila. O valor `HIGH` só é
                  permitido quando `creditorDocument` for informado.
                type: string
                enum:
                  - HIGH
                  - NORM
              description:
                type: string
              paymentFlow:
                $ref: '#/components/schemas/PaymentFlowType'
              expiration:
                $ref: '#/components/schemas/PixCashOutExpiration'
              creditorAccount:
                $ref: '#/components/schemas/CreditorData'
              payment:
                type: object
                properties:
                  currency:
                    type: string
                    enum:
                      - BRL
                  amount:
                    type: number
                    format: double
              ispbDeny:
                $ref: '#/components/schemas/IspbDenyList'
    PixDictData:
      required: true
      content:
        application/json:
          schema:
            required:
              - pixKey
              - payment
            properties:
              pixKey:
                type: string
                description: >-
                  Chave Pix aceita: CPF, CNPJ, e-mail, telefone ou EVP (chave
                  aleatória).
              creditorDocument:
                type: string
              endToEndId:
                type: string
                description: >
                  Identificador único obtido através da consulta de chave PIX.

                  Este parâmetro é opcional e deve ser utilizado para garantir a
                  baixa correta do saldo da ficha de consultas de chave PIX.
              priority:
                description: >-
                  Quando definido como `HIGH`, o pagamento é processado
                  imediatamente, sem passar pela fila. O valor `HIGH` só é
                  permitido quando `creditorDocument` for informado.
                type: string
                enum:
                  - HIGH
                  - NORM
              description:
                type: string
              paymentFlow:
                $ref: '#/components/schemas/PaymentFlowType'
              expiration:
                $ref: '#/components/schemas/PixCashOutExpiration'
              payment:
                type: object
                properties:
                  currency:
                    type: string
                    enum:
                      - BRL
                  amount:
                    type: number
                    format: double
              ispbDeny:
                $ref: '#/components/schemas/IspbDenyList'
    BilletPaymentRegisterRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - digitableCode
              - description
            properties:
              digitableCode:
                type: string
                description: >-
                  Representação numérica do código de barras do boleto (linha
                  digitável). Informe apenas números.
              description:
                type: string
              paymentFlow:
                $ref: '#/components/schemas/PaymentFlowType'
              payment:
                type: object
                properties:
                  currency:
                    type: string
                    enum:
                      - BRL
                  amount:
                    type: number
                    format: double
    BilletPaymentRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - billetCode
              - description
            properties:
              billetCode:
                type: string
                maxLength: 50
                description: >-
                  Representação numérica da linha digitável ou do código de
                  barras do boleto. Informe apenas números.
              description:
                type: string
              paymentFlow:
                $ref: '#/components/schemas/PaymentFlowType'
              payment:
                type: object
                properties:
                  currency:
                    type: string
                    enum:
                      - BRL
                  amount:
                    type: number
                    format: double
    BilletData:
      required: true
      content:
        application/json:
          schema:
            properties:
              customerTitleNumber:
                type: string
              customerInternalCtrlTitleNumber:
                type: string
              titleIssuanceDate:
                type: string
                format: date-time
              titleDueDate:
                type: string
                format: date-time
              faceTitleAmount:
                type: number
                format: double
              iofAmount:
                type: number
                format: double
              protest:
                $ref: '#/components/schemas/BilletProtestData'
              issuer:
                $ref: '#/components/schemas/BilletPersonData'
              assignor:
                $ref: '#/components/schemas/BilletPersonData'
              debtor:
                $ref: '#/components/schemas/BilletPersonData'
              interest:
                $ref: '#/components/schemas/BilletAddicionalValueData'
              penalty:
                $ref: '#/components/schemas/BilletAddicionalValueData'
              bonus:
                $ref: '#/components/schemas/BilletReductionValueData'
              discounts:
                type: array
                items:
                  $ref: '#/components/schemas/BilletReductionValueData'
    InternalTransferData:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalTransferRequest'
  schemas:
    Token:
      type: object
      properties:
        tokenType:
          type: string
        expiresAt:
          type: integer
          format: int32
        refreshExpiresIn:
          type: integer
          format: int32
        notBeforePolicy:
          type: integer
          format: int32
        accessToken:
          type: string
        scope:
          type: string
    creditDebitType:
      type: string
      enum:
        - CREDIT
        - DEBIT
    AccountType:
      type: string
      description: >-
        Tipos de conta utilizados para pagamento, conforme modalidades
        tradicionais definidas pela Resolução BCB 4.753. Não inclui contas
        vinculadas, contas de residentes no exterior, contas em moeda
        estrangeira ou contas de correspondentes de moeda eletrônica.
      oneOf:
        - title: SLRY
          const: SLRY
          description: Conta salário
        - title: SVGS
          const: SVGS
          description: Conta poupança.
        - title: CACC
          const: CACC
          description: Conta corrente.
        - title: TRAN
          const: TRAN
          description: Conta de pagamento pré-paga.
    IspbDenyList:
      description: >-
        Lista de códigos ISPB (Identificador de Sistema de Pagamentos
        Brasileiro) para os quais o pagamento não será permitido.
      type: array
      items:
        type: string
    Ispb:
      type: string
      description: >-
        O ISPB é um código numérico único e padronizado que identifica cada
        instituição financeira no Sistema de Pagamentos Brasileiro.
    Issuer:
      type: string
      description: Código da agência da conta, sem dígito.
    AccountNumber:
      type: string
      description: >-
        Número da conta do recebedor, incluindo dígito verificador quando
        aplicável. Valores alfanuméricos devem ser convertidos para 0.
    PixCashOutExpiration:
      type: integer
      format: int64
      default: 600
      minimum: 1
      maximum: 10800
      description: >-
        Tempo máximo, em segundos, que a operação pode permanecer na fila
        aguardando processamento antes de ser cancelada.
    RemittanceInformation:
      type: string
      description: >-
        Informação adicional enviada pelo pagador ao recebedor junto com o
        pagamento.
    DebtorData:
      type: object
      properties:
        ispb:
          $ref: '#/components/schemas/Ispb'
        issuer:
          $ref: '#/components/schemas/Issuer'
        number:
          $ref: '#/components/schemas/AccountNumber'
        accountType:
          $ref: '#/components/schemas/AccountType'
        document:
          type: string
          description: Documento do titular da conta.
        name:
          type: string
          description: Nome do titular da conta.
    CreditorData:
      type: object
      properties:
        ispb:
          $ref: '#/components/schemas/Ispb'
        issuer:
          $ref: '#/components/schemas/Issuer'
        number:
          $ref: '#/components/schemas/AccountNumber'
        accountType:
          $ref: '#/components/schemas/AccountType'
        document:
          type: string
          description: Documento do titular da conta.
        name:
          type: string
          description: Nome do titular da conta.
    Transactions:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          $ref: '#/components/schemas/TransactionData'
    EndToEndId:
      type: string
      description: >-
        Identificador único utilizado para rastrear uma transação durante todo o
        ciclo de vida da operação.
    IdempotencyKey:
      type: string
      description: >-
        Chave única associada a cada requisição. Ela permite identificar
        chamadas repetidas e evitar processamento duplicado.
      pattern: '[a-zA-Z0-9]{1,50}'
    TxId:
      type: string
      description: Identificador gerado pelo Pix para identificar e acompanhar a transação.
    Balances:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/BalanceData'
    BaasAccountList:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            $ref: '#/components/schemas/BaasAccount'
    BaasAccountResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/BaasAccount'
    BaasAccount:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: >-
            Identificador interno da conta. Use este valor no cabeçalho
            `x-account-id` ao operar contas com credenciais BaaS.
        accountNumber:
          type: integer
          description: Número da conta.
        branchNumber:
          type: integer
          description: Código da agência.
        type:
          type: string
          description: Tipo da conta.
        subType:
          type: string
          description: Subtipo da conta.
        status:
          type: integer
          description: Status interno da conta.
        nickname:
          type:
            - string
            - 'null'
          description: Apelido da conta.
        person:
          type:
            - object
            - 'null'
          properties:
            id:
              type: integer
              format: int64
            name:
              type: string
            tradeName:
              type:
                - string
                - 'null'
            document:
              type: string
            type:
              type: string
            status:
              type: integer
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    BaasOnboardingList:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            $ref: '#/components/schemas/BaasOnboarding'
    BaasOnboardingResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/BaasOnboarding'
    BaasOnboarding:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Identificador do onboarding.
        accountType:
          type: string
          enum:
            - NATURAL_PERSON
            - LEGAL_PERSON
            - SALARY_ACCOUNT
        status:
          type: integer
          description: |
            Status do onboarding.
            - 0: Pendente
            - 1: Aguardando aprovação
            - 2: Aprovado
            - 3: Rejeitado
            - 4: Aguardando revisão
        person:
          type: object
          properties:
            name:
              type: string
            tradeName:
              type:
                - string
                - 'null'
            document:
              type: string
            email:
              type: string
              format: email
            phone:
              type: string
        company:
          type:
            - object
            - 'null'
          properties:
            name:
              type: string
            tradeName:
              type:
                - string
                - 'null'
            document:
              type: string
            email:
              type: string
              format: email
            phone:
              type: string
        address:
          type: object
          properties:
            zipCode:
              type: string
            address:
              type: string
            number:
              type: string
            complement:
              type:
                - string
                - 'null'
            district:
              type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    TransactionType:
      type: string
      enum:
        - PIX
        - BILLET
    TransactionData:
      type: array
      items:
        type: object
        properties:
          eventDate:
            type: string
            format: date-time
          id:
            type: string
            format: uuid
          status:
            $ref: '#/components/schemas/OperationStatus'
          endToEndId:
            $ref: '#/components/schemas/EndToEndId'
          txId:
            $ref: '#/components/schemas/TxId'
          creditDebitType:
            $ref: '#/components/schemas/creditDebitType'
          transactionType:
            $ref: '#/components/schemas/TransactionType'
          transactionAmount:
            type: object
            properties:
              currency:
                type: string
                enum:
                  - BRL
              available:
                type: number
                format: double
    TransactionDetailsData:
      type: array
      items:
        type: object
        properties:
          eventDate:
            type: string
            format: date-time
          id:
            type: number
            format: int64
          idempotencyKey:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
          endToEndId:
            $ref: '#/components/schemas/EndToEndId'
          txId:
            $ref: '#/components/schemas/TxId'
          status:
            $ref: '#/components/schemas/OperationStatus'
          transactionType:
            $ref: '#/components/schemas/TransactionType'
          localInstrument:
            $ref: '#/components/schemas/LocalInstrumentType'
          debtorAccount:
            $ref: '#/components/schemas/DebtorData'
          creditorAccount:
            $ref: '#/components/schemas/CreditorData'
          creditDebitType:
            type: string
            enum:
              - CREDIT
              - DEBIT
          payment:
            type: object
            properties:
              currency:
                type: string
                enum:
                  - BRL
              amount:
                type: number
                format: double
          refunds:
            $ref: '#/components/schemas/RefundsData'
          remittanceInformation:
            $ref: '#/components/schemas/RemittanceInformation'
          errorCode:
            $ref: '#/components/schemas/PixErrorCode'
          createdAt:
            type: string
            format: date-time
    BalanceData:
      type: array
      items:
        type: object
        properties:
          eventDate:
            type: string
            format: date-time
          balanceAmount:
            type: object
            properties:
              currency:
                type: string
                enum:
                  - BRL
              available:
                type: number
                format: double
              blocked:
                type: number
                format: double
              overdraft:
                type: number
                format: double
    MetaBalances:
      type: object
      properties:
        firstAvaliableEventDate:
          type: string
          format: date-time
        lastAvaliableEventDate:
          type: string
          format: date-time
        pagination:
          $ref: '#/components/schemas/MetaPagination'
    Statements:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          $ref: '#/components/schemas/StatementData'
    StatementData:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            format: uuid
          transactionType:
            type: string
            enum:
              - PIX
          creditDebitType:
            $ref: '#/components/schemas/creditDebitType'
          description:
            type: string
          eventDate:
            type: string
            format: date-time
          bookingDate:
            type: string
            format: date-time
          status:
            type: string
            enum:
              - PENDING
              - BOOKED
              - SETTLED
              - REJECTED
          transactionAmount:
            type: object
            properties:
              currency:
                type: string
                enum:
                  - BRL
              amount:
                type: number
                format: double
    ConsolidatedStatements:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          $ref: '#/components/schemas/ConsolidatedStatementData'
    ConsolidatedStatementData:
      type: object
      properties:
        type:
          type: string
          enum:
            - START_OF_DAY
            - END_OF_DAY
        currency:
          type: string
          enum:
            - BRL
        transactions:
          type: array
          items:
            type: object
            properties:
              eventDate:
                type: string
                format: date-time
              previousBalance:
                type: number
                format: double
              creditAmount:
                type: number
                format: double
              debitAmount:
                type: number
                format: double
    LocalInstrumentType:
      type: string
      oneOf:
        - title: MANU
          const: MANU
          description: Inserção manual de dados da conta transacional.
        - title: DICT
          const: DICT
          description: Inserção manual de chave Pix.
        - title: INIC
          const: INIC
          description: >-
            Indica que o recebedor contratou um iniciador de pagamentos para
            iniciar pagamentos em que o favorecido já é conhecido.
        - title: QRDN
          const: QRDN
          description: QR Code dinâmico.
        - title: QRES
          const: QRES
          description: QR Code estático.
    InfractionListData:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            $ref: '#/components/schemas/InfractionData'
    InfractionDetailBodyData:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              format: uuid
            transactionId:
              type: number
            endToEndId:
              $ref: '#/components/schemas/EndToEndId'
            type:
              $ref: '#/components/schemas/InfractionTypes'
            reportedBy:
              $ref: '#/components/schemas/InfractionReportedBy'
            transactionAmount:
              type: object
              properties:
                currency:
                  type: string
                  enum:
                    - BRL
                amount:
                  type: number
                  format: double
            reportDetails:
              type: string
            analysisResult:
              nullable: true
              $ref: '#/components/schemas/InfractionResultTypes'
            status:
              $ref: '#/components/schemas/InfractionStatus'
            analysisDetails:
              type: string
              nullable: true
            creationDate:
              type: string
              format: date-time
            lastModificationDate:
              type: string
              format: date-time
            isReporter:
              type: boolean
            defenseHistories:
              type: array
              items:
                $ref: '#/components/schemas/InfractionDefenseHistoryData'
    InfractionDefenseHistoryData:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/InfractionHistoryStatusTypes'
        request:
          type: string
        defense:
          type: string
          nullabe: true
        createdAt:
          type: string
          format: date-time
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/InfractionDefenseHistoryAttachmentsData'
    InfractionDefenseHistoryAttachmentsData:
      type: object
      properties:
        location:
          type: string
        url:
          type: string
    InfractionBodyData:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/InfractionData'
    InfractionData:
      type: object
      properties:
        id:
          type: string
          format: uuid
        transactionId:
          type: number
        status:
          $ref: '#/components/schemas/InfractionStatus'
        type:
          $ref: '#/components/schemas/InfractionTypes'
        lastModificationDate:
          type: string
          format: date-time
        creationDate:
          type: string
          format: date-time
        reportedBy:
          $ref: '#/components/schemas/InfractionReportedBy'
        reportDetails:
          type: string
        analysisResult:
          nullable: true
          $ref: '#/components/schemas/InfractionResultTypes'
        analysisDetails:
          type: string
          nullable: true
        transactionAmount:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
    OperationStatus:
      type: string
      enum:
        - CANCELED
        - PROCESSING
        - LIQUIDATED
        - ON_QUEUE
        - WAITING_APPROVAL
        - WAITING_CONFIRMATION
        - REFUNDED
        - PARTIALLY_REFUNDED
    InfractionStatus:
      type: string
      enum:
        - OPEN
        - CLOSED
        - CANCELLED
        - ACKNOWLEDGED
        - DEFENDED
        - ANSWERED
        - WAITING_ADJUSTMENTS
    InfractionTypes:
      type: string
      enum:
        - FRAUD
        - REFUND_REQUEST
        - REFUND_CANCELLED
    InfractionReportedBy:
      type: string
      enum:
        - DEBITED_PARTICIPANT
        - CREDITED_PARTICIPANT
    InfractionHistoryStatusTypes:
      type: string
      nullable: true
      enum:
        - PENDING
        - DEFENDED
    InfractionResultTypes:
      type: string
      nullable: true
      enum:
        - AGREED
        - DISAGREED
    InfractionSituationTypes:
      type: string
      nullable: true
      enum:
        - SCAM
        - ACCOUNT_TAKEOVER
        - COERCION
        - FRAUDULENT_ACCESS
        - OTHER
    PixErrorCode:
      type: string
      oneOf:
        - title: AB03
          const: AB03
          description: Liquidação abortada por tempo limite.
        - title: AB09
          const: AB09
          description: Transação interrompida por erro no agente credor.
        - title: AB11
          const: AB11
          description: Transação interrompida por tempo limite no agente devedor.
        - title: AC03
          const: AC03
          description: Número da conta do credor inválido ou ausente.
        - title: AC06
          const: AC06
          description: A conta informada está bloqueada e não permite lançamentos.
        - title: AC07
          const: AC07
          description: Conta do credor encerrada.
        - title: AC14
          const: AC14
          description: Tipo da conta do credor ausente ou inválido.
        - title: AG03
          const: AG03
          description: Tipo de transação não suportado ou não autorizado para esta conta.
        - title: AG12
          const: AG12
          description: >-
            Ordens de pagamento entre contas da mesma instituição financeira não
            são permitidas para este fluxo.
        - title: AG13
          const: AG13
          description: >-
            Devoluções originadas de transações já devolvidas não são
            permitidas.
        - title: AGNT
          const: AGNT
          description: Agente incorreto no fluxo de pagamento.
        - title: AM01
          const: AM01
          description: O valor informado é igual a zero.
        - title: AM02
          const: AM02
          description: O valor da transação é maior que o limite permitido.
        - title: AM04
          const: AM04
          description: Saldo disponível insuficiente para cobrir o valor informado.
        - title: AM09
          const: AM09
          description: O valor recebido difere do valor acordado ou esperado.
        - title: AM12
          const: AM12
          description: Valor inválido ou ausente.
        - title: AM18
          const: AM18
          description: Número de transações inválido ou ausente.
        - title: BE01
          const: BE01
          description: >-
            A identificação do cliente final não corresponde ao número da conta
            associada.
        - title: BE05
          const: BE05
          description: A parte que iniciou a mensagem não é reconhecida pelo cliente final.
        - title: BE17
          const: BE17
          description: Código de identificação do credor ausente ou inválido.
        - title: CH11
          const: CH11
          description: Valor incorreto no identificador do credor.
        - title: CH16
          const: CH16
          description: Conteúdo incorreto.
        - title: DS04
          const: DS04
          description: >-
            A ordem foi rejeitada pela instituição por inconsistência no
            conteúdo.
        - title: DS0G
          const: DS0G
          description: O assinante não tem permissão para assinar este tipo de operação.
        - title: DS24
          const: DS24
          description: Tempo de espera expirado devido a ordem incompleta.
        - title: DS27
          const: DS27
          description: Usuário ainda não ativado.
        - title: DT02OperationStatus
          const: DT02
          description: Data ou hora de criação inválida no cabeçalho da mensagem.
        - title: DT05
          const: DT05
          description: >-
            Mensagem, bloco de pagamento ou transação recebido após a data
            limite de processamento.
        - title: ED05
          const: ED05
          description: Falha na liquidação da transação.
        - title: FF07
          const: FF07
          description: Finalidade ausente ou inválida.
        - title: FF08
          const: FF08
          description: EndToEndId ausente ou inválido.
        - title: MD01
          const: MD01
          description: Mandato inexistente.
        - title: OZ01
          const: OZ01
          description: Saldo insuficiente.
        - title: RC09
          const: RC09
          description: Identificador ISPB do devedor inválido ou ausente.
        - title: RC10
          const: RC10
          description: Identificador ISPB do credor inválido ou ausente.
        - title: RR04
          const: RR04
          description: Motivo regulatório.
        - title: SL02
          const: SL02
          description: >-
            Motivo relacionado a serviço específico oferecido pelo agente
            credor.
    PaymentFlowType:
      default: INSTANT
      type: string
      enum:
        - INSTANT
        - APPROVAL_REQUIRED
      description: >
        Valor padrão: `INSTANT`.

        - `INSTANT` - O pagamento será processado imediatamente.

        - `APPROVAL_REQUIRED` - O pagamento será processado apenas após
        aprovação.
    RefundsData:
      type: array
      items:
        type: object
        properties:
          endToEndId:
            $ref: '#/components/schemas/EndToEndId'
          status:
            $ref: '#/components/schemas/OperationStatus'
          errorCode:
            $ref: '#/components/schemas/PixErrorCode'
          pixRefundAmount:
            type: object
            properties:
              currency:
                type: string
                enum:
                  - BRL
              amount:
                type: number
                format: double
    PixQueuedData:
      type: object
      properties:
        endToEndId:
          $ref: '#/components/schemas/EndToEndId'
        eventDate:
          type: string
          format: date-time
        id:
          type: number
          format: int64
        payment:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
        type:
          type: string
    PixData:
      properties:
        data:
          $ref: '#/components/schemas/PixDataProperties'
    PixDataProperties:
      type: object
      properties:
        id:
          type: number
          format: int64
        idempotencyKey:
          type: string
          $ref: '#/components/schemas/IdempotencyKey'
          pattern: '[a-zA-Z0-9]{1,50}'
        endToEndId:
          $ref: '#/components/schemas/EndToEndId'
        pixKey:
          type: string
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        status:
          $ref: '#/components/schemas/OperationStatus'
        errorCode:
          $ref: '#/components/schemas/PixErrorCode'
        creditDebitType:
          $ref: '#/components/schemas/creditDebitType'
        localInstrument:
          $ref: '#/components/schemas/LocalInstrumentType'
        createdAt:
          type: string
          format: date-time
        creditorAccount:
          $ref: '#/components/schemas/CreditorData'
        debtorAccount:
          $ref: '#/components/schemas/DebtorData'
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
        txId:
          type: string
          description: >-
            O txId é gerado pelo Pix e permite identificar e acompanhar a
            transação.
        payment:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
        refunds:
          $ref: '#/components/schemas/RefundsData'
    CashoutWebhookProperties:
      type: object
      properties:
        id:
          type: number
          format: int64
        eventDate:
          type: string
          format: date-time
        endToEndId:
          $ref: '#/components/schemas/EndToEndId'
        status:
          $ref: '#/components/schemas/OperationStatus'
        message:
          type: string
        pixKey:
          type: string
        createdAt:
          type: string
          format: date-time
        idempotencyKey:
          type: string
          pattern: '[a-zA-Z0-9]{1,50}'
        localInstrument:
          $ref: '#/components/schemas/LocalInstrumentType'
        refunds:
          $ref: '#/components/schemas/RefundsData'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        errorCode:
          $ref: '#/components/schemas/PixErrorCode'
        payment:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
    BilletPaymentRegisterResponse:
      type: object
      properties:
        id:
          type: number
          format: int64
        idempotencyKey:
          type: string
          pattern: '[a-zA-Z0-9]{1,50}'
        eventDate:
          type: string
          format: date-time
        digitableCode:
          type: string
          description: >-
            Representação numérica do código de barras do boleto (linha
            digitável).
        description:
          type: string
        paymentFlow:
          $ref: '#/components/schemas/PaymentFlowType'
        status:
          $ref: '#/components/schemas/OperationStatus'
          default: LIQUIDATED
        transactionType:
          $ref: '#/components/schemas/TransactionType'
          default: BILLET
        creditDebitType:
          $ref: '#/components/schemas/creditDebitType'
        payment:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
    BilletPaymentRegisterDetailResponse:
      type: object
      properties:
        id:
          type: number
          format: int64
        idempotencyKey:
          type: string
          pattern: '[a-zA-Z0-9]{1,50}'
        createdAt:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/OperationStatus'
          default: LIQUIDATED
        transactionType:
          $ref: '#/components/schemas/TransactionType'
          default: BILLET
        creditDebitType:
          $ref: '#/components/schemas/creditDebitType'
        payment:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
        billetInfo:
          type: object
          properties:
            digitableCode:
              type: string
            barCode:
              type: string
            settleDate:
              type: string
              format: date-time
            dueDate:
              type: string
              format: date-time
        creditorAccount:
          $ref: '#/components/schemas/CreditorData'
        debtorAccount:
          $ref: '#/components/schemas/DebtorData'
    Billets:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          $ref: '#/components/schemas/BilletData'
    BilletStatusType:
      type: string
      enum:
        - CREATED
        - WAITING_BANK
        - WAITING_PAYMENT
        - BANK_REGISTER_FAIL
        - REJECTED_BY_BANK
        - CANCELED
        - PAID
        - WAITING_CASH_IN
        - SETTLED
    BilletTermType:
      type: string
      enum:
        - CALENDAR_DAYS
        - BUSINESS_DAYS
    BilletDocumentType:
      type: string
      enum:
        - CPF
        - CNPJ
    BilletValueType:
      type: string
      enum:
        - CURRENCY
        - PERCENTUAL
    BilletProtestData:
      type: object
      properties:
        termType:
          $ref: '#/components/schemas/BilletTermType'
        daysAfterDueDate:
          type: number
    BilletAddicionalValueData:
      type: object
      properties:
        termType:
          $ref: '#/components/schemas/BilletTermType'
        daysAfterDueDate:
          type: number
        valueType:
          $ref: '#/components/schemas/BilletValueType'
        amount:
          type: number
          format: double
    BilletReductionValueData:
      type: object
      properties:
        valueType:
          $ref: '#/components/schemas/BilletValueType'
        deadline:
          type: string
          format: date-time
        amount:
          type: number
          format: double
    BilletPersonData:
      type: object
      properties:
        name:
          type: string
        documentType:
          $ref: '#/components/schemas/BilletDocumentType'
        documentNumber:
          type: string
        street:
          type: string
        streetNumber:
          type: string
        complement:
          type: string
        neighborhoodName:
          type: string
        municipalityName:
          type: string
        stateAbbreviation:
          type: string
        postalCode:
          type: string
        emailAddress:
          type: string
        phoneNumber:
          type: string
    BilletStatusHistoryData:
      type: object
      properties:
        id:
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/BilletStatusType'
        createdAt:
          type: string
          format: date-time
    BilletPaymentData:
      type: object
      properties:
        faceValue:
          type: number
          format: double
        bonus:
          type: number
          format: double
        discount:
          type: number
          format: double
        interest:
          type: number
          format: double
        fine:
          type: number
          format: double
    BilletData:
      type: object
      properties:
        id:
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/BilletStatusType'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        barcode:
          type: string
        digitableLine:
          type: string
        bankTitleNumber:
          type: string
        customerTitleNumber:
          type: string
        customerInternalCtrlTitleNumber:
          type: string
        titleIssuanceDate:
          type: string
          format: date-time
        titleDueDate:
          type: string
          format: date-time
        faceTitleAmount:
          type: number
          format: double
        iofAmount:
          type: number
          format: double
        protest:
          $ref: '#/components/schemas/BilletProtestData'
        issuer:
          $ref: '#/components/schemas/BilletPersonData'
        assignor:
          $ref: '#/components/schemas/BilletPersonData'
        debtor:
          $ref: '#/components/schemas/BilletPersonData'
        interest:
          $ref: '#/components/schemas/BilletAddicionalValueData'
        penalty:
          $ref: '#/components/schemas/BilletAddicionalValueData'
        bonus:
          $ref: '#/components/schemas/BilletReductionValueData'
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/BilletReductionValueData'
        payments:
          type: array
          items:
            $ref: '#/components/schemas/BilletPaymentData'
        statusHistory:
          type: array
          items:
            $ref: '#/components/schemas/BilletStatusHistoryData'
    BilletPaymentRegisterData:
      type: object
      properties:
        eventDate:
          type: string
          format: date-time
        id:
          type: number
          format: int64
        digitableCode:
          type: string
          description: >-
            Representação numérica do código de barras do boleto (linha
            digitável).
        status:
          $ref: '#/components/schemas/OperationStatus'
          default: LIQUIDATED
        transactionType:
          $ref: '#/components/schemas/TransactionType'
          default: BILLET
        idempotencyKey:
          type: string
          pattern: '[a-zA-Z0-9]{1,50}'
        creditDebitType:
          $ref: '#/components/schemas/creditDebitType'
          default: DEBIT
        transactionAmount:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
    BilletPaymentRegisterDataList:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            $ref: '#/components/schemas/BilletPaymentRegisterData'
    WebhookType:
      type: string
      enum:
        - TRANSFER
        - RECEIVE
        - REFUND
        - CASHOUT
        - INFRACTION
    WebhookData:
      type: object
      properties:
        id:
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/WebhookType'
        uri:
          type: string
          format: uri
        enabled:
          type: boolean
    WebhookListData:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            $ref: '#/components/schemas/WebhookData'
    MetaPagination:
      description: >
        Objeto de paginação usado para indicar o total de itens disponíveis, a
        quantidade retornada, o limite por página e o deslocamento atual.
      type: object
      properties:
        total:
          type: integer
          format: int32
          default: 100
        limit:
          type: integer
          format: int32
          default: 10
        offset:
          type: integer
          format: int32
          default: 1
    InternalTransferAccountType:
      type: string
      enum:
        - SLRY
        - SVGS
        - CACC
        - TRAN
      description: |
        Tipo de conta para transferência interna.
        - SLRY: Conta salário
        - SVGS: Conta poupança
        - CACC: Conta corrente
        - TRAN: Conta de pagamento pré-paga
    InternalTransferStatus:
      type: string
      enum:
        - PROCESSING
        - WAITING_APPROVAL
        - LIQUIDATED
        - CANCELED
      description: Status da transferência interna.
    InternalTransferRequest:
      type: object
      required:
        - creditorAccount
        - payment
      properties:
        creditorAccount:
          type: object
          required:
            - document
            - name
            - issuer
            - number
            - accountType
          properties:
            document:
              type: string
              minLength: 11
              maxLength: 14
              description: CPF/CNPJ do recebedor (apenas números).
            name:
              type: string
              description: Nome do recebedor.
            issuer:
              type: string
              minLength: 4
              maxLength: 4
              description: Código da agência da conta de destino.
            number:
              type: string
              minLength: 1
              maxLength: 20
              description: Número da conta de destino.
            accountType:
              $ref: '#/components/schemas/InternalTransferAccountType'
        payment:
          type: object
          required:
            - currency
            - amount
          properties:
            currency:
              type: string
              enum:
                - BRL
              description: Moeda da transação.
            amount:
              type: number
              format: double
              minimum: 0.01
              description: Valor da transferência.
        paymentFlow:
          $ref: '#/components/schemas/PaymentFlowType'
        remittanceInformation:
          type: string
          maxLength: 140
          description: Descrição ou observação da transferência.
    InternalTransferResponse:
      type: object
      properties:
        id:
          type: number
          format: int64
          description: ID da transação.
        endToEndId:
          type: string
          description: Identificador único da transferência.
        status:
          $ref: '#/components/schemas/InternalTransferStatus'
        transactionType:
          type: string
          enum:
            - INTERNAL
        createdAt:
          type: string
          format: date-time
        eventDate:
          type: string
          format: date-time
        idempotencyKey:
          type: string
        payment:
          type: object
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
        creditorAccount:
          type: object
          properties:
            document:
              type: string
            name:
              type: string
            issuer:
              type: string
            number:
              type: string
            accountType:
              $ref: '#/components/schemas/InternalTransferAccountType'
            ispb:
              type: string
        debtorAccount:
          type: object
          properties:
            document:
              type: string
            name:
              type: string
            issuer:
              type: string
            number:
              type: string
            accountType:
              $ref: '#/components/schemas/InternalTransferAccountType'
            ispb:
              type: string
        remittanceInformation:
          type: string
        refunds:
          type: array
          items:
            type: object
            properties:
              id:
                type: number
                format: int64
              amount:
                type: number
                format: double
              reason:
                type: string
              status:
                type: string
              createdAt:
                type: string
                format: date-time
    PixKeyData:
      type: object
      properties:
        name:
          type: string
        tradeName:
          type: string
        keyType:
          type: string
          enum:
            - CPF
            - CNPJ
            - PHONE
            - EMAIL
            - EVP
        key:
          type: string
        document:
          type: string
        ispb:
          type: string
        ispb_reduced_name:
          type: string
        endToEndId:
          $ref: '#/components/schemas/EndToEndId'
    PixRefundRequest:
      type: object
      required:
        - devolutionAmount
      properties:
        devolutionAmount:
          type: number
          format: double
          minimum: 0.01
        devolutionReason:
          type: string
    PixRefundResponse:
      type: object
      properties:
        devolutionEndToEndId:
          $ref: '#/components/schemas/EndToEndId'
        devolutionAmount:
          type: number
          format: double
    TedRequest:
      type: object
      required:
        - creditorAccount
        - payment
      properties:
        creditorAccount:
          $ref: '#/components/schemas/CreditorData'
        paymentFlow:
          $ref: '#/components/schemas/PaymentFlowType'
        payment:
          type: object
          required:
            - currency
            - amount
          properties:
            currency:
              type: string
              enum:
                - BRL
            amount:
              type: number
              format: double
              minimum: 0.01
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
    TedResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            numCtrlIf:
              type: string
            numCtrlStr:
              type: string
            eventDate:
              type: string
              format: date-time
            status:
              $ref: '#/components/schemas/OperationStatus'
            id:
              type: number
              format: int64
            createdAt:
              type: string
              format: date-time
            idempotencyKey:
              $ref: '#/components/schemas/IdempotencyKey'
            refunds:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: number
                    format: int64
                  amount:
                    type: number
                    format: double
                  reason:
                    type: string
                  status:
                    type: string
                  createdAt:
                    type: string
                    format: date-time
            remittanceInformation:
              $ref: '#/components/schemas/RemittanceInformation'
            transactionType:
              type: string
              enum:
                - TED
            payment:
              type: object
              properties:
                currency:
                  type: string
                  enum:
                    - BRL
                amount:
                  type: number
                  format: double
            creditorAccount:
              $ref: '#/components/schemas/CreditorData'
    BilletInfoRequest:
      type: object
      required:
        - billetCode
      properties:
        billetCode:
          type: string
          maxLength: 50
          description: >-
            Representação numérica da linha digitável ou do código de barras do
            boleto. Informe apenas números.
    BilletInfoResponse:
      type: object
      properties:
        paymentId:
          type: number
          format: int64
        payDueDate:
          type: string
          format: date-time
        dueDateRegister:
          type: string
          format: date-time
        digitableCode:
          type: string
        maxValue:
          type: number
          format: double
        minValue:
          type: number
          format: double
        originalValue:
          type: number
          format: double
        discountValue:
          type: number
          format: double
        interestValueCalculated:
          type: number
          format: double
        totalUpdated:
          type: number
          format: double
        recipient:
          type: string
        documentRecipient:
          type: string
        allowChangeValue:
          type: boolean
    ErrorRFC7807:
      description: |
        <table>
          <tr>
            <th>Código da exceção</th>
            <th>Descrição</th>
          </tr>
          <tr>
            <td>onz-0001</td>
            <td>INVALID_CREDENTIALS</td>
          </tr>
          <tr>
            <td>onz-0002</td>
            <td>INVALID_PARAMS</td>
          </tr>
          <tr>
            <td>onz-0003</td>
            <td>INVALID_TOKEN</td>
          </tr>
          <tr>
            <td>onz-0004</td>
            <td>INTERNAL_SERVER_ERROR</td>
          </tr>
          <tr>
            <td>onz-0005</td>
            <td>SERVER_SHUTTING_DOWN</td>
          </tr>
          <tr>
            <td>onz-0006</td>
            <td>INVALID_TOKEN_ROLE</td>
          </tr>
          <tr>
            <td>onz-0007</td>
            <td>INVALID_PIX_ENTRY</td>
          </tr>
          <tr>
            <td>onz-0008</td>
            <td>INVALID_REQUEST</td>
          </tr>
          <tr>
            <td>onz-0009</td>
            <td>PIX_NOT_FOUND</td>
          </tr>
          <tr>
            <td>onz-0010</td>
            <td>INVALID_QRCODE</td>
          </tr>
          <tr>
            <td>onz-0011</td>
            <td>INVALID_IDEMPOTENCY_KEY</td>
          </tr>
          <tr>
            <td>onz-0012</td>
            <td>WEBHOOK_NOT_FOUND</td>
          </tr>
        </table>
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        detail:
          type: string
        instance:
          type: string
  parameters:
    XAccountId:
      name: x-account-id
      in: header
      description: >
        Identificador interno da conta filha que será operada. Obrigatório
        quando o token foi emitido por uma credencial BaaS (`clientId` com
        prefixo `baas_`) em endpoints operacionais de conta. Não é necessário
        para credenciais de conta comuns nem para endpoints de escopo BaaS.
      required: false
      schema:
        type: integer
        format: int64
    AccountId:
      name: resourceId
      in: path
      description: ID da conta.
      required: true
      schema:
        type: string
        format: uuid
    Offset:
      name: page
      in: query
      description: Número da página para paginação.
      required: true
      schema:
        type: integer
        minimum: 1
    RelatedResourceId:
      name: relatedResourceId
      in: path
      description: ID do recurso relacionado.
      required: true
      schema:
        type: string
paths:
  /oauth/token:
    post:
      tags:
        - Autenticação
      summary: Obter token de acesso.
      description: >
        O primeiro passo para utilizar a API corporativa é a autenticação. Nesta
        etapa, o servidor de autorização valida as credenciais do cliente e
        emite um token de acesso.


        A API utiliza tokens Bearer do OAuth 2.0. Toda requisição a recursos
        protegidos deve incluir o token no cabeçalho HTTP `Authorization`. Após
        obter o token, sua aplicação pode acessar os endpoints compatíveis com
        os escopos concedidos.


        <b>Escopos</b>

        <br />

        Os escopos definem quais recursos bancários poderão ser acessados pelo
        token.

        <table border>
          <tr>
            <th>Recurso</th>
            <th>Escopo de leitura</th>
            <th>Escopo de escrita</th>
            <th>Acessível via</th>
          </tr>
          <tr>
            <td>Pix</td>
            <td>pix.read</td>
            <td>pix.write</td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>Boletos</td>
            <td>billets.read</td>
            <td>billets.write</td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>Webhook</td>
            <td>webhook.read</td>
            <td>webhook.write</td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>Transações</td>
            <td>transactions.read</td>
            <td></td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>Conta</td>
            <td>account.read</td>
            <td></td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>Infrações</td>
            <td>infractions.read</td>
            <td>infractions.write</td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>Transferências internas</td>
            <td>internal-transfer.read</td>
            <td>internal-transfer.write</td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>TED</td>
            <td>ted.read</td>
            <td>ted.write</td>
            <td>Token corporativo</td>
          </tr>
          <tr>
            <td>Contas BaaS</td>
            <td>baas.accounts.read</td>
            <td></td>
            <td>Credencial BaaS</td>
          </tr>
          <tr>
            <td>Onboardings BaaS</td>
            <td>baas.onboarding.read</td>
            <td>baas.onboarding.write</td>
            <td>Credencial BaaS</td>
          </tr>
        </table>
      operationId: postToken
      requestBody:
        $ref: '#/components/requestBodies/AuthData'
      responses:
        '201':
          description: Criado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
  /accounts:
    get:
      tags:
        - Contas
      summary: Listar contas do BaaS.
      description: >
        Lista as contas filhas pertencentes ao BaaS da credencial autenticada.
        Este endpoint é exclusivo para credenciais BaaS e não exige o cabeçalho
        `x-account-id`.


        A conta dona do BaaS não é retornada nesta listagem.
      operationId: listBaasAccounts
      parameters:
        - name: page
          in: query
          description: Número da página para paginação.
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: perPage
          in: query
          description: Quantidade máxima de itens por página.
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: status
          in: query
          description: Status interno da conta.
          required: false
          schema:
            type: integer
        - name: type
          in: query
          description: Tipo da conta.
          required: false
          schema:
            type: string
        - name: document
          in: query
          description: Documento do titular da conta.
          required: false
          schema:
            type: string
        - name: accountNumber
          in: query
          description: Número da conta.
          required: false
          schema:
            type: integer
        - name: createdAtStart
          in: query
          description: Data inicial de criação da conta (ISO 8601).
          required: false
          schema:
            type: string
            format: date-time
        - name: createdAtEnd
          in: query
          description: Data final de criação da conta (ISO 8601).
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaasAccountList'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
      security:
        - OAuth2:
            - baas.accounts.read
  /accounts/{id}:
    get:
      tags:
        - Contas
      summary: Consultar conta do BaaS.
      description: >
        Retorna os dados públicos de uma conta filha do BaaS da credencial
        autenticada. Este endpoint é exclusivo para credenciais BaaS e não exige
        o cabeçalho `x-account-id`.
      operationId: getBaasAccount
      parameters:
        - name: id
          in: path
          description: Identificador interno da conta filha.
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaasAccountResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
      security:
        - OAuth2:
            - baas.accounts.read
  /onboardings:
    get:
      tags:
        - Onboardings
      summary: Listar onboardings do BaaS.
      description: >
        Lista os processos de abertura de conta vinculados ao BaaS da credencial
        autenticada. Este endpoint é exclusivo para credenciais BaaS e não exige
        o cabeçalho `x-account-id`.
      operationId: listBaasOnboardings
      parameters:
        - name: page
          in: query
          description: Número da página para paginação.
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: perPage
          in: query
          description: Quantidade máxima de itens por página.
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: status
          in: query
          description: Status do onboarding. Onboardings removidos não são retornados.
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
              - 2
              - 3
              - 4
        - name: accountType
          in: query
          description: Tipo de conta solicitada no onboarding.
          required: false
          schema:
            type: string
            enum:
              - NATURAL_PERSON
              - LEGAL_PERSON
              - SALARY_ACCOUNT
        - name: document
          in: query
          description: Documento da pessoa ou empresa informada no onboarding.
          required: false
          schema:
            type: string
        - name: createdAtStart
          in: query
          description: Data inicial de criação do onboarding (ISO 8601).
          required: false
          schema:
            type: string
            format: date-time
        - name: createdAtEnd
          in: query
          description: Data final de criação do onboarding (ISO 8601).
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaasOnboardingList'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
      security:
        - OAuth2:
            - baas.onboarding.read
  /onboardings/{id}:
    get:
      tags:
        - Onboardings
      summary: Consultar onboarding do BaaS.
      description: >
        Retorna os dados públicos de um processo de onboarding vinculado ao BaaS
        da credencial autenticada. Este endpoint é exclusivo para credenciais
        BaaS e não exige o cabeçalho `x-account-id`.
      operationId: getBaasOnboarding
      parameters:
        - name: id
          in: path
          description: Identificador do onboarding.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaasOnboardingResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
      security:
        - OAuth2:
            - baas.onboarding.read
  /accounts/transactions:
    get:
      tags:
        - Contas
      summary: Consultar transações da conta.
      operationId: getTransaction
      parameters:
        - $ref: '#/components/parameters/XAccountId'
        - name: event_date_start
          in: query
          description: Data inicial do período de consulta (ISO 8601).
          required: true
          schema:
            type: string
            format: date-time
        - name: event_date_end
          in: query
          description: Data final do período de consulta (ISO 8601).
          required: true
          schema:
            type: string
            format: date-time
        - name: page_offset
          in: query
          description: Posição inicial da paginação.
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: page_limit
          in: query
          description: Quantidade máxima de itens por página.
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - name: sort_by
          in: query
          description: Campo utilizado para ordenar os dados.
          required: false
          schema:
            type: string
            default: EVENT_DATE
            enum:
              - EVENT_DATE
              - AMOUNT
        - name: sort_order
          in: query
          description: Direção da ordenação.
          required: false
          schema:
            type: string
            default: ASC
            enum:
              - ASC
              - DESC
        - name: filter
          in: query
          description: Filtra transações pelo documento do pagador ou recebedor.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transactions'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - transactions.read
  /accounts/transactions/{transactionId}/details:
    get:
      tags:
        - Contas
      summary: Consultar detalhes de uma transação.
      operationId: getTransactionDetails
      parameters:
        - $ref: '#/components/parameters/XAccountId'
        - name: transactionId
          in: path
          required: true
          description: ID da transação.
          schema:
            type: number
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionDetailsData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - transactions.read
  /accounts/balances:
    get:
      tags:
        - Contas
      summary: Consultar saldo da conta.
      operationId: getBalance
      parameters:
        - $ref: '#/components/parameters/XAccountId'
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Balances'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - account.read
  /accounts/consolidated-statement:
    post:
      tags:
        - Contas
      summary: Consultar extrato consolidado da conta.
      description: >
        Este endpoint retorna dados consolidados de extrato com base no período
        e no agrupamento informados.

        Validações aplicadas:

        - O período máximo permitido é de 12 meses quando agrupado por `MONTH`.

        - O período máximo permitido é de 60 dias quando agrupado por `DAY`.

        - O mês final não pode ser posterior ao mês atual quando agrupado por
        `MONTH`.

        - A data final deve ser anterior à data atual quando agrupada por `DAY`.
      operationId: postConsolidatedStatement
      parameters:
        - $ref: '#/components/parameters/XAccountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              oneOf:
                - properties:
                    groupBy:
                      const: DAY
                    initialDate:
                      type: string
                      format: date
                      description: 'Formato: YYYY-MM-DD'
                    finalDate:
                      type: string
                      format: date
                      description: 'Formato: YYYY-MM-DD'
                  required:
                    - groupBy
                    - initialDate
                    - finalDate
                - properties:
                    groupBy:
                      const: MONTH
                    initialDate:
                      type: string
                      pattern: ^\\d{4}-\\d{2}$
                      description: 'Formato: YYYY-MM'
                    finalDate:
                      type: string
                      pattern: ^\\d{4}-\\d{2}$
                      description: 'Formato: YYYY-MM'
                  required:
                    - groupBy
                    - initialDate
                    - finalDate
            examples:
              dayExample:
                summary: Exemplo com agrupamento por DAY
                value:
                  groupBy: DAY
                  initialDate: '2025-05-01'
                  finalDate: '2025-05-03'
              monthExample:
                summary: Exemplo com agrupamento por MONTH
                value:
                  groupBy: MONTH
                  initialDate: 2025-01
                  finalDate: 2025-03
      responses:
        '200':
          description: Resposta com os dados do extrato consolidado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        periodDate:
                          type: string
                          description: Período ao qual os dados consolidados se referem.
                        movementCount:
                          type: number
                          description: Quantidade de transações/movimentações no período.
                        creditAmount:
                          oneOf:
                            - type: string
                            - type: number
                          description: Valor total de entradas no período.
                        debitAmount:
                          oneOf:
                            - type: string
                            - type: number
                          description: Valor total de saídas no período.
                        diffAmount:
                          oneOf:
                            - type: string
                            - type: number
                          description: Resultado líquido do período.
                        initialBalance:
                          oneOf:
                            - type: string
                            - type: number
                          description: Saldo inicial no começo do período.
                        finalBalance:
                          oneOf:
                            - type: string
                            - type: number
                          description: Saldo final no encerramento do período.
              examples:
                annualExample:
                  summary: Exemplo de resposta com agrupamento por MONTH
                  value:
                    data:
                      - periodDate: 2025-01
                        movementCount: 19
                        creditAmount: 3678.45
                        debitAmount: -1456.78
                        diffAmount: 2221.67
                        initialBalance: 2089.97
                        finalBalance: 4311.64
                      - periodDate: 2025-02
                        movementCount: 49
                        creditAmount: 0
                        debitAmount: -1058.67
                        diffAmount: -1058.67
                        initialBalance: 4311.64
                        finalBalance: 3252.97
                      - periodDate: 2025-03
                        movementCount: 7
                        creditAmount: 1253.45
                        debitAmount: -1000
                        diffAmount: 253.45
                        initialBalance: 3252.97
                        finalBalance: 3506.42
                dailyExample:
                  summary: Exemplo de resposta com agrupamento por DAY
                  value:
                    data:
                      - periodDate: '2025-05-01'
                        movementCount: 3
                        creditAmount: 100
                        debitAmount: 0
                        diffAmount: 100
                        initialBalance: 2165.09
                        finalBalance: 2265.09
                      - periodDate: '2025-05-02'
                        movementCount: 9
                        creditAmount: 0
                        debitAmount: -575.6
                        diffAmount: -575.6
                        initialBalance: 2265.09
                        finalBalance: 1689.49
                      - periodDate: '2025-05-03'
                        movementCount: 2
                        creditAmount: 280
                        debitAmount: -123.54
                        diffAmount: 156.46
                        initialBalance: 1689.49
                        finalBalance: 1533.03
                      - periodDate: '2025-05-04'
                        movementCount: 0
                        creditAmount: 0
                        debitAmount: 0
                        diffAmount: 0
                        initialBalance: 1533.03
                        finalBalance: 1533.03
                      - periodDate: '2025-05-05'
                        movementCount: 0
                        creditAmount: 0
                        debitAmount: 0
                        diffAmount: 0
                        initialBalance: 1533.03
                        finalBalance: 1533.03
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - account.read
  /accounts/consolidated-hourly-statement:
    post:
      tags:
        - Contas
      summary: Consultar extrato consolidado por hora.
      description: >
        Este endpoint retorna dados consolidados de extrato agrupados por hora
        para uma data específica.

        A data informada não pode ser posterior à data atual.
      operationId: postConsolidatedHourlyStatement
      parameters:
        - $ref: '#/components/parameters/XAccountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - date
              properties:
                date:
                  type: string
                  format: date
                  description: 'Formato: YYYY-MM-DD'
            examples:
              dayExample:
                summary: Exemplo de requisição
                value:
                  date: '2025-05-01'
      responses:
        '200':
          description: Resposta com os dados do extrato consolidado por hora.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        periodDate:
                          type: string
                          description: Hora à qual os dados consolidados se referem.
                        movementCount:
                          type: number
                          description: Quantidade de transações/movimentações na hora.
                        creditAmount:
                          oneOf:
                            - type: string
                            - type: number
                          description: Valor total de entradas na hora.
                        debitAmount:
                          oneOf:
                            - type: string
                            - type: number
                          description: Valor total de saídas na hora.
                        diffAmount:
                          oneOf:
                            - type: string
                            - type: number
                          description: Resultado líquido da hora.
                        initialBalance:
                          oneOf:
                            - type: string
                            - type: number
                          description: Saldo inicial no começo da hora.
                        finalBalance:
                          oneOf:
                            - type: string
                            - type: number
                          description: Saldo final no encerramento da hora.
              examples:
                hourlyExample:
                  summary: Exemplo de resposta
                  value:
                    data:
                      - periodDate: '2025-05-01 10:00:00'
                        movementCount: 3
                        creditAmount: 100
                        debitAmount: 0
                        diffAmount: 100
                        initialBalance: 2165.09
                        finalBalance: 2265.09
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - account.read
  /pix/payments/qrc:
    post:
      tags:
        - Pix
      summary: Iniciar pagamento Pix por QR Code.
      description: >-
        Permite solicitar um pagamento Pix usando os dados do QR Code no padrão
        do Banco Central do Brasil. Esse conteúdo também é conhecido como copia
        e cola.
      operationId: postQrcPix
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        $ref: '#/components/requestBodies/PixQrcData'
      responses:
        '202':
          description: Aceito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PixQueuedData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - pix.write
  /pix/payments/manu:
    post:
      tags:
        - Pix
      summary: Iniciar pagamento Pix por dados bancários.
      description: >-
        Permite solicitar um pagamento Pix usando os dados bancários do credor:
        ISPB, documento, agência, número da conta, tipo de conta e nome.
      operationId: postManuPix
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        $ref: '#/components/requestBodies/PixManuData'
      responses:
        '202':
          description: Aceito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PixQueuedData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - pix.write
  /pix/payments/dict:
    post:
      tags:
        - Pix
      summary: Iniciar pagamento Pix por chave Pix.
      description: >-
        Permite solicitar um pagamento Pix usando uma chave Pix aceita: CPF,
        CNPJ, e-mail, telefone ou EVP (chave aleatória).
      operationId: postDictPix
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        $ref: '#/components/requestBodies/PixDictData'
      responses:
        '202':
          description: Aceito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PixQueuedData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - pix.write
  /pix/payments/{endToEndId}:
    get:
      tags:
        - Pix
      summary: Consultar Pix por end-to-end-id.
      operationId: getPixByEndToEnd
      parameters:
        - name: endToEndId
          in: path
          required: true
          description: EndToEndId do Pix.
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PixData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - pix.read
  /pix/payments/{endToEndId}/refund:
    post:
      tags:
        - Pix
      summary: Devolver um Pix recebido.
      description: Cria uma devolução para um Pix recebido identificado pelo end-to-end-id.
      operationId: postPixRefund
      parameters:
        - name: endToEndId
          in: path
          required: true
          description: EndToEndId do Pix recebido que será devolvido.
          schema:
            type: string
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PixRefundRequest'
      responses:
        '202':
          description: Devolução aceita para processamento
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PixRefundResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
      security:
        - OAuth2:
            - pix.write
  /pix/payments/idempotencyKey/{idempotencyKey}:
    get:
      tags:
        - Pix
      summary: Consultar Pix por chave de idempotência.
      operationId: getPixByIdempotencyKey
      parameters:
        - name: idempotencyKey
          in: path
          required: true
          description: Chave de idempotência do Pix.
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PixData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - pix.read
  /pix/keys/{key}:
    get:
      tags:
        - Pix
      summary: Consultar dados de uma chave Pix.
      description: Consulta os dados DICT associados a uma chave Pix.
      operationId: getPixKey
      parameters:
        - name: key
          in: path
          required: true
          description: Chave Pix a ser consultada.
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PixKeyData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
      security:
        - OAuth2:
            - pix.read
  /pix/payments/receipt/{endToEndId}:
    get:
      tags:
        - Pix
      summary: Obter comprovante Pix em PDF.
      description: Retorna o comprovante do pagamento em PDF codificado em base64.
      operationId: getPixReceiptByEndToEndId
      parameters:
        - name: endToEndId
          in: path
          required: true
          description: EndToEndId do Pix.
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      pdf:
                        type: string
                        format: byte
                        description: Documento PDF codificado em base64.
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - pix.read
  /billets/payments:
    post:
      tags:
        - Boletos
      summary: Iniciar pagamento de boleto pela linha digitável.
      description: >-
        Permite solicitar o pagamento de um boleto usando a linha
        digitável.<br><b>1 - O pagamento sempre considera o valor atualizado do
        boleto, incluindo juros e multas quando aplicáveis.<br>2 - Boletos cujo
        valor pode ser alterado pelo pagador devem ser pagos por um canal
        administrativo autorizado.</b>
      operationId: postBillet
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        $ref: '#/components/requestBodies/BilletPaymentRegisterRequest'
      responses:
        '202':
          description: Aceito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BilletPaymentRegisterResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - billets.write
  /billets/pay:
    post:
      tags:
        - Boletos
      summary: Iniciar pagamento de boleto pelo código do boleto.
      description: Permite pagar um boleto previamente consultado usando `billetCode`.
      operationId: postBilletPay
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        $ref: '#/components/requestBodies/BilletPaymentRequest'
      responses:
        '202':
          description: Aceito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BilletPaymentRegisterResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - billets.write
  /billets/info:
    post:
      tags:
        - Boletos
      summary: Consultar informações de um boleto.
      description: >-
        Consulta dados de um boleto pela linha digitável ou código de barras
        antes do pagamento.
      operationId: postBilletInfo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BilletInfoRequest'
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BilletInfoResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - billets.read
  /billets:
    get:
      tags:
        - Boletos
      summary: Listar pagamentos de boletos.
      operationId: getBilletPaymentList
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BilletPaymentRegisterDataList'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - billets.read
  /billets/{id}/details:
    get:
      tags:
        - Boletos
      summary: Consultar detalhes do pagamento de boleto por ID.
      operationId: getBilletPaymentDetailsById
      parameters:
        - name: id
          in: path
          required: true
          description: ID do boleto.
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/BilletPaymentRegisterDetailResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - billets.read
  /billets/{id}:
    get:
      tags:
        - Boletos
      summary: Consultar pagamento de boleto por ID.
      operationId: getBilletPaymentById
      parameters:
        - name: id
          in: path
          required: true
          description: ID do boleto.
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/BilletPaymentRegisterDetailResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - billets.read
  /billets/payments/receipt/{id}:
    get:
      tags:
        - Boletos
      summary: Obter comprovante de pagamento de boleto em PDF.
      description: Retorna o comprovante do pagamento em PDF codificado em base64.
      operationId: getBilletReceiptById
      parameters:
        - name: id
          in: path
          required: true
          description: ID do pagamento do boleto.
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      pdf:
                        type: string
                        format: byte
                        description: Documento PDF codificado em base64.
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - billets.read
  /ted:
    post:
      tags:
        - TED
      summary: Criar uma transferência TED.
      description: >-
        Cria uma transferência TED para uma conta em outra instituição
        financeira.
      operationId: postTed
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TedRequest'
      responses:
        '202':
          description: TED aceita para processamento
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TedResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - ted.write
  /ted/{id}:
    get:
      tags:
        - TED
      summary: Consultar TED por ID.
      operationId: getTedById
      parameters:
        - name: id
          in: path
          required: true
          description: ID da transação TED.
          schema:
            type: number
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TedResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - ted.read
  /ted/idempotencyKey/{idempotencyKey}:
    get:
      tags:
        - TED
      summary: Consultar TED por chave de idempotência.
      operationId: getTedByIdempotencyKey
      parameters:
        - name: idempotencyKey
          in: path
          required: true
          description: Chave de idempotência usada na criação.
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TedResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - ted.read
  /infractions:
    get:
      tags:
        - Infrações
      summary: Listar infrações abertas contra a conta.
      operationId: getInfractions
      parameters:
        - name: last_change_start
          in: query
          description: Data inicial do período de consulta (ISO 8601).
          required: true
          schema:
            type: string
            format: date-time
        - name: last_change_end
          in: query
          description: Data final do período de consulta (ISO 8601).
          required: true
          schema:
            type: string
            format: date-time
        - name: page_offset
          in: query
          description: Posição inicial da paginação.
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: page_limit
          in: query
          description: Quantidade máxima de itens por página.
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - name: sort_by
          in: query
          description: Campo utilizado para ordenar os dados.
          required: false
          schema:
            type: string
            default: EVENT_DATE
            enum:
              - EVENT_DATE
              - STATUS
        - name: status
          in: query
          description: Status atual da infração.
          required: false
          schema:
            type: string
            default: ALL
            enum:
              - ACKNOWLEDGED
              - WAITING_ADJUSTMENTS
              - DEFENDED
              - CLOSED
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InfractionListData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - infractions.read
  /infractions/{infractionId}:
    get:
      tags:
        - Infrações
      summary: Consultar infração por ID.
      operationId: getInfractionByInfractionId
      parameters:
        - name: infractionId
          in: path
          required: true
          description: ID da infração.
          schema:
            type: string
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InfractionDetailBodyData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - infractions.read
  /infractions/{infractionId}/defense:
    post:
      tags:
        - Infrações
      summary: Enviar defesa para uma infração.
      operationId: createInfractiondefense
      parameters:
        - name: infractionId
          in: path
          required: true
          description: ID da infração.
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                defense:
                  type: string
                files:
                  type: array
                  items:
                    type: string
                    format: binary
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InfractionDetailBodyData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - infractions.write
  /webhooks:
    get:
      tags:
        - Webhooks
      summary: Listar webhooks cadastrados.
      operationId: getWebhookList
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookListData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - webhook.read
  /webhooks/{webhookId}:
    get:
      tags:
        - Webhooks
      summary: Consultar webhook.
      operationId: getWebhook
      parameters:
        - name: webhookId
          in: path
          description: ID do webhook.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookData'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - webhook.read
    delete:
      tags:
        - Webhooks
      summary: Remover um webhook.
      description: >-
        Cancela e remove o webhook do processamento. Novas notificações
        relacionadas a esse webhook serão ignoradas e descartadas.
      operationId: removeWebhook
      parameters:
        - name: webhookId
          in: path
          description: ID do webhook.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Webhook removido com sucesso.
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - webhook.write
  /webhooks/transfer:
    post:
      tags:
        - Webhooks
      summary: Criar webhook para operações de transferência.
      description: >-
        Este webhook é acionado quando uma operação de saída é liquidada ou
        cancelada.
      operationId: postTransferWebhook
      requestBody:
        $ref: '#/components/requestBodies/WebhookData'
      responses:
        '201':
          description: Criado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookData'
              examples:
                refundExample:
                  summary: Exemplo de webhook de transferência
                  value:
                    id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
                    type: TRANSFER
                    uri: https://example.com/webhook
                    enabled: true
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '409':
          description: Conflito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      callbacks:
        notification:
          '{$request.body#/uri}':
            post:
              requestBody:
                $ref: '#/components/requestBodies/WebhookPayload'
              responses:
                '200':
                  description: Serviço cliente aceitou a notificação.
      security:
        - OAuth2:
            - webhook.write
  /webhooks/receive:
    post:
      tags:
        - Webhooks
      summary: Criar webhook para operações de recebimento.
      description: Este webhook é acionado quando uma operação de entrada é liquidada.
      operationId: postReceiveWebhook
      requestBody:
        $ref: '#/components/requestBodies/WebhookData'
      responses:
        '201':
          description: Criado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookData'
              examples:
                refundExample:
                  summary: Exemplo de webhook de recebimento
                  value:
                    id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
                    type: RECEIVE
                    uri: https://example.com/webhook
                    enabled: true
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '409':
          description: Conflito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      callbacks:
        notification:
          '{$request.body#/uri}':
            post:
              requestBody:
                $ref: '#/components/requestBodies/WebhookPayload'
              responses:
                '200':
                  description: Serviço cliente aceitou a notificação.
      security:
        - OAuth2:
            - webhook.write
  /webhooks/refund:
    post:
      tags:
        - Webhooks
      summary: Criar webhook para operações de devolução.
      description: Este webhook é acionado quando uma operação de saída é devolvida.
      operationId: postRefundWebhooks
      requestBody:
        $ref: '#/components/requestBodies/WebhookData'
      responses:
        '201':
          description: Criado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookData'
              examples:
                refundExample:
                  summary: Exemplo de webhook de devolução
                  value:
                    id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
                    type: REFUND
                    uri: https://example.com/webhook
                    enabled: true
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '409':
          description: Conflito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      callbacks:
        notification:
          '{$request.body#/uri}':
            post:
              requestBody:
                $ref: '#/components/requestBodies/WebhookPayload'
              responses:
                '200':
                  description: Serviço cliente aceitou a notificação.
      security:
        - OAuth2:
            - webhook.write
  /webhooks/cashout:
    post:
      tags:
        - Webhooks
      summary: Criar webhook para falhas em operações de saída.
      description: >-
        Este webhook é acionado quando ocorre falha de validação de dados em uma
        operação de saída.
      operationId: postCashoutWebhooks
      requestBody:
        $ref: '#/components/requestBodies/WebhookData'
      responses:
        '201':
          description: Criado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookData'
              examples:
                refundExample:
                  summary: Exemplo de webhook de operação de saída
                  value:
                    id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
                    type: CASHOUT
                    uri: https://example.com/webhook
                    enabled: true
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '409':
          description: Conflito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      callbacks:
        notification:
          '{$request.body#/uri}':
            post:
              requestBody:
                $ref: '#/components/requestBodies/CashOutWebhookPayload'
              responses:
                '200':
                  description: Serviço cliente aceitou a notificação.
      security:
        - OAuth2:
            - webhook.write
  /webhooks/infraction:
    post:
      tags:
        - Webhooks
      summary: Criar webhook para operações de infração.
      description: >-
        Este webhook é acionado quando uma infração é aberta contra a conta do
        cliente.
      operationId: postInfractionWebhooks
      requestBody:
        $ref: '#/components/requestBodies/WebhookData'
      responses:
        '201':
          description: Criado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookData'
              examples:
                refundExample:
                  summary: Exemplo de webhook de infração
                  value:
                    id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
                    type: INFRACTION
                    uri: https://example.com/webhook
                    enabled: true
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '409':
          description: Conflito
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      callbacks:
        notification:
          '{$request.body#/uri}':
            post:
              requestBody:
                $ref: '#/components/requestBodies/InfractionWebhookPayload'
              responses:
                '200':
                  description: Serviço cliente aceitou a notificação.
      security:
        - OAuth2:
            - webhook.write
  /pix/payments/qrc/info:
    post:
      tags:
        - Pix
      summary: Consultar informações de QR Code Pix copia e cola
      description: >
        Permite enviar o código Pix copia e cola para consultar os detalhes do
        QR Code. A resposta varia conforme o tipo do QR Code: estático, dinâmico
        imediato ou dinâmico com vencimento.
      operationId: postQrcPixInfo
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - qrCode
              properties:
                qrCode:
                  type: string
                  description: Valor copia e cola do QR Code.
            examples:
              example:
                summary: Exemplo de requisição
                value:
                  qrCode: string
      responses:
        '200':
          description: Informações do QR Code
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    description: Tipo do QR Code (estático ou dinâmico).
                  merchantCategoryCode:
                    type: string
                  transactionCurrency:
                    type: string
                  countryCode:
                    type: string
                  merchantName:
                    type: string
                  merchantCity:
                    type: string
                  url:
                    type: string
                    description: URL de pagamento, quando aplicável.
                  transactionAmount:
                    type: number
                    description: Valor da transação.
                  txid:
                    type: string
                    description: Identificador da transação, quando aplicável.
                  chave:
                    type: string
                    description: Chave do QR Code.
                  payload:
                    type: object
                    description: Dados adicionais do QR Code.
                  endToEndId:
                    type: string
                  statusCode:
                    type: integer
              examples:
                static:
                  summary: QR Code estático
                  value:
                    type: static
                    merchantCategoryCode: '0000'
                    transactionCurrency: '986'
                    countryCode: BR
                    merchantName: FRANCISCO DA SILVA
                    merchantCity: RECIFE
                    transactionAmount: 10
                    txid: '3252890112011017889597792'
                    chave: 5f84a4c5-c5cb-4599-9f13-7eb4d419dacc
                    payload: {}
                    endToEndId: E082535392025020714090799201365d
                    statusCode: 200
                dynamic:
                  summary: QR Code dinâmico imediato
                  value:
                    type: dynamic
                    merchantCategoryCode: '0000'
                    transactionCurrency: '986'
                    countryCode: BR
                    merchantName: ONZ_SOFTWARE
                    merchantCity: SAO_MIGUEL_DO_
                    url: >-
                      pix.example.com.br/qr/v3/at/b289600b-786b-4c4d-9eef-b56496a5e7f4
                    chave: 5f84a4c5-c5cb-4599-9f13-7eb4d419dacc
                    payload:
                      revisao: 0
                      calendario:
                        criacao: '2025-02-07T13:59:38Z'
                        apresentacao: '2025-02-07T14:14:34Z'
                        expiracao: 3600
                      valor:
                        original: '10.00'
                        modalidadeAlteracao: 0
                      chave: 5ed77877-998d-47ad-b19a-37dd93b058d2
                      txid: 3c17eb00b24ab7b140b4d68853ea99
                      status: ATIVA
                      infoAdicionais: []
                    transactionAmount: 0.01
                    endToEndId: E082535392025020714143483598df89
                    statusCode: 200
                withExpiration:
                  summary: QR Code dinâmico com vencimento
                  value:
                    type: dynamic
                    merchantCategoryCode: '0000'
                    transactionCurrency: '986'
                    countryCode: BR
                    merchantName: ONZ_SOFTWARE
                    merchantCity: SAO_MIGUEL_DO_
                    url: >-
                      pix.example.com.br/qr/v3/at/cobv/b3f7dc3a-864d-4e33-84e8-c39f64eaf957
                    chave: 5f84a4c5-c5cb-4599-9f13-7eb4d419dacc
                    payload:
                      revisao: 0
                      calendario:
                        criacao: '2025-02-07T12:35:02Z'
                        apresentacao: '2025-02-07T14:24:37Z'
                        dataDeVencimento: '2025-09-27'
                        validadeAposVencimento: 30
                      devedor:
                        cpf: '34844504878'
                        nome: Luiz Rocha
                      recebedor:
                        nome: Logística SA
                        nomeFantasia: Empresa de Logística SA
                        cnpj: '56989000019533'
                        cep: '70800100'
                        cidade: São Paulo
                        logradouro: Rua 15 Numero 1200, Bairro São Luiz
                        uf: SP
                      chave: 5ed77877-998d-47ad-b19a-37dd93b058d2
                      txid: 7978c0c97ea847e78e8849634473c1f1
                      status: ATIVA
                      infoAdicionais: []
                      valor:
                        original: '1.00'
                        abatimento: '0.00'
                        desconto: '0.00'
                        juros: '0.00'
                        multa: '0.00'
                        final: '1.00'
                    transactionAmount: 1
                    endToEndId: E082535392025020714243793020ba43
                    statusCode: 200
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
      security:
        - OAuth2:
            - pix.read
  /internal-transfers:
    post:
      tags:
        - Transferências Internas
      summary: Criar transferência interna
      description: Cria uma transferência entre contas da mesma instituição.
      operationId: postInternalTransfer
      parameters:
        - name: x-idempotency-key
          in: header
          description: Identificador único da requisição para controle de idempotência.
          required: true
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternalTransferRequest'
            examples:
              basic:
                summary: Transferência interna básica
                value:
                  creditorAccount:
                    document: '12345678901'
                    name: João Silva
                    issuer: '0001'
                    number: '123456'
                    accountType: CACC
                  payment:
                    currency: BRL
                    amount: 100.5
                  paymentFlow: INSTANT
                  remittanceInformation: Transferência para pagamento
      responses:
        '202':
          description: Transferência aceita para processamento
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/InternalTransferResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '412':
          description: Pré-condição falhou - saldo insuficiente ou limite excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '422':
          description: Entidade não processável
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - internal-transfer.write
  /internal-transfers/{endToEndId}:
    get:
      tags:
        - Transferências Internas
      summary: Consultar transferência interna por EndToEndId
      description: >-
        Retorna os detalhes de uma transferência interna pelo identificador
        único.
      operationId: getInternalTransferByEndToEndId
      parameters:
        - name: endToEndId
          in: path
          required: true
          description: Identificador único da transferência (EndToEndId).
          schema:
            type: string
      responses:
        '200':
          description: Transferência encontrada
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/InternalTransferResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Transferência não encontrada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - internal-transfer.read
  /internal-transfers/idempotencyKey/{idempotencyKey}:
    get:
      tags:
        - Transferências Internas
      summary: Consultar transferência interna por chave de idempotência
      description: >-
        Retorna os detalhes de uma transferência interna pela chave de
        idempotência.
      operationId: getInternalTransferByIdempotencyKey
      parameters:
        - name: idempotencyKey
          in: path
          required: true
          description: Chave de idempotência usada na criação.
          schema:
            type: string
            pattern: '[a-zA-Z0-9]{1,50}'
      responses:
        '200':
          description: Transferência encontrada
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/InternalTransferResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '404':
          description: Transferência não encontrada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '429':
          description: Limite de requisições excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRFC7807'
        '503':
          description: Serviço indisponível
        '504':
          description: Tempo limite do gateway excedido
      security:
        - OAuth2:
            - internal-transfer.read
