﻿openapi: 3.0.0
info:
  title: API OpenData Invoice Financings do Open Finance Brasil
  description: A API descrita neste documento é referente as API Invoice Financings da fase OpenData do Open Finance Brasil.
  version: 1.0.0-beta.1
  contact:
    url: 'https://servicedesk.openbankingbrasil.org.br/Login.jsp?navLanguage=pt-BR'
servers:
  - url: 'http://api.banco.com.br/open-banking/opendata-invoicefinancings/v1'
tags:
  - name: Invoice Financings
paths:
  /personal-invoice-financings:
    get:
      tags:
        - Invoice Financings
      summary: Obtém a lista de Adiantamento de Recebíveis de Pessoa Natural.
      description: Obtém a lista de Adiantamento de Recebíveis de Pessoa Natural.
      operationId: getPersonalInvoiceFinancings
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de adiantamento de recebíveis de pessoa natural obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePersonalInvoiceFinancings'
        '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-invoice-financings:
    get:
      tags:
        - Invoice Financings
      summary: Obtém a lista de Adiantamento de Recebíveis de Pessoa Jurídica.
      description: Obtém a lista de Adiantamento de Recebíveis de Pessoa Jurídica.
      operationId: getBusinessInvoiceFinancings
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de adiantamento de recebíveis de pessoa jurídica obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBusinessInvoiceFinancings'
        '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
      properties:
        interval:
          $ref: '#/components/schemas/ApplicationIntervals'
        indexer:
          $ref: '#/components/schemas/Indexer'
        customers:
          $ref: '#/components/schemas/Customer'
      required:
        - interval
        - indexer
        - customers
    Indexer:
      type: object
      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
      enum:
        - 1_FAIXA
        - 2_FAIXA
        - 3_FAIXA
        - 4_FAIXA
      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.
    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
    ResponsePersonalInvoiceFinancings:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PersonalInvoiceFinancingsData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    PersonalInvoiceFinancingsData:
      type: object
      required:
        - type
        - fees
        - interestRates
        - requiredWarranties
        - termsConditions
      properties:
        participant:
          $ref: '#/components/schemas/Participant'
        type:
          type: string
          enum:
            - DESCONTO_DUPLICATAS
            - DESCONTO_CHEQUES
            - ANTECIPACAO_FATURA_CARTAO_CREDITO
            - OUTROS_DIREITOS_CREDITORIOS_DESCONTADOS
            - OUTROS_TITULOS_DESCONTADOS
          description: 'Modalidades de direitos creditórios descontados ofertados para pessoas naturais, conforme Circular 4015-Bacen. Direito creditório descontado é a antecipação de créditos relativos por ex. ao: desconto de duplicatas, desconto de cheques,antecipação de fatura de cartão de crédito'
          example: DESCONTO_DUPLICATAS
        fees:
          $ref: '#/components/schemas/PersonalInvoiceFinancingsFees'
        interestRates:
          type: array
          items:
            $ref: '#/components/schemas/PersonalInvoiceFinancingsInterestRates'
          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
          description: Lista das  garantias exigidas
        termsConditions:
          type: string
          pattern: '[\w\W\s]*'
          maxLength: 2000
          description: Campo aberto para informar as condições contratuais relativas à Modalidade de Financiamentos para pessoa natural 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_invoice_financings'
    Participant:
      type: object
      required:
        - brand
        - name
        - cnpjNumber
      properties:
        brand:
          type: string
          pattern: '[\w\W\s]*'
          maxLength: 80
          description: Nome da marca.
          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: '[\w\W\s]*'
          example: 'Empresa A1'
        cnpjNumber:
          type: string
          pattern: '^\d{14}$'
          description: CNPJ
          maxLength: 14
          example: "50685362000135"
        urlComplementaryList:
          type: string
          pattern: '[\w\W\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'
    PersonalInvoiceFinancingsFees:
      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ços
          items:
            $ref:  "#/components/schemas/InvoiceFinancingsService"
          minItems: 1
          maxItems: 20
    InvoiceFinancingsService:
      type: object
      required:
        - name
        - code
        - chargingTriggerInfo
        - prices
        - minimum
        - maximum
      properties:
        name:
          type: string
          pattern: '[\w\W\s]*'
          maxLength: 250
          description: 'Nomes das Tarifas cobradas sobre Serviços ofertados à Modalidade de direitos creditórios descontados, para pessoa natural. (Campo Livre)'
          example: 'Custódia de Duplicatas'
        code:
          type: string
          pattern: '[\w\W\s]*'
          maxLength: 100
          description: 'Sigla de identificação do serviço relacionado à Modalidade de direitos creditórios descontados, para pessoa natural. Campo aberto'
          example: 'NA'
        chargingTriggerInfo:
          type: string
          pattern: '[\w\W\s]*'
          maxLength: 2000
          description: 'Fatores geradores de cobrança que incidem sobre as Modalidades de direitos creditórios descontados, para pessoa natural. Campo Livre'
          example: '5% do valor do contrato'
        prices:
          type: array
          items:
            $ref: '#/components/schemas/Price'
          minItems: 4
          maxItems: 4
          description: Lista distribuição preços tarifas de serviços
        minimum:
          $ref: '#/components/schemas/MinimumPrice'
        maximum:
          $ref: '#/components/schemas/MaximumPrice'
    PersonalInvoiceFinancingsInterestRates:
      type: object
      required:
        - referentialRateIndexer
        - rate
        - applications
        - 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
          description: Lista  das faixas de cobrança da taxa efetiva de remuneração
          items:
            $ref:  "#/components/schemas/ApplicationRate"
          minItems: 4
          maxItems: 4
        minimumRate:
          type: string
          description: |
            Percentual mínimo cobrado (taxa efetiva) no mês de referência, para os Direitos Creditórios Descontados 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.15. Este valor representa 15%. O valor 1 representa 100%)
          pattern: '^\d{1}\.\d{6}$'
          minLength: 8
          maxLength: 8
          example: '0.088900'
        maximumRate:
          type: string
          description: |
            Percentual máximo cobrado (taxa efetiva) no mês de referência, para os Direitos Creditórios Descontados 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.15. Este valor representa 15%. O valor 1 representa 100%)
          pattern: '^\d{1}\.\d{6}$'
          minLength: 8
          maxLength: 8
          example: '0.686500'
    ResponseBusinessInvoiceFinancings:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BusinessInvoiceFinancingsData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    BusinessInvoiceFinancingsData:
      type: object
      required:
        - type
        - fees
        - interestRates
        - requiredWarranties
        - termsConditions
      properties:
        participant:
          $ref: '#/components/schemas/Participant'
        type:
          type: string
          enum:
            - DESCONTO_DUPLICATAS
            - DESCONTO_CHEQUES
            - ANTECIPACAO_FATURA_CARTAO_CREDITO
            - OUTROS_DIREITOS_CREDITORIOS_DESCONTADOS
            - OUTROS_TITULOS_DESCONTADOS
          description: 'Modalidades de direitos creditórios descontados ofertados para pessoas Jurídicas, conforme Circular 4015-Bacen. Direito creditório descontado é a antecipação de créditos relativos por ex. ao: desconto de duplicatas, desconto de cheques,antecipação de fatura de cartão de crédito'
        fees:
          $ref: '#/components/schemas/BusinessInvoiceFinancingsFees'
        interestRates:
          type: array
          items:
            $ref: '#/components/schemas/BusinessInvoiceFinancingsInterestRates'
          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'
          description: Lista das  garantias exigidas
          minItems: 1
          maxItems: 14
        termsConditions:
          type: string
          pattern: '[\w\W\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_invoice_financings'
    BusinessInvoiceFinancingsFees:
      type: object
      description: Objeto que reúne informações de tarifas de serviços
      properties:
        services:
          type: array
          items:
            $ref:  "#/components/schemas/InvoiceFinancingsService"
          minItems: 1
          maxItems: 20
          description: Lista das Tarifas cobradas sobre Serviços
    BusinessInvoiceFinancingsInterestRates:
      type: object
      required:
        - referentialRateIndexer
        - rate
        - applications
        - 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
          description: Lista  das faixas de cobrança da taxa efetiva de remuneração
          items:
            $ref:  "#/components/schemas/ApplicationRate"
          minItems: 4
          maxItems: 4
        minimumRate:
          type: string
          description: |
            Percentual mínimo cobrado (taxa efetiva) no mês de referência, para os Direitos Creditórios Descontados 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.15. Este valor representa 15%. O valor 1 representa 100%)
          pattern: '^\d{1}\.\d{6}$'
          minLength: 8
          maxLength: 8
          example: '0.150000'
        maximumRate:
          type: string
          description: |
            Percentual máximo cobrado (taxa efetiva) no mês de referência, para os Direitos Creditórios Descontados 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.15. Este valor representa 15%. O valor 1 representa 100%)
          pattern: '^\d{1}\.\d{6}$'
          minLength: 8
          maxLength: 8
          example: '0.686500'
    Price:
      type: object
      required:
        - interval
        - value
        - currency
        - customers
      properties:
        interval:
          $ref: '#/components/schemas/PriceIntervals'
        value:
          type: string
          pattern: '^(\d{1,9}\.\d{2}){1}$'
          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
      properties:
        value:
          type: string
          pattern: '^(\d{1,9}\.\d{2}){1}$'
          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
      properties:
        value:
          type: string
          pattern: '^(\d{1,9}\.\d{2}){1}$'
          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
      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}$'
      maxLength: 3
      x-cds-type: CurrencyString
      description: 'Moeda referente ao valor mínimo da Tarifa, segundo modelo ISO-4217'
      example: BRL
    Links:
      type: object
      properties:
        self:
          type: string
          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-invoicefinancings/v1/resource'
        first:
          type: string
          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-invoicefinancings/v1/resource'
        prev:
          type: string
          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@:%_\+.~#?&\/\/=]*)$'
        next:
          type: string
          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@:%_\+.~#?&\/\/=]*)$'
        last:
          type: string
          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-invoicefinancings/v1/resource'
    Meta:
      type: object
      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: '[\w\W\s]*'
                maxLength: 255
              title:
                description: Título legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\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: '[\w\W\s]*'
                maxLength: 255
              title:
                description: Título legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 2048
        meta:
          type: object
          description: Meta informações referente à API requisitada.
          required:
            - totalRecords
            - totalPages
          properties:
            totalRecords:
              type: integer
              format: int32
              description: Número total de registros no resultado
              example: 1
            totalPages:
              type: integer
              format: int32
              description: Número total de páginas no resultado
              example: 1
  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'
        