openapi: 3.0.0
info:
  title: API OpenData Financings do Open Finance Brasil
  description: A API descrita neste documento é referente as API Financings da fase OpenData do Open Finance Brasil.
  version: 1.0.0-rc.1
  contact:
    url: 'https://servicedesk.openbankingbrasil.org.br/Login.jsp?navLanguage=pt-BR'
servers:
  - url: 'http://api.banco.com.br/open-banking/opendata-financings/v1'
tags:
  - name: Financings
    description: Operações para listagem financiamentos
paths:
  /personal-financings:
    get:
      tags:
        - Financings
      summary: Obtém a lista de Financiamentos de Pessoa Natural.
      description: Obtém a lista de Financiamentos de Pessoa Natural
      operationId: getPersonalFinancings
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de financiamentos de pessoa natural obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePersonalFinancings'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
  /business-financings:
    get:
      tags:
        - Financings
      summary: Obtém a lista de Financiamentos de Pessoa Jurídica.
      description: Obtém a lista de Financiamentos de Pessoa Jurídica.
      operationId: getBusinessFinancings
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de financiamentos de pessoa jurídica obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBusinessFinancings'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
components:
  schemas:
    ApplicationRate:
      type: object
      required:
        - interval
        - indexer
        - customers
      x-regulatory-required:
        - interval
        - indexer
        - customers
      properties:
        interval:
          $ref: '#/components/schemas/ApplicationIntervals'
        indexer:
          $ref: '#/components/schemas/Indexer'
        customers:
          $ref: '#/components/schemas/Customer'
    Indexer:
      type: object
      x-regulatory-required:
        - rate
      properties:
        rate:
          type: string
          pattern: '^\d{1}\.\d{6}$'
          minLength: 8
          maxLength: 8
          description: |
            Percentual que corresponde a mediana da taxa efetiva cobrada do cliente pela contratação do crédito, no intervalo informado. p.ex. '0,8700%'. A apuração pode acontecer com até 4 casas decimais. O preenchimento deve respeitar as 4 casas decimais, mesmo que venham preenchidas com zeros (representação de porcentagem p.ex: 0.1500. Este valor representa 15%. O valor 1 representa 100%)
          example: '0.870000'
    PriceIntervals:
      type: string
      enum:
        - 1_FAIXA
        - 2_FAIXA
        - 3_FAIXA
        - 4_FAIXA
      description: |
        Segundo Normativa nº 32, BCB, de 2020: Distribuição de frequência relativa dos valores de tarifas cobradas dos clientes, de que trata o § 2º do art. 3º da Circular nº 4.015, de 2020, deve dar-se com base em quatro faixas de igual tamanho, com explicitação dos valores sobre a mediana em cada uma dessas faixas. Informando: 1ª faixa, 2ª faixa, 3ª faixa e 4ª faixa
      example: 1_FAIXA
    ApplicationIntervals:
      type: string
      description: |
        Faixas para cobrança da taxa efetiva aplicada pela contratação do crédito, no intervalo informado: 1ª faixa, 2ª faixa, 3ª faixa e 4ª faixa. Segundo Normativa nº32 de 2020: 'Distribuição de frequência relativa dos valores de tarifas e taxas de juros cobrados dos clientes, de que trata o § 2º do art. 3º da Circular nº 4.015, de 2020, deve dar-se com base em quatro faixas de igual tamanho, com explicitação dos valores sobre a mediana e o percentual de clientes em cada uma dessas faixas.
      enum:
        - 1_FAIXA
        - 2_FAIXA
        - 3_FAIXA
        - 4_FAIXA
      example: 4_FAIXA
    RequiredWarranty:
      type: string
      enum:
        - CESSAO_DIREITOS_CREDITORIOS
        - CAUCAO
        - PENHOR
        - ALIENACAO_FIDUCIARIA
        - HIPOTECA
        - OPERACOES_GARANTIDAS_PELO_GOVERNO
        - OUTRAS_GARANTIAS_NAO_FIDEJUSSORIAS
        - SEGUROS_ASSEMELHADOS
        - GARANTIA_FIDEJUSSORIA
        - BENS_ARRENDADOS
        - GARANTIAS_INTERNACIONAIS
        - OPERACOES_GARANTIDAS_OUTRAS_ENTIDADES
        - ACORDOS_COMPENSACAO
        - NAO_EXIGE_GARANTIA
      description: |
        Relação de garantias exigidas, segundo documento 3040 do Bacen:
        * `CESSAO_DIREITOS_CREDITORIOS`: o cedente transfere ao credor/cessionário a titularidade de direitos creditórios, até a liquidação da dívida. O credor/cessionário passa a recebê-los diretamente dos devedores e credita o produto da operação para o cedente na operação que originou a cessão, até a sua liquidação
        * `CAUCAO`: garantia instituída sobre créditos do garantidor
        * `PENHOR`: direito real que consiste na tradição de uma coisa móvel ou mobilizável, suscetível de alienação, realizada pelo devedor ou por terceiro ao credor, a fim de garantir o pagamento do débito
        * `ALIENACAO_FIDUCIARIA`: transferência ao credor, ou fiduciário, da propriedade do bem
        * `HIPOTECA`: direito real de garantia que afeta um bem imóvel para o cumprimento da obrigação
        * `OPERACOES_GARANTIDAS_PELO_GOVERNO`: nas instâncias federal, estadual ou municipal
        * `OUTRAS_GARANTIAS_NAO_FIDEJUSSORIAS`: as garantias reais não descritas como: cessão de direitos creditórios, caução, penhor, alienação fiduciária, hipoteca ou operação garantida pelo governo
        * `SEGUROS_ASSEMELHADOS`: os seguros (e assemelhados) contratados para garantir o pagamento da operação em circunstâncias adversas
        * `GARANTIA_FIDEJUSSORIA`: baseada na fidelidade do garantidor em cumprir as obrigações, caso o devedor não o faça
        * `BENS_ARRENDADOS`: bem objeto do arrendamento financeiro
        * `GARANTIAS_INTERNACIONAIS`: declarar se a garantia é mitigadora ou não, observados os critérios definidos pela Circular 3.644, de 4 de março de 2013
        * `OPERACOES_GARANTIDAS_OUTRAS_ENTIDADES`: declarar as garantias prestadas pelas entidades descritas no item 3. Informações de Garantias (i) do documento 3040 - Bacen
        * `ACORDOS_COMPENSACAO`: operações que sejam abrangidas por acordos para a compensação e liquidação de obrigações no âmbito do SFN, nos termos da Resolução 3.263, de 24 de fevereiro de 2005
        * `NAO_EXIGE_GARANTIA`
      example: CESSAO_DIREITOS_CREDITORIOS
    ResponsePersonalFinancings:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          description: Conjunto de informações referente ao produto Financiamentos.
          minItems: 1
          items:
            $ref: '#/components/schemas/ResponsePersonalFinancingsData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponsePersonalFinancingsData:
      type: object
      required:
        - type
        - fees
        - interestRates
        - requiredWarranties
        - termsConditions
      x-regulatory-required:
        - type
        - requiredWarranties
        - termsConditions
      properties:
        participant:
          $ref: '#/components/schemas/Participant'
        type:
          type: string
          enum:
            - FINANCIAMENTO_AQUISICAO_BENS_VEICULOS_AUTOMOTORES
            - FINANCIAMENTO_AQUISICAO_BENS_OUTROS_BENS
            - FINANCIAMENTO_MICROCREDITO
            - FINANCIAMENTO_RURAL_CUSTEIO
            - FINANCIAMENTO_RURAL_INVESTIMENTO
            - FINANCIAMENTO_RURAL_COMERCIALIZACAO
            - FINANCIAMENTO_RURAL_INDUSTRIALIZACAO
            - FINANCIAMENTO_IMOBILIARIO_SISTEMA_FINANCEIRO_HABITACAO_SFH
            - FINANCIAMENTO_IMOBILIARIO_SISTEMA_FINANCEIRO_HABITACAO_SFI
          description: 'Modalidades de financiamentos ofertados para pessoas naturais, conforme Circular 4015-Bacen. Segundo cartilha do Bacen: Financiamento é um contrato entre o cliente e uma instituição financeira, mas com, destinação específica como para a aquisição de veículo ou de bem imóvel, que funcionam como garantia para o crédito concedido'
          example: FINANCIAMENTO_AQUISICAO_BENS_VEICULOS_AUTOMOTORES
        fees:
          $ref: '#/components/schemas/Fee'
        interestRates:
          type: array
          items:
            $ref: '#/components/schemas/FinancingInterestRate'
          minItems: 1
          maxItems: 20
          description: Lista que traz o conjunto de informações necessárias para demonstrar a distribuição de frequências das taxas de juros remuneratórios da Modalidade de crédito
        requiredWarranties:
          type: array
          items:
            $ref: '#/components/schemas/RequiredWarranty'
          minItems: 1
          maxItems: 14
        termsConditions:
          type: string
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          maxLength: 2000
          description: Campo aberto para informar as condições contratuais relativas ao produto ou serviço informado. Pode ser informada a URL referente ao endereço onde constam as condições informadas.
          example: 'https://empresaa1.com/personal_financing'
    Participant:
      type: object
      description: Conjunto de informações relativas ao participante do Open Finance que oferta este produto.
      required:
        - brand
        - name
        - cnpjNumber
      x-regulatory-required:
        - brand
        - name
        - cnpjNumber
        - urlComplementaryList
      properties:
        brand:
          type: string
          maxLength: 80
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          description: Nome da Marca selecionada pelas Organizações
          example: Organização A
        name:
          type: string
          description: Nome da Instituição, pertencente à marca, responsável pela modalidade de Empréstimos. p.ex.'Empresa da Organização A'
          maxLength: 80
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          example: 'Empresa A1'
        cnpjNumber:
          type: string
          pattern: '^\d{14}$'
          minLength: 14
          maxLength: 14
          description: CNPJ
          example: "50685362000135"
        urlComplementaryList:
          type: string
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          maxLength: 1024
          description: |
            URL do link que conterá a lista complementar com os nomes e CNPJs agrupados sob o mesmo cnpjNumber. Os contidos nessa lista possuem as mesmas características para produtos e serviços. Endereço eletrônico de acesso ao canal. Será obrigatoriamente preenchido se houver lista complementar com os nomes e CNPJs a ser disponibilizada.
            Restrição: Será obrigatorimente preenchido se houver lista complementar com os nomes e CNPJs a ser disponibilizada
          example: 'https://empresadaorganizacaoa.com/complementarylist'
    FinancingService:
      type: object
      required:
        - name
        - code
        - chargingTriggerInfo
        - prices
        - minimum
        - maximum
      x-regulatory-required:
        - name
        - code
        - chargingTriggerInfo
      properties:
        name:
          type: string
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          description: 'Nomes das Tarifas cobradas sobre Serviços ofertados à Modalidade de Financiamento, para pessoa natural'
          maxLength: 250
          example: 'Avaliação, Reavaliação e Substituição de Bens Recebidos em Garantia'
        code:
          type: string
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          description: 'Sigla de identificação do serviço relacionado à Modalidade de Financiamento informada, para pessoa natural. Campo aberto'
          maxLength: 100
          example: AQBAM009
        chargingTriggerInfo:
          type: string
          maxLength: 2000
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          description: 'Fatores geradores de cobrança que incidem sobre as Modalidades de Financiamentos, para pessoa natural. Campo Livre'
          example: 'R$ 570.00 Por solicitação'
        prices:
          type: array
          items:
            $ref: '#/components/schemas/Price'
          minItems: 4
          maxItems: 4
        minimum:
          $ref: '#/components/schemas/MinimumPrice'
        maximum:
          $ref: '#/components/schemas/MaximumPrice'
    FinancingInterestRate:
      type: object
      required:
        - referentialRateIndexer
        - rate
        - applications
        - minimumRate
        - maximumRate
      x-regulatory-required:
        - referentialRateIndexer
        - minimumRate
        - maximumRate
      properties:
        referentialRateIndexer:
          type: string
          enum:
            - SEM_INDEXADOR_TAXA
            - PRE_FIXADO
            - POS_FIXADO_TR_TBF
            - POS_FIXADO_TJLP
            - POS_FIXADO_LIBOR
            - POS_FIXADO_TLP
            - OUTRAS_TAXAS_POS_FIXADAS
            - FLUTUANTES_CDI
            - FLUTUANTES_SELIC
            - OUTRAS_TAXAS_FLUTUANTES
            - INDICES_PRECOS_IGPM
            - INDICES_PRECOS_IPCA
            - INDICES_PRECOS_IPCC
            - OUTROS_INDICES_PRECO
            - CREDITO_RURAL_TCR_PRE
            - CREDITO_RURAL_TCR_POS
            - CREDITO_RURAL_TRFC_PRE
            - CREDITO_RURAL_TRFC_POS
            - OUTROS_INDEXADORES
          description: 'Tipos de taxas referenciais ou indexadores, conforme Anexo 5: Taxa referencial ou Indexador (Indx), do Documento 3040'
          example: PRE_FIXADO
        rate:
          type: string
          pattern: '^\d{1}\.\d{6}$'
          description: |
            Percentual que incide sobre a composição das taxas de juros remuneratórios. (representa uma porcentagem Ex: 0.15 (O valor ao lado representa 15%. O valor '1 'representa 100%) A apuração pode acontecer com até 4 casas decimais. O preenchimento deve respeitar as 4 casas decimais, mesmo que venham preenchidas com zeros (representação de porcentagem p.ex: 0.1500. Este valor representa 15%. O valor 1 representa 100%)
          example: '0.150000'
          minLength: 8
          maxLength: 8
        applications:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationRate'
          minItems: 4
          maxItems: 4
          example:
            - interval: 1_FAIXA
              indexer:
                rate: '0.098700'
              customers:
                rate: '0.150000'
            - interval: 2_FAIXA
              indexer:
                rate: '0.160000'
              customers:
                rate: '0.350000'
            - interval: 3_FAIXA
              indexer:
                rate: '0.360000'
              customers:
                rate: '0.200000'
            - interval: 4_FAIXA
              indexer:
                rate: '0.589000'
              customers:
                rate: '0.300000'
        minimumRate:
          type: string
          pattern: '^\d{1}\.\d{6}$'
          description: 'Percentual mínimo cobrado (taxa efetiva) no mês de referência, para o Financiamento contratado  A apuração pode acontecer com até 4 casas decimais. O preenchimento deve respeitar as 4 casas decimais, mesmo que venham preenchidas com zeros (representação de porcentagem p.ex: 0.1500. Este valor representa 15%. O valor 1 representa 100%)'
          example: '0.045600'
          minLength: 8
          maxLength: 8
        maximumRate:
          type: string
          pattern: '^\d{1}\.\d{6}$'
          description: 'Percentual máximo cobrado (taxa efetiva) no mês de referência, para o Financiamento contratado  A apuração pode acontecer com até 4 casas decimais. O preenchimento deve respeitar as 4 casas decimais, mesmo que venham preenchidas com zeros (representação de porcentagem p.ex: 0.1500. Este valor representa 15%. O valor 1 representa 100%)'
          example: '0.686500'
          minLength: 8
          maxLength: 8
    ResponseBusinessFinancings:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          description: Conjunto de informações referente ao produto Financiamentos.
          minItems: 1
          items:
            $ref: '#/components/schemas/BusinessFinancingData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    BusinessFinancingData:
      type: object
      required:
        - type
        - fees
        - interestRates
        - requiredWarranties
        - termsConditions
      x-regulatory-required:
        - type
        - requiredWarranties
        - termsConditions
      properties:
        participant:
          $ref: '#/components/schemas/Participant'
        type:
          type: string
          enum:
            - FINANCIAMENTO_AQUISICAO_BENS_VEICULOS_AUTOMOTORES
            - FINANCIAMENTO_AQUISICAO_BENS_OUTROS_BENS
            - FINANCIAMENTO_MICROCREDITO
            - FINANCIAMENTO_RURAL_CUSTEIO
            - FINANCIAMENTO_RURAL_INVESTIMENTO
            - FINANCIAMENTO_RURAL_COMERCIALIZACAO
            - FINANCIAMENTO_RURAL_INDUSTRIALIZACAO
            - FINANCIAMENTO_IMOBILIARIO_SISTEMA_FINANCEIRO_HABITACAO_SFH
            - FINANCIAMENTO_IMOBILIARIO_SISTEMA_FINANCEIRO_HABITACAO_SFI
          description: 'Modalidades de financiamentos ofertados para pessoas jurídicas, conforme Circular 4015-Bacen. Segundo cartilha do Bacen: Financiamento é um contrato entre o cliente e uma instituição financeira, mas com, destinação específica como para a aquisição de veículo ou de bem imóvel, que funcionam como garantia para o crédito concedido'
          example: FINANCIAMENTO_AQUISICAO_BENS_VEICULOS_AUTOMOTORES
        fees:
          $ref: '#/components/schemas/Fee'
        interestRates:
          type: array
          items:
            $ref: '#/components/schemas/FinancingInterestRate'
          minItems: 1
          maxItems: 20
          description: Lista que traz o conjunto de informações necessárias para demonstrar a distribuição de frequências das taxas de juros remuneratórios da Modalidade de crédito
        requiredWarranties:
          type: array
          items:
            $ref: '#/components/schemas/RequiredWarranty'
          minItems: 1
          maxItems: 14
        termsConditions:
          type: string
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          maxLength: 2000
          description: Campo aberto para informar as condições contratuais relativas à Modalidade de Financiamentos para pessoa jurídica informada. Pode ser informada a URL referente ao endereço onde constam as condições informadas. Endereço eletrônico de acesso ao canal.
          example: 'https://empresaa1.com/personal_financing'
    Fee:
      type: object
      description: Objeto que reúne informações de tarifas de serviços.
      properties:
        services:
          type: array
          description: |
            Lista das Tarifas cobradas sobre Serviço.

            Para melhor entendimento da regra de envio, verificar área do desenvolvedor na página de Dados Abertos a seção: tabela verdade com instruções de envio de dados por Instituições.
          items:
            $ref: '#/components/schemas/FinancingService'
          minItems: 1
          maxItems: 20
    Price:
      type: object
      required:
        - interval
        - value
        - currency
        - customers
      x-regulatory-required:
        - interval
        - value
        - currency
        - customers
      properties:
        interval:
          $ref: '#/components/schemas/PriceIntervals'
        value:
          type: string
          pattern: '^(\d{1,9}\.\d{2}){1}$'
          minLength: 4
          maxLength: 12
          x-cds-type: AmountString
          description: |
            Valor da mediana de cada faixa relativa ao serviço ofertado, informado no período, conforme Res nº 32 BCB, 2020. p.ex. '45.00' (representa um valor monetário. p.ex: 1547368.92. Este valor, considerando que a moeda seja BRL, significa R$ 1.547.368,92. O único separador presente deve ser o '.' (ponto) para indicar a casa decimal. Não deve haver separador de milhar).
          
            Observação: Para efeito de comparação de taxas dos produtos, as instituições participantes, quando não cobram tarifas, devem enviar o valor 0.00 sinalizando que para aquela taxa não há cobrança pelo serviço.
          example: '2000.00'
        currency:
          $ref:  '#/components/schemas/Currency'
        customers:
          $ref: '#/components/schemas/Customer'
    MinimumPrice:
      type: object
      required:
        - value
        - currency
      x-regulatory-required:
        - value
        - currency
      properties:
        value:
          type: string
          pattern: '^(\d{1,9}\.\d{2}){1}$'
          minLength: 4
          maxLength: 12
          x-cds-type: AmountString
          description: |
            Valor mínimo apurado para a tarifa de serviços sobre a base de clientes no mês de referência.

            Observação: Para efeito de comparação de taxas dos produtos, as instituições participantes, quando não cobram tarifas, devem enviar o valor 0.00 sinalizando que para aquela taxa não há cobrança pelo serviço.
          example: '1350.00'
        currency:
          $ref:  "#/components/schemas/Currency"
    MaximumPrice:
      type: object
      required:
        - value
        - currency
      x-regulatory-required:
        - value
        - currency
      properties:
        value:
          type: string
          pattern: '^(\d{1,9}\.\d{2}){1}$'
          minLength: 4
          maxLength: 12
          x-cds-type: AmountString
          description: |
            Valor máximo apurado para a tarifa de serviços sobre a base de clientes no mês de referência.

            Observação: Para efeito de comparação de taxas dos produtos, as instituições participantes, quando não cobram tarifas, devem enviar o valor 0.00 sinalizando que para aquela taxa não há cobrança pelo serviço.
          example: '8800.00'
        currency:
          $ref:  "#/components/schemas/Currency"
    Customer:
      type: object
      description: Informações relevantes para o cliente.
      required:
        - rate
      x-regulatory-required:
        - rate
      properties:
        rate:
          type: string
          description: |
            Percentual de clientes em cada faixa.
          pattern: '^\d{1}\.\d{6}$'
          example: '0.150000'
          minLength: 8
          maxLength: 8
    Currency:
      type: string
      pattern: '^(\w{3}){1}$'
      minLength: 3
      maxLength: 3
      x-cds-type: CurrencyString
      description: 'Moeda referente ao valor mínimo da Tarifa, segundo modelo ISO-4217'
      example: BRL
    Links:
      type: object
      description: Referências para outros recursos da API requisitada.
      properties:
        self:
          type: string
          minLength: 5
          maxLength: 2000
          description: URL da página atualmente requisitada
          pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
          example: 'https://api.banco.com.br/open-banking/opendata-financings/v1/resource'
        first:
          type: string
          minLength: 5
          maxLength: 2000
          description: URL da primeira página de registros
          pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
          example: 'https://api.banco.com.br/open-banking/opendata-financings/v1/resource'
        prev:
          type: string
          minLength: 5
          maxLength: 2000
          description: URL da página anterior de registros
          pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
          example: 'https://api.banco.com.br/open-banking/opendata-financings/v1/resource'
        next:
          type: string
          minLength: 5
          maxLength: 2000
          description: URL da próxima página de registros
          pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
          example: 'https://api.banco.com.br/open-banking/opendata-financings/v1/resource'
        last:
          type: string
          minLength: 5
          maxLength: 2000
          description: URL da última página de registros
          pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
          example: 'https://api.banco.com.br/open-banking/opendata-financings/v1/resource'
    Meta:
      type: object
      description: Meta informações referente à API requisitada.
      properties:
        totalRecords:
          type: integer
          description: Total de registros encontrados
          example: 1
        totalPages:
          type: integer
          description: Total de páginas para os registros encontrados
          example: 1
      required:
        - totalRecords
        - totalPages
    ResponseErrorMetaSingle:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 1
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                description: Código de erro específico do endpoint
                type: string
                pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                maxLength: 255
              title:
                description: Título legível por humanos deste erro específico
                type: string
                pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                maxLength: 2048
        meta:
          type: object
          description: Meta informações referente à API requisitada.
          required:
            - requestDateTime
          properties:
            requestDateTime:
              description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.'
              type: string
              maxLength: 20
              format: date-time
              example: '2021-05-21T08:30:00Z'
    ResponseError:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 1
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                description: Código de erro específico do endpoint
                type: string
                pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                maxLength: 255
              title:
                description: Título legível por humanos deste erro específico
                type: string
                pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                maxLength: 2048
        meta:
          type: object
          description: Meta informações referente à API requisitada.
          required:
            - requestDateTime
          properties:
            requestDateTime:
              description: Data e hora da consulta, conforme especificação RFC-3339, formato UTC.
              type: string
              format: date-time
              minLength: 20
              maxLength: 20
              pattern: '^[2-9]\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$'
              example: '2023-10-09T14:10:00Z'
  securitySchemes:
    APIKey1:
      name: API Key
      type: apiKey
      in: query
    APIKey2:
      name: API Key
      type: apiKey
      in: query
  parameters:
    page:
      name: page
      in: query
      description: Número da página que está sendo requisitada (o valor da primeira página é 1).
      schema:
        type: integer
        format: int32
        default: 1
        minimum: 1
        maximum: 2147483647
    pageSize:
      name: page-size
      in: query
      description: Quantidade total de registros por páginas.
      schema:
        type: integer
        format: int32
        default: 25
        minimum: 1
        maximum: 1000
  responses:
    BadRequest:
      description: A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    NotFound:
      description: O recurso solicitado não existe ou não foi implementado.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    MethodNotAllowed:
      description: O consumidor tentou acessar o recurso com um método não suportado.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    TooManyRequests:
      description: A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    InternalServerError:
      description: Ocorreu um erro no gateway da API ou no microsserviço.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    GatewayTimeout:
      description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    SiteIsOverloaded:
      description: O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorMetaSingle'
    Default:
      description: '\-'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
        