openapi: 3.0.2
servers:
  - url: /v2
info:
  description: |-

    # Documentação de API para o SandBox DREX Real Digital.
  version: '2.0'
  title: SandBox DREX Real Digital by BBCHAIN
  contact:
    email: bueno@bbchain.com.br
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html

tags:
  - name: CBDCV2
    description: Teste CBDC
  - name: Customer
    description: Teste Customer
  - name: TPFt
    description: Test TPFt

paths:
  /cbdc:
    get:
      tags:
        - CBDCV2
      summary: Consulta saldo de CBDC
      description: Retorna saldo de CBDC do Participante em Reais
      operationId: getCBDC
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - balance
                  - balanceAllWallets
                properties:
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de cbdc disponível para o cliente ou banco.
                    example: 123.45
                    multipleOf: 0.01
                  balanceAllWallets:
                    type: number
                    format: double
                    description: >
                      A quantidade de cbdc disponível para o cliente ou banco
                      somando todas as carteiras.
                    example: 123.45
                    multipleOf: 0.01
                type: object
    post:
      tags:
        - CBDCV2
      summary: Deposita uma quantidade de CBDC na carteira do Participante
      operationId: depositCBDC
      requestBody:
        description: depositoCBDC
        required: true
        content:
          application/json:
            schema:
              required:
                - amount
              properties:
                amount:
                  type: number
                  format: double
                  description: |
                    Quantidade de cbdc a ser depositado.
                  example: 123.45
                  multipleOf: 0.01
              type: object
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - balance
                  - balanceAllWallets
                properties:
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de cbdc disponível para o cliente ou banco.
                    example: 123.45
                    multipleOf: 0.01
                  balanceAllWallets:
                    type: number
                    format: double
                    description: >
                      A quantidade de cbdc disponível para o cliente ou banco
                      somando todas as carteiras.
                    example: 123.45
                    multipleOf: 0.01
                type: object
  /cbdc/{cnpj8}:
    get:
      tags:
        - CBDCV2
      summary: Consulta saldo de CBDC
      description: Retorna saldo de CBDC do Participante em Reais
      operationId: getCBDCParticipant
      parameters:
        - name: cnpj8
          in: path
          description: CNPJ8 participante que irá receber a transferência de Titulo
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - balance
                  - balanceAllWallets
                properties:
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de cbdc disponível para o cliente ou banco.
                    example: 123.45
                    multipleOf: 0.01
                  balanceAllWallets:
                    type: number
                    format: double
                    description: >
                      A quantidade de cbdc disponível para o cliente ou banco
                      somando todas as carteiras.
                    example: 123.45
                    multipleOf: 0.01
                type: object
    post:
      tags:
        - CBDCV2
      summary: Deposita uma quantidade de CBDC na carteira do Participante
      operationId: depositParticipantCBDC
      parameters:
        - name: cnpj8
          in: path
          description: CNPJ8 participante que irá receber a transferência de Titulo
          required: true
          schema:
            type: integer
      requestBody:
        description: depositoCBDC
        required: true
        content:
          application/json:
            schema:
              required:
                - amount
              properties:
                amount:
                  type: number
                  format: double
                  description: |
                    Quantidade de cbdc a ser depositado.
                  example: 123.45
                  multipleOf: 0.01
              type: object
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - balance
                  - balanceAllWallets
                properties:
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de cbdc disponível para o cliente ou banco.
                    example: 123.45
                    multipleOf: 0.01
                  balanceAllWallets:
                    type: number
                    format: double
                    description: >
                      A quantidade de cbdc disponível para o cliente ou banco
                      somando todas as carteiras.
                    example: 123.45
                    multipleOf: 0.01
                type: object
  /cbdc/consolidated:
    get:
      tags:
        - CBDCV2
      summary: Consulta saldo de CBDC
      description: Retorna saldo de CBDC do Participante em Reais
      operationId: getConsolidatedCBDC
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - balance
                  - balanceAllWallets
                properties:
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de cbdc disponível para o cliente ou banco.
                    example: 123.45
                    multipleOf: 0.01
                  balanceAllWallets:
                    type: number
                    format: double
                    description: >
                      A quantidade de cbdc disponível para o cliente ou banco
                      somando todas as carteiras.
                    example: 123.45
                    multipleOf: 0.01
                type: object
  /cbdc/transfer:
    post:
      tags:
        - CBDCV2
      summary: Realiza a transferência de um volume de CBDC para outro Participante
      operationId: transferCBDC
      requestBody:
        description: challenge
        required: true
        content:
          application/json:
            schema:
              required:
                - receiver
                - amount
              properties:
                receiver:
                  type: integer
                  description: |
                    CNPJ8 do participante
                  example: 12345678
                amount:
                  type: number
                  format: double
                  description: |
                    A quantidade de cbdc a ser transferido
                  example: 123.45
                  multipleOf: 0.01
              type: object
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - balance
                  - balanceAllWallets
                properties:
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de cbdc disponível para o cliente ou banco.
                    example: 123.45
                    multipleOf: 0.01
                  balanceAllWallets:
                    type: number
                    format: double
                    description: >
                      A quantidade de cbdc disponível para o cliente ou banco
                      somando todas as carteiras.
                    example: 123.45
                    multipleOf: 0.01
                type: object
        '400':
          description: Invalid ID supplied
  /cbdc/participants:
    get:
      tags:
        - CBDCV2
      summary: Consulta saldo de CBDC
      description: Retorna saldo de CBDC dos Participantes em Reais
      operationId: getParticipantsWithBalance
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - balance
                    - bank
                    - wallet
                    - cnpj8
                    - enabled
                  properties:
                    bank:
                      type: string
                      example: Bank A
                      description: |
                        Nome do banco.
                    cnpj8:
                      type: integer
                      example: 75859975
                      description: CNPJ8 que identifica um participante
                    wallet:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: |
                        Carteira default do banco.
                    balance:
                      type: number
                      format: double
                      description: |
                        Quantidade de cbdc que o banco possui.
                      example: 123.45
                      multipleOf: 0.01
                    enabled:
                      type: boolean
                      example: false
                      description: >
                        Flag que define se a carteira padrão atual foi ativada
                        ou não.
                  type: object
  /customer:
    get:
      tags:
        - Customer
      summary: Consulta todos os clientes
      description: Retorna todos os clientes cadastrados
      operationId: getCustomers
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - cpfCnpj
                  properties:
                    wallet:
                      type: string
                      readOnly: true
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: |
                        Endereçco da carteira do cliente no sistema.
                    cpfCnpj:
                      type: string
                      example: 123.456.789-01
                      description: |
                        O CPF ou CNPJ do cliente.
                    balance:
                      type: number
                      format: double
                      description: |
                        A quantidade de real tokenizado do cliente.
                      example: 123.45
                      multipleOf: 0.01
                      readOnly: true
                  type: object
    post:
      tags:
        - Customer
      summary: Insere um novo cliente na rede
      operationId: addCustomer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - cpfCnpj
              properties:
                wallet:
                  type: string
                  readOnly: true
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    Endereçco da carteira do cliente no sistema.
                cpfCnpj:
                  type: string
                  example: 123.456.789-01
                  description: |
                    O CPF ou CNPJ do cliente.
                balance:
                  type: number
                  format: double
                  description: |
                    A quantidade de real tokenizado do cliente.
                  example: 123.45
                  multipleOf: 0.01
                  readOnly: true
              type: object
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - cpfCnpj
                properties:
                  wallet:
                    type: string
                    readOnly: true
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      Endereçco da carteira do cliente no sistema.
                  cpfCnpj:
                    type: string
                    example: 123.456.789-01
                    description: |
                      O CPF ou CNPJ do cliente.
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de real tokenizado do cliente.
                    example: 123.45
                    multipleOf: 0.01
                    readOnly: true
                type: object
  /customer/consolidated:
    get:
      tags:
        - Customer
      summary: Consulta todos os clientes
      description: Retorna todos os clientes cadastrados
      operationId: getConsolidatedCustomerBalance
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - amount
                properties:
                  amount:
                    type: number
                    format: double
                    description: >
                      A quantidade de real tokenizado de todos os clientes do
                      banco.
                    example: 123.45
                    multipleOf: 0.01
                type: object
  /customer/{customerWallet}:
    get:
      tags:
        - Customer
      summary: Consulta dados de um cliente especifico
      operationId: getCustomer
      parameters:
        - name: customerWallet
          in: path
          description: Carteira do Cliente que está realizando a operação
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - cpfCnpj
                properties:
                  wallet:
                    type: string
                    readOnly: true
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      Endereçco da carteira do cliente no sistema.
                  cpfCnpj:
                    type: string
                    example: 123.456.789-01
                    description: |
                      O CPF ou CNPJ do cliente.
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de real tokenizado do cliente.
                    example: 123.45
                    multipleOf: 0.01
                    readOnly: true
                type: object
    post:
      tags:
        - Customer
      summary: Realiza o deposito de Real para conversão para Real Tokenizado
      operationId: addCustomerBalance
      parameters:
        - name: customerWallet
          in: path
          description: Carteira do Cliente que está realizando a operação
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - amount
              properties:
                amount:
                  type: number
                  format: double
                  description: >
                    A quantidade de real tokenizado de todos os clientes do
                    banco.
                  example: 123.45
                  multipleOf: 0.01
              type: object
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - cpfCnpj
                properties:
                  wallet:
                    type: string
                    readOnly: true
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      Endereçco da carteira do cliente no sistema.
                  cpfCnpj:
                    type: string
                    example: 123.456.789-01
                    description: |
                      O CPF ou CNPJ do cliente.
                  balance:
                    type: number
                    format: double
                    description: |
                      A quantidade de real tokenizado do cliente.
                    example: 123.45
                    multipleOf: 0.01
                    readOnly: true
                type: object
  /tpft:
    get:
      tags:
        - TPFt
      summary: Consulta saldos de Titulos
      description: Retorna lista de saldos de titulos do Participante em Reais
      operationId: getTPFts
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - tpftData
                    - balance
                  properties:
                    tpftData:
                      required:
                        - acronym
                        - code
                        - maturityDate
                      properties:
                        acronym:
                          type: string
                          example: Meu titulo
                          description: |
                            Um identificador do título.
                        code:
                          type: string
                          example: '123009'
                          description: |
                            Código do título.
                        maturityDate:
                          type: string
                          format: date
                          example: 12/12/2025
                          description: |
                            Data de vencimento do título.
                      type: object
                      description: >
                        Um título é identificado únicamente pelo conjunto
                        description:

                        * idTitulo

                        * codigoTitulo

                        * vencimentoTitulo
                    balance:
                      type: number
                      format: double
                      example: 123.45
                      multipleOf: 0.01
                      description: |
                        Saldo de títulos.
                  type: object
                  description: |
                    Título com saldo.
    post:
      tags:
        - TPFt
      summary: Criar um novo titulo na rede
      operationId: createTPFt
      requestBody:
        description: Titulo a ser criado
        required: true
        content:
          application/json:
            schema:
              required:
                - tpftData
                - balance
              properties:
                tpftData:
                  required:
                    - acronym
                    - code
                    - maturityDate
                  properties:
                    acronym:
                      type: string
                      example: Meu titulo
                      description: |
                        Um identificador do título.
                    code:
                      type: string
                      example: '123009'
                      description: |
                        Código do título.
                    maturityDate:
                      type: string
                      format: date
                      example: 12/12/2025
                      description: |
                        Data de vencimento do título.
                  type: object
                  description: >
                    Um título é identificado únicamente pelo conjunto
                    description:

                    * idTitulo

                    * codigoTitulo

                    * vencimentoTitulo
                balance:
                  type: number
                  format: double
                  example: 123.45
                  multipleOf: 0.01
                  description: |
                    Saldo de títulos.
              type: object
              description: |
                Título com saldo.
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - tpftData
                  - balance
                properties:
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  balance:
                    type: number
                    format: double
                    example: 123.45
                    multipleOf: 0.01
                    description: |
                      Saldo de títulos.
                type: object
                description: |
                  Título com saldo.
  /tpft/transfer:
    post:
      tags:
        - TPFt
      summary: Realiza a transferência de um titulo para outro participante
      operationId: transferTPFt
      requestBody:
        description: titulo
        required: true
        content:
          application/json:
            schema:
              required:
                - receiver
                - tpftData
                - amount
              properties:
                receiver:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    Carteira de quem receberá o título.
                tpftData:
                  required:
                    - acronym
                    - code
                    - maturityDate
                  properties:
                    acronym:
                      type: string
                      example: Meu titulo
                      description: |
                        Um identificador do título.
                    code:
                      type: string
                      example: '123009'
                      description: |
                        Código do título.
                    maturityDate:
                      type: string
                      format: date
                      example: 12/12/2025
                      description: |
                        Data de vencimento do título.
                  type: object
                  description: >
                    Um título é identificado únicamente pelo conjunto
                    description:

                    * idTitulo

                    * codigoTitulo

                    * vencimentoTitulo
                amount:
                  type: number
                  format: double
                  example: 123.45
                  multipleOf: 0.01
                  description: |
                    Saldo de títulos a serem transferidos.
              type: object
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - tpftData
                  - balance
                properties:
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  balance:
                    type: number
                    format: double
                    example: 123.45
                    multipleOf: 0.01
                    description: |
                      Saldo de títulos.
                type: object
                description: |
                  Título com saldo.
  /tpft/trade:
    post:
      tags:
        - TPFt
      summary: Cria uma operação de compra e venda de título.
      operationId: tradeTPFt
      requestBody:
        description: Oferta de compra
        required: true
        content:
          application/json:
            schema:
              required:
                - operationId
                - tpftData
                - amount
                - unitPrice
                - callerPart
              properties:
                operationId:
                  type: integer
                  example: 12320231003
                  description: |
                    Número de operação + data vigente no formato yyyyMMdd.
                cnpj8Sender:
                  type: integer
                  example: 12345678
                  description: |
                    CNPJ8 do vendedor.
                cnpj8Receiver:
                  type: integer
                  example: 12345678
                  description: |
                    CNPJ8 do comprador.
                callerPart:
                  type: string
                  enum:
                    - TPFtSender
                    - TPFtReceiver
                  description: >-
                    ENUM para identificar se comprador ou vendedor. * TPFTSender
                    caso for vendedor. * TPFtReceiver caso for comprador.
                addressSender:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do vendedor.
                addressReceiver:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do comprador.
                tpftData:
                  required:
                    - acronym
                    - code
                    - maturityDate
                  properties:
                    acronym:
                      type: string
                      example: Meu titulo
                      description: |
                        Um identificador do título.
                    code:
                      type: string
                      example: '123009'
                      description: |
                        Código do título.
                    maturityDate:
                      type: string
                      format: date
                      example: 12/12/2025
                      description: |
                        Data de vencimento do título.
                  type: object
                  description: >
                    Um título é identificado únicamente pelo conjunto
                    description:

                    * idTitulo

                    * codigoTitulo

                    * vencimentoTitulo
                amount:
                  type: number
                  format: double
                  description: |
                    Quantidade de títulos.
                  example: 123.45
                  multipleOf: 0.01
                unitPrice:
                  type: number
                  format: double
                  description: |
                    Preço, real digital, da operação.
                  example: 123.45
                  multipleOf: 0.01
              type: object
              description: >
                Uma operação de compra e venda.

                Apenas instituições financeiras possuem cnpj8, se for uma oferta
                para para um cliente, é necessário utilizar o endereço da
                carteira.
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - operationId
                  - tpftData
                  - amount
                  - unitPrice
                  - callerPart
                properties:
                  operationId:
                    type: integer
                    example: 12320231003
                    description: |
                      Número de operação + data vigente no formato yyyyMMdd.
                  cnpj8Sender:
                    type: integer
                    example: 12345678
                    description: |
                      CNPJ8 do vendedor.
                  cnpj8Receiver:
                    type: integer
                    example: 12345678
                    description: |
                      CNPJ8 do comprador.
                  callerPart:
                    type: string
                    enum:
                      - TPFtSender
                      - TPFtReceiver
                    description: >-
                      ENUM para identificar se comprador ou vendedor. *
                      TPFTSender caso for vendedor. * TPFtReceiver caso for
                      comprador.
                  addressSender:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do vendedor.
                  addressReceiver:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do comprador.
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  amount:
                    type: number
                    format: double
                    description: |
                      Quantidade de títulos.
                    example: 123.45
                    multipleOf: 0.01
                  unitPrice:
                    type: number
                    format: double
                    description: |
                      Preço, real digital, da operação.
                    example: 123.45
                    multipleOf: 0.01
                type: object
                description: >
                  Uma operação de compra e venda.

                  Apenas instituições financeiras possuem cnpj8, se for uma
                  oferta para para um cliente, é necessário utilizar o endereço
                  da carteira.
  /tpft/customer/{wallet}:
    get:
      tags:
        - TPFt
      summary: Consulta saldos de Titulos de um cliente
      description: Retorna lista de saldos de titulos do Participante em Reais
      operationId: getTPFtByCustomer
      parameters:
        - name: wallet
          in: path
          description: Carteira do Cliente que está realizando a operação
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - tpftData
                    - balance
                  properties:
                    tpftData:
                      required:
                        - acronym
                        - code
                        - maturityDate
                      properties:
                        acronym:
                          type: string
                          example: Meu titulo
                          description: |
                            Um identificador do título.
                        code:
                          type: string
                          example: '123009'
                          description: |
                            Código do título.
                        maturityDate:
                          type: string
                          format: date
                          example: 12/12/2025
                          description: |
                            Data de vencimento do título.
                      type: object
                      description: >
                        Um título é identificado únicamente pelo conjunto
                        description:

                        * idTitulo

                        * codigoTitulo

                        * vencimentoTitulo
                    balance:
                      type: number
                      format: double
                      example: 123.45
                      multipleOf: 0.01
                      description: |
                        Saldo de títulos.
                  type: object
                  description: |
                    Título com saldo.
  /tpft/customer/{wallet}/trade:
    post:
      tags:
        - TPFt
      summary: Cria uma operação de compra de titulo
      operationId: tradeOfferByCustomer
      parameters:
        - name: wallet
          in: path
          description: Carteira do Cliente que está realizando a operação
          required: true
          schema:
            type: string
      requestBody:
        description: Operação de compra e venda.
        required: true
        content:
          application/json:
            schema:
              required:
                - operationId
                - tpftData
                - amount
                - unitPrice
                - callerPart
              properties:
                operationId:
                  type: integer
                  example: 12320231003
                  description: |
                    Número de operação + data vigente no formato yyyyMMdd.
                cnpj8Sender:
                  type: integer
                  example: 12345678
                  description: |
                    CNPJ8 do vendedor.
                cnpj8Receiver:
                  type: integer
                  example: 12345678
                  description: |
                    CNPJ8 do comprador.
                callerPart:
                  type: string
                  enum:
                    - TPFtSender
                    - TPFtReceiver
                  description: >-
                    ENUM para identificar se comprador ou vendedor. * TPFTSender
                    caso for vendedor. * TPFtReceiver caso for comprador.
                addressSender:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do vendedor.
                addressReceiver:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do comprador.
                tpftData:
                  required:
                    - acronym
                    - code
                    - maturityDate
                  properties:
                    acronym:
                      type: string
                      example: Meu titulo
                      description: |
                        Um identificador do título.
                    code:
                      type: string
                      example: '123009'
                      description: |
                        Código do título.
                    maturityDate:
                      type: string
                      format: date
                      example: 12/12/2025
                      description: |
                        Data de vencimento do título.
                  type: object
                  description: >
                    Um título é identificado únicamente pelo conjunto
                    description:

                    * idTitulo

                    * codigoTitulo

                    * vencimentoTitulo
                amount:
                  type: number
                  format: double
                  description: |
                    Quantidade de títulos.
                  example: 123.45
                  multipleOf: 0.01
                unitPrice:
                  type: number
                  format: double
                  description: |
                    Preço, real digital, da operação.
                  example: 123.45
                  multipleOf: 0.01
              type: object
              description: >
                Uma operação de compra e venda.

                Apenas instituições financeiras possuem cnpj8, se for uma oferta
                para para um cliente, é necessário utilizar o endereço da
                carteira.
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - operationId
                  - tpftData
                  - amount
                  - unitPrice
                  - callerPart
                properties:
                  operationId:
                    type: integer
                    example: 12320231003
                    description: |
                      Número de operação + data vigente no formato yyyyMMdd.
                  cnpj8Sender:
                    type: integer
                    example: 12345678
                    description: |
                      CNPJ8 do vendedor.
                  cnpj8Receiver:
                    type: integer
                    example: 12345678
                    description: |
                      CNPJ8 do comprador.
                  callerPart:
                    type: string
                    enum:
                      - TPFtSender
                      - TPFtReceiver
                    description: >-
                      ENUM para identificar se comprador ou vendedor. *
                      TPFTSender caso for vendedor. * TPFtReceiver caso for
                      comprador.
                  addressSender:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do vendedor.
                  addressReceiver:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do comprador.
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  amount:
                    type: number
                    format: double
                    description: |
                      Quantidade de títulos.
                    example: 123.45
                    multipleOf: 0.01
                  unitPrice:
                    type: number
                    format: double
                    description: |
                      Preço, real digital, da operação.
                    example: 123.45
                    multipleOf: 0.01
                type: object
                description: >
                  Uma operação de compra e venda.

                  Apenas instituições financeiras possuem cnpj8, se for uma
                  oferta para para um cliente, é necessário utilizar o endereço
                  da carteira.
  /tpft/customer/{wallet}/transfer:
    post:
      tags:
        - TPFt
      summary: Realiza a transferência de um titulo para outro participante
      operationId: transferCustomerTPFt
      parameters:
        - name: wallet
          in: path
          description: Carteira do Cliente detentor do Titulo
          required: true
          schema:
            type: string
      requestBody:
        description: titulo
        required: true
        content:
          application/json:
            schema:
              required:
                - receiver
                - tpftData
                - amount
              properties:
                receiver:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    Carteira de quem receberá o título.
                tpftData:
                  required:
                    - acronym
                    - code
                    - maturityDate
                  properties:
                    acronym:
                      type: string
                      example: Meu titulo
                      description: |
                        Um identificador do título.
                    code:
                      type: string
                      example: '123009'
                      description: |
                        Código do título.
                    maturityDate:
                      type: string
                      format: date
                      example: 12/12/2025
                      description: |
                        Data de vencimento do título.
                  type: object
                  description: >
                    Um título é identificado únicamente pelo conjunto
                    description:

                    * idTitulo

                    * codigoTitulo

                    * vencimentoTitulo
                amount:
                  type: number
                  format: double
                  example: 123.45
                  multipleOf: 0.01
                  description: |
                    Saldo de títulos a serem transferidos.
              type: object
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - tpftData
                  - balance
                properties:
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  balance:
                    type: number
                    format: double
                    example: 123.45
                    multipleOf: 0.01
                    description: |
                      Saldo de títulos.
                type: object
                description: |
                  Título com saldo.
  /marketplace:
    get:
      tags:
        - MarketplaceV2
      summary: Consulta Ativos disponíveis para compra e venda no Marketplace
      operationId: getOffers
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - tpftData
                    - amount
                    - unitPrice
                  properties:
                    operationId:
                      type: integer
                      example: 12320231009
                      description: >
                        O identificador para a operação. Número + data no
                        formado yyyyMMdd.
                    cnpj8Receiver:
                      type: integer
                      example: 12345678
                      description: |
                        O CNPJ8 do comprador.
                    cnpj8Sender:
                      type: integer
                      example: 12345478
                      description: |
                        O CNPJ8 do vendedor.
                    addressSender:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: |
                        A carteira do vendedor.
                    addressReceiver:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: |
                        A carteira do comprador.
                    callerPart:
                      type: string
                      enum:
                        - TPFtSender
                        - TPFtReceiver
                      description: >-
                        ENUM para identificar se comprador ou vendedor. *
                        TPFTSender caso for vendedor. * TPFtReceiver caso for
                        comprador.
                    tpftData:
                      required:
                        - acronym
                        - code
                        - maturityDate
                      properties:
                        acronym:
                          type: string
                          example: Meu titulo
                          description: |
                            Um identificador do título.
                        code:
                          type: string
                          example: '123009'
                          description: |
                            Código do título.
                        maturityDate:
                          type: string
                          format: date
                          example: 12/12/2025
                          description: |
                            Data de vencimento do título.
                      type: object
                      description: >
                        Um título é identificado únicamente pelo conjunto
                        description:

                        * idTitulo

                        * codigoTitulo

                        * vencimentoTitulo
                    amount:
                      type: number
                      format: double
                      description: |
                        Quantidade de títulos.
                      example: 123.45
                      multipleOf: 0.01
                    unitPrice:
                      type: number
                      format: double
                      description: |
                        Preço, real digital, da operação.
                      example: 123.45
                      multipleOf: 0.01
                  type: object
                  description: >
                    Se apenas o cnpj8Receiver for definido, criará uma operação
                    de compra. Se apenas o cnpj8Sender for definido, criará uma
                    operação de venda.
    post:
      tags:
        - MarketplaceV2
      summary: Cria uma nova operação de compra e venda no Marketplace
      operationId: createOffer
      requestBody:
        description: ativo
        required: true
        content:
          application/json:
            schema:
              required:
                - tpftData
                - amount
                - unitPrice
              properties:
                operationId:
                  type: integer
                  example: 12320231009
                  description: >
                    O identificador para a operação. Número + data no formado
                    yyyyMMdd.
                cnpj8Receiver:
                  type: integer
                  example: 12345678
                  description: |
                    O CNPJ8 do comprador.
                cnpj8Sender:
                  type: integer
                  example: 12345478
                  description: |
                    O CNPJ8 do vendedor.
                addressSender:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do vendedor.
                addressReceiver:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do comprador.
                callerPart:
                  type: string
                  enum:
                    - TPFtSender
                    - TPFtReceiver
                  description: >-
                    ENUM para identificar se comprador ou vendedor. * TPFTSender
                    caso for vendedor. * TPFtReceiver caso for comprador.
                tpftData:
                  required:
                    - acronym
                    - code
                    - maturityDate
                  properties:
                    acronym:
                      type: string
                      example: Meu titulo
                      description: |
                        Um identificador do título.
                    code:
                      type: string
                      example: '123009'
                      description: |
                        Código do título.
                    maturityDate:
                      type: string
                      format: date
                      example: 12/12/2025
                      description: |
                        Data de vencimento do título.
                  type: object
                  description: >
                    Um título é identificado únicamente pelo conjunto
                    description:

                    * idTitulo

                    * codigoTitulo

                    * vencimentoTitulo
                amount:
                  type: number
                  format: double
                  description: |
                    Quantidade de títulos.
                  example: 123.45
                  multipleOf: 0.01
                unitPrice:
                  type: number
                  format: double
                  description: |
                    Preço, real digital, da operação.
                  example: 123.45
                  multipleOf: 0.01
              type: object
              description: >
                Se apenas o cnpj8Receiver for definido, criará uma operação de
                compra. Se apenas o cnpj8Sender for definido, criará uma
                operação de venda.
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - tpftData
                  - amount
                  - unitPrice
                properties:
                  operationId:
                    type: integer
                    example: 12320231009
                    description: >
                      O identificador para a operação. Número + data no formado
                      yyyyMMdd.
                  cnpj8Receiver:
                    type: integer
                    example: 12345678
                    description: |
                      O CNPJ8 do comprador.
                  cnpj8Sender:
                    type: integer
                    example: 12345478
                    description: |
                      O CNPJ8 do vendedor.
                  addressSender:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do vendedor.
                  addressReceiver:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do comprador.
                  callerPart:
                    type: string
                    enum:
                      - TPFtSender
                      - TPFtReceiver
                    description: >-
                      ENUM para identificar se comprador ou vendedor. *
                      TPFTSender caso for vendedor. * TPFtReceiver caso for
                      comprador.
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  amount:
                    type: number
                    format: double
                    description: |
                      Quantidade de títulos.
                    example: 123.45
                    multipleOf: 0.01
                  unitPrice:
                    type: number
                    format: double
                    description: |
                      Preço, real digital, da operação.
                    example: 123.45
                    multipleOf: 0.01
                type: object
                description: >
                  Se apenas o cnpj8Receiver for definido, criará uma operação de
                  compra. Se apenas o cnpj8Sender for definido, criará uma
                  operação de venda.
  /marketplace/{operationId}:
    get:
      tags:
        - MarketplaceV2
      summary: Consulta dados de um ativo especifico
      description: Retorna saldo de CBDC do Participante em Reais
      operationId: getOffer
      parameters:
        - name: operationId
          in: path
          description: ID da operação que será fechada
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - tpftData
                  - amount
                  - unitPrice
                properties:
                  operationId:
                    type: integer
                    example: 12320231009
                    description: >
                      O identificador para a operação. Número + data no formado
                      yyyyMMdd.
                  cnpj8Receiver:
                    type: integer
                    example: 12345678
                    description: |
                      O CNPJ8 do comprador.
                  cnpj8Sender:
                    type: integer
                    example: 12345478
                    description: |
                      O CNPJ8 do vendedor.
                  addressSender:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do vendedor.
                  addressReceiver:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do comprador.
                  callerPart:
                    type: string
                    enum:
                      - TPFtSender
                      - TPFtReceiver
                    description: >-
                      ENUM para identificar se comprador ou vendedor. *
                      TPFTSender caso for vendedor. * TPFtReceiver caso for
                      comprador.
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  amount:
                    type: number
                    format: double
                    description: |
                      Quantidade de títulos.
                    example: 123.45
                    multipleOf: 0.01
                  unitPrice:
                    type: number
                    format: double
                    description: |
                      Preço, real digital, da operação.
                    example: 123.45
                    multipleOf: 0.01
                type: object
                description: >
                  Se apenas o cnpj8Receiver for definido, criará uma operação de
                  compra. Se apenas o cnpj8Sender for definido, criará uma
                  operação de venda.
    post:
      tags:
        - MarketplaceV2
      summary: Realiza a compra ou venda de uma operação colocada no marketplace
      operationId: postOperacaoMarketplace
      parameters:
        - name: operationId
          in: path
          description: ID da operação que será fechada
          required: true
          schema:
            type: integer
      requestBody:
        description: operacao
        required: true
        content:
          application/json:
            schema:
              required:
                - tpftData
                - amount
                - unitPrice
              properties:
                operationId:
                  type: integer
                  example: 12320231009
                  description: >
                    O identificador para a operação. Número + data no formado
                    yyyyMMdd.
                cnpj8Receiver:
                  type: integer
                  example: 12345678
                  description: |
                    O CNPJ8 do comprador.
                cnpj8Sender:
                  type: integer
                  example: 12345478
                  description: |
                    O CNPJ8 do vendedor.
                addressSender:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do vendedor.
                addressReceiver:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    A carteira do comprador.
                callerPart:
                  type: string
                  enum:
                    - TPFtSender
                    - TPFtReceiver
                  description: >-
                    ENUM para identificar se comprador ou vendedor. * TPFTSender
                    caso for vendedor. * TPFtReceiver caso for comprador.
                tpftData:
                  required:
                    - acronym
                    - code
                    - maturityDate
                  properties:
                    acronym:
                      type: string
                      example: Meu titulo
                      description: |
                        Um identificador do título.
                    code:
                      type: string
                      example: '123009'
                      description: |
                        Código do título.
                    maturityDate:
                      type: string
                      format: date
                      example: 12/12/2025
                      description: |
                        Data de vencimento do título.
                  type: object
                  description: >
                    Um título é identificado únicamente pelo conjunto
                    description:

                    * idTitulo

                    * codigoTitulo

                    * vencimentoTitulo
                amount:
                  type: number
                  format: double
                  description: |
                    Quantidade de títulos.
                  example: 123.45
                  multipleOf: 0.01
                unitPrice:
                  type: number
                  format: double
                  description: |
                    Preço, real digital, da operação.
                  example: 123.45
                  multipleOf: 0.01
              type: object
              description: >
                Se apenas o cnpj8Receiver for definido, criará uma operação de
                compra. Se apenas o cnpj8Sender for definido, criará uma
                operação de venda.
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - tpftData
                  - amount
                  - unitPrice
                properties:
                  operationId:
                    type: integer
                    example: 12320231009
                    description: >
                      O identificador para a operação. Número + data no formado
                      yyyyMMdd.
                  cnpj8Receiver:
                    type: integer
                    example: 12345678
                    description: |
                      O CNPJ8 do comprador.
                  cnpj8Sender:
                    type: integer
                    example: 12345478
                    description: |
                      O CNPJ8 do vendedor.
                  addressSender:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do vendedor.
                  addressReceiver:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      A carteira do comprador.
                  callerPart:
                    type: string
                    enum:
                      - TPFtSender
                      - TPFtReceiver
                    description: >-
                      ENUM para identificar se comprador ou vendedor. *
                      TPFTSender caso for vendedor. * TPFtReceiver caso for
                      comprador.
                  tpftData:
                    required:
                      - acronym
                      - code
                      - maturityDate
                    properties:
                      acronym:
                        type: string
                        example: Meu titulo
                        description: |
                          Um identificador do título.
                      code:
                        type: string
                        example: '123009'
                        description: |
                          Código do título.
                      maturityDate:
                        type: string
                        format: date
                        example: 12/12/2025
                        description: |
                          Data de vencimento do título.
                    type: object
                    description: >
                      Um título é identificado únicamente pelo conjunto
                      description:

                      * idTitulo

                      * codigoTitulo

                      * vencimentoTitulo
                  amount:
                    type: number
                    format: double
                    description: |
                      Quantidade de títulos.
                    example: 123.45
                    multipleOf: 0.01
                  unitPrice:
                    type: number
                    format: double
                    description: |
                      Preço, real digital, da operação.
                    example: 123.45
                    multipleOf: 0.01
                type: object
                description: >
                  Se apenas o cnpj8Receiver for definido, criará uma operação de
                  compra. Se apenas o cnpj8Sender for definido, criará uma
                  operação de venda.
  /participant:
    get:
      tags:
        - Participant
      summary: Consulta dados do participante
      operationId: getParticipant
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                required:
                  - balance
                  - bank
                  - wallet
                  - cnpj8
                  - enabled
                properties:
                  bank:
                    type: string
                    example: Bank A
                    description: |
                      Nome do banco.
                  cnpj8:
                    type: integer
                    example: 75859975
                    description: CNPJ8 que identifica um participante
                  wallet:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: |
                      Carteira default do banco.
                  balance:
                    type: number
                    format: double
                    description: |
                      Quantidade de cbdc que o banco possui.
                    example: 123.45
                    multipleOf: 0.01
                  enabled:
                    type: boolean
                    example: false
                    description: >
                      Flag que define se a carteira padrão atual foi ativada ou
                      não.
                type: object
  /wallets/participants:
    get:
      tags:
        - Wallet
      summary: Busca as carteiras de todos participantes.
      operationId: getDefaultWallets
      responses:
        '200':
          description: As wallets dos participantes
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - name
                  properties:
                    name:
                      type: string
                      example: Minha Carteira
                      description: |
                        Nome da carteira.
                    address:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: >
                        Endereço da carteira. Se vazio, será gerada uma
                        automaticamente.
                    default:
                      type: boolean
                      example: true
                      description: Informa se é a carteira default.
                    cnpj8:
                      type: integer
                      example: 75859975
                      description: CNPJ8 que identifica um participante
                    enabled:
                      type: boolean
                      example: true
                      description: Informa se está habilitada para transacionar.
                  type: object
  /wallets/participants/{cnpj8}:
    get:
      tags:
        - Wallet
      summary: Busca as carteiras do participante.
      operationId: getWalletsByCnpj8
      parameters:
        - name: cnpj8
          in: path
          description: CNPJ8 do participante
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: As wallets do participante
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - name
                  properties:
                    name:
                      type: string
                      example: Minha Carteira
                      description: |
                        Nome da carteira.
                    address:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: >
                        Endereço da carteira. Se vazio, será gerada uma
                        automaticamente.
                    privateKey:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: >
                        Chave Privada da carteira. Se vazio, será erada uma
                        automaticamente.
                    default:
                      type: boolean
                      example: true
                      default: false
                      description: Informa se é a carteira default.
                    enabled:
                      type: boolean
                      example: true
                      default: false
                      description: Informa se está habilitada para transacionar.
                    balance:
                      type: number
                      format: double
                      readOnly: true
                      description: |
                        A quantidade de cbdc disponível na carteira.
                      example: 123.45
                      multipleOf: 0.01
                  type: object
  /wallets:
    post:
      tags:
        - Wallet
      summary: Cria uma nova wallet.
      operationId: createNewWallet
      requestBody:
        description: Dados necessários para criação da wallet
        required: true
        content:
          application/json:
            schema:
              required:
                - name
              properties:
                name:
                  type: string
                  example: Minha Carteira
                  description: |
                    Nome da carteira.
                address:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: >
                    Endereço da carteira. Se vazio, será gerada uma
                    automaticamente.
                privateKey:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: >
                    Chave Privada da carteira. Se vazio, será erada uma
                    automaticamente.
                default:
                  type: boolean
                  example: true
                  default: false
                  description: Informa se é a carteira default.
                enabled:
                  type: boolean
                  example: true
                  default: false
                  description: Informa se está habilitada para transacionar.
                balance:
                  type: number
                  format: double
                  readOnly: true
                  description: |
                    A quantidade de cbdc disponível na carteira.
                  example: 123.45
                  multipleOf: 0.01
              type: object
      responses:
        '201':
          description: Criado
          content:
            application/json:
              schema:
                required:
                  - name
                properties:
                  name:
                    type: string
                    example: Minha Carteira
                    description: |
                      Nome da carteira.
                  address:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: >
                      Endereço da carteira. Se vazio, será gerada uma
                      automaticamente.
                  privateKey:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: >
                      Chave Privada da carteira. Se vazio, será erada uma
                      automaticamente.
                  default:
                    type: boolean
                    example: true
                    default: false
                    description: Informa se é a carteira default.
                  enabled:
                    type: boolean
                    example: true
                    default: false
                    description: Informa se está habilitada para transacionar.
                  balance:
                    type: number
                    format: double
                    readOnly: true
                    description: |
                      A quantidade de cbdc disponível na carteira.
                    example: 123.45
                    multipleOf: 0.01
                type: object
    get:
      tags:
        - Wallet
      summary: Busca as carteiras do participante.
      operationId: getWallets
      responses:
        '200':
          description: As wallets do participante
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - name
                  properties:
                    name:
                      type: string
                      example: Minha Carteira
                      description: |
                        Nome da carteira.
                    address:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: >
                        Endereço da carteira. Se vazio, será gerada uma
                        automaticamente.
                    privateKey:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: >
                        Chave Privada da carteira. Se vazio, será erada uma
                        automaticamente.
                    default:
                      type: boolean
                      example: true
                      default: false
                      description: Informa se é a carteira default.
                    enabled:
                      type: boolean
                      example: true
                      default: false
                      description: Informa se está habilitada para transacionar.
                    balance:
                      type: number
                      format: double
                      readOnly: true
                      description: |
                        A quantidade de cbdc disponível na carteira.
                      example: 123.45
                      multipleOf: 0.01
                  type: object
  /wallets/{walletAddress}:
    post:
      tags:
        - Wallet
      summary: Define se a wallet é padrão ou ativa.
      operationId: setWallet
      parameters:
        - name: walletAddress
          in: path
          description: Endereço da wallet
          required: true
          schema:
            type: string
      requestBody:
        description: Dados necessários para criação da wallet
        required: true
        content:
          application/json:
            schema:
              required:
                - default
                - enabled
              properties:
                name:
                  type: string
                  example: Minha Carteira
                  description: |
                    Nome da carteira.
                default:
                  type: boolean
                  example: true
                  description: Informa se é a carteira default.
                enabled:
                  type: boolean
                  example: true
                  description: Informa se está habilitada para transacionar.
              type: object
      responses:
        '201':
          description: Criado
    get:
      tags:
        - Wallet
      summary: Busca as carteiras do participante.
      operationId: getWalletByAddress
      parameters:
        - name: walletAddress
          in: path
          description: Endereço da wallet
          required: true
          schema:
            type: string
      responses:
        '200':
          description: As wallets do participante
          content:
            application/json:
              schema:
                required:
                  - name
                properties:
                  name:
                    type: string
                    example: Minha Carteira
                    description: |
                      Nome da carteira.
                  address:
                    type: string
                    example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                    description: >
                      Endereço da carteira. Se vazio, será gerada uma
                      automaticamente.
                  default:
                    type: boolean
                    example: true
                    description: Informa se é a carteira default.
                  cnpj8:
                    type: integer
                    example: 75859975
                    description: CNPJ8 que identifica um participante
                  enabled:
                    type: boolean
                    example: true
                    description: Informa se está habilitada para transacionar.
                type: object
  /wallets/enabled:
    post:
      tags:
        - Wallet
      summary: Ativa uma wallet na rede
      operationId: enableWallet
      requestBody:
        description: Objeto com o endereço da Wallet.
        required: true
        content:
          application/json:
            schema:
              required:
                - address
              properties:
                address:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    Endereço da carteira.
              type: object
      responses:
        '201':
          description: Ativada.
    get:
      tags:
        - Wallet
      summary: Busca as carteiras ativadas.
      operationId: getEnabledWallets
      responses:
        '200':
          description: As wallets dos participantes
          content:
            application/json:
              schema:
                type: array
                items:
                  required:
                    - name
                  properties:
                    name:
                      type: string
                      example: Minha Carteira
                      description: |
                        Nome da carteira.
                    address:
                      type: string
                      example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                      description: >
                        Endereço da carteira. Se vazio, será gerada uma
                        automaticamente.
                    default:
                      type: boolean
                      example: true
                      description: Informa se é a carteira default.
                    cnpj8:
                      type: integer
                      example: 75859975
                      description: CNPJ8 que identifica um participante
                    enabled:
                      type: boolean
                      example: true
                      description: Informa se está habilitada para transacionar.
                  type: object
  /wallets/disabled:
    post:
      tags:
        - Wallet
      summary: Desativa uma wallet na rede
      operationId: disableWallet
      requestBody:
        description: Objeto com o endereço da Wallet.
        required: true
        content:
          application/json:
            schema:
              required:
                - address
              properties:
                address:
                  type: string
                  example: '0xe69d9b02e31da15cf78184078e250633b69753cc'
                  description: |
                    Endereço da carteira.
              type: object
      responses:
        '201':
          description: Desativada.
