﻿openapi: 3.0.0
info:
  title: API Customers - Open Banking Brasil
  description: |
    API de dados cadastrais de clientes do Open Banking Brasil – Fase 2.
    API que retorna os dados cadastrais de clientes e de seus representantes, incluindo dados de identificação, de qualificação financeira, informações sobre representantes cadastrados e sobre o relacionamento financeiro do cliente com a instituição transmissora dos dados.\
    Possui segregação entre pessoa natural e pessoa jurídica.
    Requer consentimento do cliente para todos os `endpoints`.

    # Permissions necessárias para a API Customers

    Para cada um dos paths desta API, além dos escopos (`scopes`) indicados existem `permissions` que deverão ser observadas:

    ### `/personal/identifications`
      - permissions:
        - GET: **CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ**
    ### `/personal/qualifications`
      - permissions: **CUSTOMERS_PERSONAL_ADITTIONALINFO_READ**
    ### `/personal/financial-relations`
      - permissions:
        - GET: **CUSTOMERS_PERSONAL_ADITTIONALINFO_READ**
    ### `/business/identifications`
      - permissions:
        - GET: **CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ**
    ### `/business/qualifications`
      - permissions:
        - GET: **CUSTOMERS_BUSINESS_ADITTIONALINFO_READ**
    ### `/business/financial-relations`
      - permissions:
        - GET: **CUSTOMERS_BUSINESS_ADITTIONALINFO_READ**
  version: 1.0.0
  license:
    name: Apache 2.0
    url: 'https://www.apache.org/licenses/LICENSE-2.0'
  contact:
    name: Governança do Open Banking Brasil – Interfaces
    email: gt-interfaces@openbankingbr.org
    url: 'https://openbanking-brasil.github.io/areadesenvolvedor/'
servers:
  - url: 'https://api.banco.com.br/open-banking/customers/v1'
    description: Servidor de Produção
  - url: 'https://apih.banco.com.br/open-banking/customers/v1'
    description: Servidor de Homologação
tags:
  - name: Customers
    description: Operações para listagem das informações Cadastrais do Cliente
paths:
  /personal/identifications:
    get:
      tags:
        - Customers
      summary: Obtém os registros de identificação da pessoa natural.
      description: Método para obter os registros de identificação da pessoa natural mantidos na instituição transmissora.
      operationId: getCustomersPersonalIdentifications
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponsePersonalCustomersIdentification'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/OKResponsePersonalCustomersIdentification'
      security:
        - OpenId:
            - openId
            - customers
  /personal/qualifications:
    get:
      tags:
        - Customers
      summary: Obtém os registros de qualificação da pessoa natural.
      description: Método para obter os registros de qualificação da pessoa natural mantidos na instituição transmissora.
      operationId: getCustomersPersonalQualifications
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponsePersonalCustomersQualification'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/OKResponsePersonalCustomersQualification'
      security:
        - OpenId:
            - openId
            - customers
  /personal/financial-relations:
    get:
      tags:
        - Customers
      summary: Obtém os registros de relacionamentos com a instituição financeira e de representantes da pessoa natural.
      description: Método para obter registros de relacionamentos com a instituição financeira e de representantes da pessoa natural mantidos na instituição transmissora.
      operationId: getCustomersPersonalRelationships
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponsePersonalCustomersFinancialRelation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/OKResponsePersonalCustomersFinancialRelation'
      security:
        - OpenId:
            - openId
            - customers
  /business/identifications:
    get:
      tags:
        - Customers
      summary: Obtém os registros de identificação da pessoa jurídica.
      description: Método para obter os registros de identificação da pessoa jurídica mantidos na instituição transmissora
      operationId: getCustomersBusinessIdentifications
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponseBusinessCustomersIdentification'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/OKResponseBusinessCustomersIdentification'
      security:
        - OpenId:
            - openId
            - customers
  /business/qualifications:
    get:
      tags:
        - Customers
      summary: Obtém os registros de qualificação da pessoa jurídica.
      description: Método para obter os registros de qualificação da pessoa jurídica mantidos na instituição transmissora.
      operationId: getCustomersBusinessQualifications
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponseBusinessCustomersQualification'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/OKResponseBusinessCustomersQualification'
      security:
        - OpenId:
            - openId
            - customers
  /business/financial-relations:
    get:
      tags:
        - Customers
      summary: Obtém os registros de relacionamentos com a instituição financeira e de representantes da pessoa jurídica.
      description: Método para obter registros de relacionamentos com a instituição financeira e de representantes da pessoa jurídica mantidos na instituição transmissora.
      operationId: getCustomersBusinessRelationships
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponseBusinessCustomersFinancialRelation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/OKResponseBusinessCustomersFinancialRelation'
      security:
        - OpenId:
            - openId
            - customers
components:
  schemas:
    BusinessFinancialRelationData:
      type: object
      description: 'Objeto que reúne as informações relativas ao relacionamento do cliente junto à Instituição. Considera-se relacionamento as informações que permitam conhecer desde quando a pessoa consultada é cliente da instituição, bem como um indicador dos produtos e serviços que ela consome atualmente e seus representantes'
      required:
        - updateDateTime
        - startDate
        - procurators
        - brandID
        - brandName
        - companiesCnpj
      properties:
        updateDateTime:
          description: 'Data e hora da atualização do bloco de Relacionamento, conforme especificação RFC-3339, formato UTC.'
          type: string
          maxLength: 20
          format: date-time
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
          example: '2020-07-21T08:30:00Z'
        startDate:
          description: Data de início de relacionamento com a Instituição Financeira. Deve trazer o menor valor entre a informação reportada ao BACEN pelo DOC 3040 e CCS.
          type: string
          maxLength: 20
          format: date-time
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
          example: '2020-07-21T08:30:00Z'
        companiesCnpj:
          type: array
          pattern: '\d{14}|^NA$'
          items:
            type: string
            example: '50685362006555'
          description: |
            Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. 
            Deve-se ter apenas os números do CNPJ, sem máscara
          example:
            - '50685362000135'
            - '50685362006555'
        brandID:
          type: string
          description: 'Identifica a Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes.'
          maxLength: 100
          pattern: \w*\W*
          example: '29698749425984912674'
        brandName:
          type: string
          pattern: \w*\W*
          description: |
            Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a 'marca' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes
          maxLength: 80
          example: Organização A
        productsServicesType:
          $ref: '#/components/schemas/EnumProductServiceType'
        procurators:
          type: array
          items:
            $ref: '#/components/schemas/BusinessProcurator'
          minItems: 1
          description: Lista dos representantes. De preenchimento obrigatório se houver representante.
      additionalProperties: false
    BusinessIdentificationData:
      type: object
      description: Conjunto de informações relativas a Identificação ou seja a ação e o efeito de identificar de forma única a pessoa jurídica através de seus dados cadastrais
      required:
        - updateDateTime
        - businessId
        - brandID
        - brandName
        - cnpjNumber
        - companyCnpjNumber
        - incorporationDate
        - parties
        - contacts
      properties:
        updateDateTime:
          description: 'Data e hora da atualização do bloco, conforme especificação RFC-3339'
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        businessId:
          type: string
          pattern: \w*\W*
          description: Um identificador único e imutável usado para identificar o recurso cliente pessoa jurídica. Este identificador não tem significado para o cliente que deu o consentimento
          maxLength: 100
          example: 578-psd-71md6971kjh-2d414
        brandID:
          type: string
          description: 'Identifica a Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes.'
          maxLength: 100
          pattern: \w*\W*
          example: '29698749425984912674'
        brandName:
          type: string
          pattern: \w*\W*
          description: |
            Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a 'marca' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes
          maxLength: 80
          example: Organização A
        cnpjNumber:
          type: string
          description: 'Número completo do CNPJ da Empresa consultada  - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara'
          maxLength: 14
          pattern: '\d{14}|^NA$'
          example: '50685362006773'
        companyCnpjNumber:
          type: array
          pattern: '\d{14}|^NA$'
          items:
            type: string
          description: |
            Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. 
            Deve-se ter apenas os números do CNPJ, sem máscara
          maxLength: 14
          example:
            - '50685362000135'
            - '50685362006555'
        otherDocuments:
          type: array
          items:
            $ref: '#/components/schemas/BusinessOtherDocument'
          minItems: 1
          description: Relação dos demais documentos
        companyName:
          type: string
          maxLength: 70
          pattern: \w*\W*
          description: Razão social da empresa consultada é o termo registrado sob o qual uma pessoa jurídica (PJ) se individualiza e exerce suas atividades. Também pode ser chamada por denominação social ou firma empresarial
          example: Luiza e Benjamin Assessoria Jurídica Ltda
        tradeName:
          type: string
          maxLength: 70
          pattern: \w*\W*
          description: 'Nome fantasia da pessoa jurídica, se houver. (É o nome popular da empresa, utilizado para divulgação da empresa e melhor fixação com o público). De preenchimento obrigatório se houver'
          example: Mundo da Eletronica
        incorporationDate:
          description: 'Data de constituição da empresa, conforme especificação RFC-3339.'
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        parties:
          type: array
          items:
            $ref: '#/components/schemas/PartiesParticipation'
          minItems: 1
          description: |
            Lista relativa às informações das partes envolvidas, como: sócio e /ou administrador
        contacts:
          $ref: '#/components/schemas/CustomerContacts'
    BusinessProcurator:
      type: object
      required:
        - type
        - cnpjCpfNumber
        - civilName
        - socialName
      properties:
        type:
          $ref: '#/components/schemas/EnumProcuratorsType'
        cnpjCpfNumber:
          type: string
          pattern: '^\d{11}$|^\d{14}$|^NA$'
          description: Identificação do Representante Legal ou Procurador. Número do cadastro nas Receita Federal  (Preencher com CPF ou CNPJ sem formatação)
          example: '73677831148'
          maxLength: 14
        civilName:
          type: string
          pattern: \w*\W*
          description: Nome civil completo ou Razão Social
          maxLength: 70
          example: Elza Milena Stefany Teixeira
        socialName:
          type: string
          pattern: \w*\W*
          description: 'Nome social da pessoa natural, se houver. (aquele pelo qual travestis e transexuais se reconhecem, bem como são identificados por sua comunidade e em seu meio social, conforme Decreto Nº 51.180, de 14 de janeiro de 2010)'
          maxLength: 70
          example: NA
      additionalProperties: false
    BusinessQualificationData:
      type: object
      description: 'Objeto que reúne as informações relativas ao processo de qualificação. Considera-se qualificação as informações que permitam as instituições apreciar, avaliar, caracterizar e classificar o cliente com a finalidade de conhecer o seu perfil de risco e sua capacidade econômico-financeira'
      required:
        - updateDateTime
        - businessId
        - brandID
        - brandName
        - companiesCnpj
        - economicActivities
        - informedRevenue
        - informedPatrimony
      properties:
        updateDateTime:
          description: 'Data e hora da atualização do bloco, conforme especificação RFC-3339'
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        businessId:
          type: string
          pattern: \w*\W*
          description: Um identificador único e imutável usado para identificar o recurso cliente pessoa jurídica. Este identificador não tem significado para o cliente que deu o consentimento
          maxLength: 100
          example: 578-psd-71md6971kjh-2d414
        brandID:
          type: string
          description: 'Identifica a Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes.'
          maxLength: 100
          pattern: \w*\W*
          example: '29698749425984912674'
        brandName:
          type: string
          pattern: \w*\W*
          description: |
            Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a 'marca' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes
          maxLength: 80
          example: Organização A
        companiesCnpj:
          type: array
          pattern: '\d{14}|^NA$'
          items:
            type: string
          description: |
            Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. 
            Deve-se ter apenas os números do CNPJ, sem máscara
          maxLength: 14
        economicActivities:
          type: array
          items:
            $ref: '#/components/schemas/EconomicActivity'
          minItems: 1
          description: 'Lista dos demais códigos relativos às demais atividades econômicas da empresa, segundo padrão CNAE (Classificação Nacional de Atividades Econômicas). De preenchimento obrigatório, se houver'
        informedRevenue:
          type: object
          properties:
            frequency:
              $ref: '#/components/schemas/EnumInformedRevenueFrequency'
            amount:
              description: |
                Valor do patrimônio informado. Expresso em valor monetário com 4 casas decimais.
                "Patrimônio é o conjunto de bens vinculado a uma pessoa ou a uma entidade".
              type: number
              format: double
              pattern: '(-?\d{15}(.\d{4}?))$'
              maxLength: 19
              minLength: 0
              example: 100000.04
            currency:
              type: string
              pattern: '^(\w{3}){1}$'
              maxLength: 3
              description: 'Moeda referente ao valor do patrimônio, segundo modelo ISO-4217.'
              example: BRL
            year:
              type: number
              maxLength: 4
              description: 'Ano de referência do Patrimônio, conforme especificação RFC-3339.'
              example: 2010
              maximum: 9999
          additionalProperties: false
        informedPatrimony:
          type: object
          properties:
            amount:
              description: |
                Valor do patrimônio informado. Expresso em valor monetário com 4 casas decimais.
                "Patrimônio é o conjunto de bens vinculado a uma pessoa ou a uma entidade".
              type: number
              format: double
              pattern: '(-?\d{15}(.\d{4}?))$'
              maxLength: 19
              minLength: 0
              example: 100000.04
            currency:
              type: string
              pattern: '^(\w{3}){1}$'
              maxLength: 3
              description: 'Moeda referente ao valor do patrimônio, segundo modelo ISO-4217.'
              example: BRL
            year:
              type: number
              maxLength: 4
              description: 'Ano de referência do Patrimônio, conforme especificação RFC-3339.'
              example: 2010
              maximum: 9999
          additionalProperties: false
    BusinessOtherDocument:
      type: object
      properties:
        type:
          type: string
          maxLength: 20
          pattern: \w*\W*
          description: 'Número do Tipo de documento informado. De preenchimento obrigatório, para a Pessoa jurídica com domicílio ou sede no exterior, desobrigada de inscrição no CNPJ'
          example: EIN
        number:
          type: string
          maxLength: 20
          pattern: \w*\W*
          description: 'Número do outro documento. De preenchimento obrigatório, para a Pessoa jurídica com domicílio ou sede no exterior, desobrigada de inscrição no CNPJ'
          example: '128328453'
        country:
          type: string
          description: Pais de emissão do tipo de documento informado. Código do pais de acordo com o código “alpha3” do ISO-3166
          maxLength: 3
          example: CAN
        expirationDate:
          description: 'Data vigência do tipo de  documento informado, conforme especificação RFC-3339'
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
      additionalProperties: false
    CustomerContacts:
      type: object
      description: Conjunto de informações referentes às formas para contatar o cliente.
      required:
        - postalAddresses
        - phones
        - emails
      properties:
        postalAddresses:
          type: array
          items:
            $ref: '#/components/schemas/CustomerPostalAddress'
          minItems: 1
          description: Lista de endereços da pessoa jurídica
        phones:
          type: array
          items:
            $ref: '#/components/schemas/CustomerPhone'
          minItems: 1
          description: Lista com telefones de contato da pessoa jurídica
        emails:
          type: array
          items:
            $ref: '#/components/schemas/CustomerEmail'
          minItems: 1
          description: Lista e-mails de contato
      additionalProperties: false
    CustomerEmail:
      type: object
      required:
        - isMain
        - email
      properties:
        isMain:
          type: boolean
          description: Indica se o email informado é o principal
          example: true
        email:
          type: string
          description: Endereço de email
          maxLength: 320
          pattern: \w*\W*
          example: karinafernandes-81@br.inter.net
      additionalProperties: false
    CustomerPhone:
      type: object
      required:
        - isMain
        - type
        - countryCallingCode
        - areaCode
        - number
        - phoneExtension
      properties:
        isMain:
          type: boolean
          description: Indica se o telefone informado é o principal
          example: true
        type:
          $ref: '#/components/schemas/EnumCustomerPhoneType'
        additionalInfo:
          type: string
          description: Informação complementar relativa ao tipo de telefone selecionado. De preenchimento obrigatório quando selecionado o tipo `OUTRO`
          pattern: \w*\W*
          maxLength: 70
          example: '432'
        countryCallingCode:
          type: string
          maxLength: 4
          pattern: '^\d{2,4}$|^NA$'
          example: '55'
          description: Número de DDI (Discagem Direta Internacional) para telefone de acesso ao Cliente - se houver
        areaCode:
          $ref: '#/components/schemas/EnumAreaCode'
        number:
          type: string
          maxLength: 11
          pattern: '^([0-9]{8,11})'
          example: '29875132'
          description: Número de telefone do cliente
        phoneExtension:
          type: string
          maxLength: 5
          pattern: '^\d{1,5}$|^NA$'
          description: Número do ramal. De preenchimento obrigatório se fizer parte da identificação do número do telefone informado
          example: '932'
      additionalProperties: false
    CustomerPostalAddress:
      type: object
      required:
        - isMain
        - address
        - additionalInfo
        - districtName
        - townName
        - countrySubDivision
        - postCode
        - country
        - countryCode
      properties:
        isMain:
          type: boolean
          description: Indica se o endereço informado é o principal
          example: true
        address:
          type: string
          description: |
            Deverá trazer toda a informação referente ao endereço da dependência informada: Tipo de logradouro + Nome do logradouro + Número do Logradouro (se não existir usar ' s/n') + complemento (se houver), como, p.ex.: 'R Diamatina, 59, bloco 35, fundos' 'Praça da Boa Vontade s/n'
          maxLength: 150
          pattern: \w*\W*
          example: 'Av Naburo Ykesaki, 1270'
        additionalInfo:
          type: string
          description: Alguns logradouros ainda necessitam ser especificados por meio de complemento
          maxLength: 30
          pattern: \w*\W*
          example: Fundos
        districtName:
          type: string
          description: |
            Bairro é uma comunidade ou região localizada em uma cidade ou município de acordo com as suas subdivisões geográficas.
          maxLength: 50
          pattern: \w*\W*
          example: Centro
        townName:
          type: string
          description: |
            Localidade: O nome da localidade corresponde à designação da cidade ou município no qual o endereço está localizado.
          maxLength: 50
          pattern: \w*\W*
          example: Marília
        ibgeTownCode:
          type: string
          description: 'Código IBGE de Município. A Tabela de Códigos de Municípios do IBGE apresenta a lista dos municípios brasileiros associados a um código composto de 7 dígitos, sendo os dois primeiros referentes ao código da Unidade da Federação.'
          pattern: '\d{7}$'
          maxLength: 7
          example: '3550308'
        countrySubDivision:
          $ref: '#/components/schemas/EnumCountrySubDivision'
        postCode:
          type: string
          description: |
            Código de Endereçamento Postal: Composto por um conjunto numérico de oito dígitos, o objetivo principal do CEP é orientar e acelerar o encaminhamento, o tratamento e a entrega de objetos postados nos Correios, por meio da sua atribuição a localidades, logradouros, unidades dos Correios, serviços, órgãos públicos, empresas e edifícios. p.ex. '01311000'
          pattern: '\d{8}|^NA$'
          maxLength: 8
          example: '17500001'
        country:
          type: string
          description: Nome do país
          maxLength: 80
          pattern: \w*\W*
          example: Brasil
        countryCode:
          type: string
          description: Código do pais de acordo com o código “alpha3” do ISO-3166
          maxLength: 3
          example: BRA
        geographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
      additionalProperties: false
    EconomicActivity:
      type: object
      required:
        - code
        - isMain
      properties:
        code:
          type: number
          pattern: '^\d{7}$|^NA$'
          maxLength: 7
          description: |
            Traz o código do ramo da atividade principal da empresa consultada, segundo padrão CNAE (Classificação Nacional de Atividades Econômicas)
          example: 8599604
        isMain:
          type: boolean
          description: Informa se é o principal ramo de atividade
          example: true
    EnumAreaCode:
      type: string
      example: '19'
      description: Número de DDD (Discagem Direta à Distância) do telefone do cliente - se houver
      maxLength: 2
      enum:
        - '11'
        - '12'
        - '13'
        - '14'
        - '15'
        - '16'
        - '17'
        - '18'
        - '19'
        - '21'
        - '22'
        - '24'
        - '27'
        - '28'
        - '31'
        - '32'
        - '33'
        - '34'
        - '35'
        - '37'
        - '38'
        - '41'
        - '42'
        - '43'
        - '44'
        - '45'
        - '46'
        - '47'
        - '48'
        - '49'
        - '51'
        - '53'
        - '54'
        - '55'
        - '61'
        - '62'
        - '63'
        - '64'
        - '65'
        - '66'
        - '67'
        - '68'
        - '69'
        - '71'
        - '73'
        - '74'
        - '75'
        - '77'
        - '79'
        - '81'
        - '82'
        - '83'
        - '84'
        - '85'
        - '86'
        - '87'
        - '88'
        - '89'
        - '91'
        - '92'
        - '93'
        - '94'
        - '95'
        - '96'
        - '97'
        - '98'
        - '99'
        - NA
    EnumCountrySubDivision:
      type: string
      description: 'Enumeração referente a cada sigla da unidade da federação que identifica o estado ou o distrito federal, no qual o endereço está localizado. p.ex. ''AC''. São consideradas apenas as siglas para os estados brasileiros'
      enum:
        - AC
        - AL
        - AP
        - AM
        - BA
        - CE
        - DF
        - ES
        - GO
        - MA
        - MT
        - MS
        - MG
        - PA
        - PB
        - PR
        - PE
        - PI
        - RJ
        - RN
        - RS
        - RO
        - RR
        - SC
        - SP
        - SE
        - TO
        - NA
      example: SP
    EnumCustomerPhoneType:
      type: string
      description: Identificação do Tipo de telefone do cliente.
      maxLength: 5
      enum:
        - FIXO
        - MOVEL
        - OUTRO
      example: FIXO
    EnumFiliationType:
      type: string
      description: |
        Tipo de filiação.
      enum:
        - MAE
        - PAI
      example: PAI
    EnumInformedRevenueFrequency:
      type: string
      description: |
        Traz a frequência ou período do faturamento informado.
        "O faturamento é calculado a partir de todos os benefícios que a empresa conseguiu com sua atividade econômica em um determinado período. Esses benefícios são os rendimentos ou ganhos da organização através de suas vendas ou serviços prestados".
      enum:
        - DIARIA
        - SEMANAL
        - QUINZENAL
        - MENSAL
        - BIMESTRAL
        - TRIMESTRAL
        - SEMESTRAL
        - ANUAL
      example: DIARIA
    EnumInformedIncomeFrequency:
      type: string
      description: |
        Traz a frequência ou período da renda informada.
      enum:
        - DIARIA
        - SEMANAL
        - QUINZENAL
        - MENSAL
        - BIMESTRAL
        - TRIMESTRAL
        - SEMESTRAL
        - ANUAL
    EnumMaritalStatusCode:
      type: string
      description: |
        Estado civil do cliente. 
      enum:
        - SOLTEIRO
        - CASADO
        - VIUVO
        - SEPARADO_JUDICIALMENTE
        - DIVORCIADO
        - UNIAO_ESTAVEL
        - OUTROS
      example: SOLTEIRO
    EnumOccupationMainCodeType:
      type: string
      description: |
        Traz a relação dos códigos relativos à ocupação.
      enum:
        - RECEITA_FEDERAL
        - CBO
        - OUTRO
    EnumPartiesParticipationDocumentType:
      type: string
      enum:
        - CPF
        - PASSAPORTE
        - OUTRO_DOCUMENTO_VIAGEM
        - CNPJ
      description: |
        Tipo do documento informado. 
    EnumPersonalOtherDocumentType:
      type: string
      enum:
        - CNH
        - RG
        - NIF
        - RNE
        - OUTROS
        - SEM_OUTROS_DOCUMENTOS
      description: |
        Relação dos Códigos dos demais documentos pessoa natural.
    EnumProcuratorsType:
      type: string
      maxLength: 19
      enum:
        - REPRESENTANTE_LEGAL
        - PROCURADOR
        - NAO_POSSUI
      description: |
        Tipo de representante.
        Representante legal - Nome Civil completo da Pessoa Natural que represente uma entidade ou uma empresa e é nomeado em seu ato constitutivo, ou seja, no contrato social ou estatuto social.
        Procurador - é qualquer pessoa que represente a Pessoa Natural em algum negócio, mediante autorização escrita do mesmo.
      example: PROCURADOR
    EnumProcuratorsTypePersonal:
      type: string
      maxLength: 19
      enum:
        - REPRESENTANTE_LEGAL
        - PROCURADOR
        - NAO_POSSUI
      description: |
        Tipo de representante.
        Representante legal - Nome Civil completo da Pessoa Natural que represente uma entidade ou uma empresa e é nomeado em seu ato constitutivo, ou seja, no contrato social ou estatuto social.
        Procurador - é qualquer pessoa que represente a Pessoa Natural em algum negócio, mediante autorização escrita do mesmo.
      example: PROCURADOR
    EnumProductServiceType:
      type: string
      maxLength: 24
      enum:
        - CONTA_DEPOSITO_A_VISTA
        - CONTA_POUPANCA
        - CONTA_PAGAMENTO_PRE_PAGA
        - CARTAO_CREDITO
        - OPERACAO_CREDITO
        - SEGURO
        - PREVIDENCIA
        - INVESTIMENTO
        - OPERACOES_CAMBIO
        - CONTA_SALARIO
        - CREDENCIAMENTO
      description: |
        Relação dos produtos e serviços com contrato vigente.
      example: SEGURO
    EnumSex:
      type: string
      description: |
        "Conjunto de características anatomofisiológicas que distinguem o homem e a mulher: Sexo masculino; sexo feminino". 
        No caso de não ser feminino nem masculino é classificado como 'OUTRO'
      enum:
        - FEMININO
        - MASCULINO
        - OUTRO
      example: FEMININO
    GeographicCoordinates:
      type: object
      description: 'Conjunto de informações, que correspondem aos valores das coordenadas geográficas em graus decimais, no Sistema de referência WGS84'
      properties:
        latitude:
          description: |
            Informação da Latitude referente a geolocalização informada. Entre -90 e 90.p.ex. '-90.8365180'. (2 casas antes da vírgula, 11 posições) 
          type: string
          pattern: '^-?\d{1,2}\.\d{1,9}$'
          maxLength: 13
          example: '-90.8365180'
        longitude:
          description: |
            Informação da Longitude referente a geolocalização informada. Entre -180 e 180. p.ex '-180.836519.' (3 casas antes da vírgula, 11 posições) 
          type: string
          pattern: '^-?\d{1,3}\.\d{1,8}$'
          maxLength: 13
          example: '-180.836519'
      additionalProperties: false
    Links:
      type: object
      description: Referências para outros recusos da API requisitada.
      required:
        - self
      properties:
        self:
          type: string
          format: uri
          maxLength: 2000
          description: URI completo que gerou a resposta atual.
          example: 'https://api.banco.com.br/open-banking/api/v1/resource'
          pattern: '^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
        first:
          type: string
          format: uri
          maxLength: 2000
          description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta
          example: 'https://api.banco.com.br/open-banking/api/v1/resource'
          pattern: '^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
        prev:
          type: string
          format: uri
          maxLength: 2000
          description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta"
          example: 'https://api.banco.com.br/open-banking/api/v1/resource'
          pattern: '^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
        next:
          type: string
          format: uri
          maxLength: 2000
          description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta
          example: 'https://api.banco.com.br/open-banking/api/v1/resource'
          pattern: '^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
        last:
          type: string
          format: uri
          maxLength: 2000
          description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta
          example: 'https://api.banco.com.br/open-banking/api/v1/resource'
          pattern: '^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$'
      additionalProperties: false
    Meta:
      type: object
      description: Meta informações referente a API requisitada.
      required:
        - totalRecords
        - totalPages
        - requestDateTime
      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
        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'
      additionalProperties: false
    Nationality:
      type: object
      description: Objeto que agrupa informações relativas à nacionalidade da Pessoa Natural
      required:
        - otherNationalitiesInfo
        - documents
      properties:
        otherNationalitiesInfo:
          type: string
          description: |
            Campo de preenchimento obrigatório caso o cliente não possua nacionalidade brasileira. Preencher indicando todas suas demais nacionalidades utilizando o código de pais de acordo com o código “alpha3” do ISO-3166.p.ex.'CAN'
          maxLength: 40
          example: CAN
        documents:
          type: array
          description: Lista que traz relação de documentos complementares de pessoas com nacionalidade diferente de brasileira
          items:
            $ref: '#/components/schemas/NationalityOther'
      additionalProperties: false
    NationalityOther:
      type: object
      description: Conjunto de informações específicas para cliente que possue nacionalidade diferente da brasileira
      properties:
        otherNationalitiesInfo:
          type: string
          description: |
            Campo de preenchimento obrigatório caso o cliente não possua nacionalidade brasileira. Preencher indicando todas suas demais nacionalidades utilizando o código de pais de acordo com o código “alpha3” do ISO-3166.p.ex.'CAN'
          maxLength: 40
          example: CAN
        documents:
          type: array
          description: Lista que traz relação de documentos complementares de pessoas com nacionalidade diferente de brasileira
          items:
            $ref: '#/components/schemas/NationalityOtherDocument'
      additionalProperties: false
    NationalityOtherDocument:
      type: object
      required:
        - type
        - number
        - expirationDate
        - issueDate
      properties:
        type:
          type: string
          maxLength: 10
          pattern: \w*\W*
          description: 'Tipo de documento. Campo livre, de preenchimento obrigatório quando a nacionalidade for diferente de brasileira. Informar tipo e número do documento, além da, vigência e demais informações complementares para se identificar o documento de pessoa estrangeira'
          example: SOCIAL SEC
        number:
          type: string
          maxLength: 40
          pattern: \w*\W*
          description: 'Número de identificação do documento. Campo livre, de preenchimento obrigatório quando a nacionalidade for diferente de brasileira. Informar o número do documento e demais informações complementares para se identificar o documento de pessoa estrangeira'
          example: '423929299'
        expirationDate:
          description: 'Data de validade do documento informado, conforme especificação RFC-3339.'
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
        issueDate:
          description: 'Data de emissão do documento, conforme especificação RFC-3339.'
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
        typeAdditionalInfo:
          type: string
          maxLength: 70
          pattern: \w*\W*
          description: Campo livre de preenchimento obrigatório se selecionada a opção OUTROS tipos de documentos.
          example: NA
      additionalProperties: false
    PartiesParticipation:
      type: object
      description: |
        Lista relativa às informações das partes envolvidas, como: sócio e /ou administrador
      required:
        - type
        - civilName
        - socialName
        - shareholding
        - documentType
        - documentNumber
      properties:
        personType:
          type: string
          description: Indica se a pessoa da parte envolvida é uma pessoa natural ou juridica
          enum:
            - PESSOA_NATURAL
            - PESSOA_JURIDICA
        type:
          type: string
          maxLength: 13
          description: |
            Indica o perfil de atuação na empresa. Vide Enum
            O administrador é o responsável por desempenhar todas as funções administrativas da empresa. É ele quem conduz o dia a dia do negócio, assinando documentos, respondendo legalmente pela sociedade, realizando empréstimos e outras ações gerenciais. Apesar de estar na linha de frente da empresa, ele é denominado sócio por também possuir sua parcela de participação no Capital Social.
            Sócio não tem qualquer envolvimento nas atividades administrativas da sociedade.
          enum:
            - SOCIO
            - ADMINISTRADOR
        civilName:
          type: string
          description: 'Nome civil completo da pessoa natural (Direito fundamental da pessoa, o nome civil é aquele atribuído à pessoa natural desde o registro de seu nascimento, com o qual será identificada por toda a sua vida, bem como após a sua morte)'
          maxLength: 70
          pattern: \w*\W*
          example: Juan Kaique Cláudio Fernandes
        socialName:
          type: string
          description: 'Nome social da pessoa natural, se houver. (aquele pelo qual travestis e transexuais se reconhecem, bem como são identificados por sua comunidade e em seu meio social, conforme Decreto Local)'
          maxLength: 70
          pattern: \w*\W*
          example: Karina
        companyName:
          type: string
          maxLength: 70
          pattern: \w*\W*
          description: Razão social da empresa consultada é o termo registrado sob o qual uma pessoa jurídica (PJ) se individualiza e exerce suas atividades. Também pode ser chamada por denominação social ou firma empresarial
          example: Luiza e Benjamin Assessoria Jurídica Ltda
        tradeName:
          type: string
          maxLength: 70
          pattern: \w*\W*
          description: 'Nome fantasia da pessoa jurídica, se houver. (É o nome popular da empresa, utilizado para divulgação da empresa e melhor fixação com o público). De preenchimento obrigatório se houver'
          example: Mundo da Eletronica
        startDate:
          description: 'Data de início da participação, conforme especificação RFC-3339.'
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        shareholding:
          type: string
          maxLength: 4
          pattern: '^((\d{1,9}\.\d{2}){1}|NA)$'
          description: |
            Percentual de participação societária (informar com 2 casas decimais). Sócio só deve ser informado se sua participação societária for igual ou superior a 25%. p.ex: 0.25 (Este valor  representa 25%. O valor '1 'representa 100%)
          example: '0.51'
        documentType:
          $ref: '#/components/schemas/EnumPartiesParticipationDocumentType'
        documentNumber:
          type: string
          maxLength: 20
          pattern: \w*\W*
          description: Número do documento informado. Campo Texto Livre para preencher número e dígito do documento se houver
          example: '73677831148'
        documentAdditionalInfo:
          type: string
          maxLength: 100
          pattern: \w*\W*
          description: 'Campo livre, de preenchimento obrigatório quando o documento informado tiver informações complementares relevantes para a sua identificação'
          example: CNH
        documentCountry:
          type: string
          description: País de emissão do documento. Código do pais de acordo com o código “alpha3” do ISO-3166.
          maxLength: 3
          example: CAN
        documentExpirationDate:
          description: 'Data de validade do documento informado, conforme especificação RFC-3339.'
          type: string
          maxLength: 10
          format: date
          example: '2021-05-21'
        documentIssueDate:
          description: 'Data de emissão do documento, conforme especificação RFC-3339.'
          type: string
          maxLength: 10
          format: date
          example: '2021-05-21'
      additionalProperties: false
    PersonalDocument:
      type: object
      description: Objeto agrupador de informações relativas a Documentos da pessoa natural
      required:
        - cpfNumber
      properties:
        cpfNumber:
          type: string
          pattern: '^\d{11}$|^NA$'
          description: 'Número completo do CPF. Atributo que corresponde às informações mínimas exigidas pela Regulamentação em vigor. O CPF é o Cadastro de Pessoa natural.  Ele é um documento feito pela Receita Federal e serve para identificar os contribuintes. O CPF é uma numeração com 11 dígitos, que só mudam por decisão judicial. O documento é emitido pela receita federal'
          maxLength: 11
          example: '25872252137'
        passportNumber:
          type: string
          maxLength: 20
          pattern: \w*\W*
          description: Número do Passaporte. Documento concedido aos viajantes por uma autoridade administrativa nacional a fim de certificar sua identidade perante autoridades estrangeiras. De preenchimento obrigatório. Aplicável somente à Pessoa natural residente no exterior desobrigada de inscrição no CPF.
          example: '75253468744594820620'
        passportCountry:
          type: string
          description: Pais de emissão do passaporte. Código do pais de acordo com o código “alpha3” do ISO-3166.
          maxLength: 3
          example: CAN
        passportExpirationDate:
          description: 'Data vigência do Passaporte, conforme especificação RFC-3339.'
          type: string
          maxLength: 10
          format: date
          example: '2021-05-21'
        passportIssueDate:
          description: 'Data de emissão do passaporte, conforme especificação RFC-3339.'
          type: string
          maxLength: 10
          format: date
          example: '2021-05-21'
      additionalProperties: false
    PersonalFinancialRelationData:
      type: object
      description: 'Objeto que reúne as informações relativas ao relacionamento do cliente junto à Instituição. Considera-se relacionamento as informações que permitam conhecer desde quando a pessoa consultada é cliente da instituição, bem como um indicador dos produtos e serviços que ela consome atualmente e seus representantes'
      required:
        - updateDateTime
        - personalId
        - startDate
        - brandID
        - brandName
        - procurators
      properties:
        updateDateTime:
          description: 'Data e hora da atualização do bloco de Relacionamento, conforme especificação RFC-3339, formato UTC.'
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        personalId:
          type: string
          pattern: \w*\W*
          maxLength: 100
          description: Um identificador único e imutável usado para identificar o recurso cliente pessoa natural. Este identificador não tem significado para o cliente que deu o consentimento
          example: 578-psd-71md6971kjh-2d414
        startDate:
          description: Data de início de relacionamento com a Instituição Financeira. Deve trazer o menor valor entre a informação reportada ao BACEN pelo DOC 3040 e CCS.
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        brandID:
          type: string
          description: 'Identifica a Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes.'
          maxLength: 100
          pattern: \w*\W*
          example: '29698749425984912674'
        brandName:
          type: string
          pattern: \w*\W*
          maxLength: 80
          description: 'Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes'
          example: Organização A
        productsServices:
          $ref: '#/components/schemas/EnumProductServiceType'
        procurators:
          type: array
          items:
            $ref: '#/components/schemas/PersonalProcurator'
          minItems: 1
          description: Lista dos representantes. De preenchimento obrigatório se houver representante.
      additionalProperties: false
    PersonalIdentificationData:
      type: object
      description: Conjunto de informações relativas a Identificação ou seja a ação e o efeito de identificar de forma única a pessoa natural através de seus dados cadastrais.
      required:
        - updateDateTime
        - personalId
        - brandID
        - brandName
        - companyCnpj
        - documents
        - otherDocuments
        - nationality
        - civilName
        - socialName
        - filiation
        - birthDate
        - maritalStatusCode
        - sex
        - contacts
      properties:
        updateDateTime:
          description: 'Data e hora da atualização do bloco, conforme especificação RFC-3339'
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        personalId:
          type: string
          pattern: \w*\W*
          maxLength: 100
          description: Um identificador único e imutável usado para identificar o recurso cliente pessoa natural. Este identificador não tem significado para o cliente que deu o consentimento
          example: 578-psd-71md6971kjh-2d414
        brandID:
          type: string
          description: 'Identifica a Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes.'
          maxLength: 100
          pattern: \w*\W*
          example: '29698749425984912674'
        brandName:
          type: string
          pattern: \w*\W*
          maxLength: 80
          description: 'Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes'
          example: Organização A
        companyCnpj:
          description: |
            Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. 
            Deve-se ter apenas os números do CNPJ, sem máscara
          type: array
          items:
            type: string
            pattern: '\d{14}|^NA$'
            maxLength: 14
        documents:
          $ref: '#/components/schemas/PersonalDocument'
        otherDocuments:
          type: array
          items:
            $ref: '#/components/schemas/PersonalOtherDocument'
          minItems: 1
          description: Relação dos demais documentos
        hasBrazilianNationality:
          type: boolean
          description: Informa se o Cliente tem nacionalidade brasileira.
          example: false
        nationality:
          type: array
          items:
            $ref: '#/components/schemas/Nationality'
        civilName:
          type: string
          description: 'Nome civil completo da pessoa natural (Direito fundamental da pessoa, o nome civil é aquele atribuído à pessoa natural desde o registro de seu nascimento, com o qual será identificada por toda a sua vida, bem como após a sua morte)'
          maxLength: 70
          pattern: \w*\W*
          example: Juan Kaique Cláudio Fernandes
        socialName:
          type: string
          description: 'Nome social da pessoa natural, se houver. (aquele pelo qual travestis e transexuais se reconhecem, bem como são identificados por sua comunidade e em seu meio social, conforme Decreto Local)'
          maxLength: 70
          pattern: \w*\W*
        filiation:
          type: array
          items:
            type: object
            properties:
              type:
                $ref: '#/components/schemas/EnumFiliationType'
              civilName:
                type: string
                description: 'Nome civil completo da pessoa relativa à filiação. (Direito fundamental da pessoa, o nome civil é aquele atribuído à pessoa natural desde o registro de seu nascimento, com o qual será identificada por toda a sua vida, bem como após a sua morte)'
                maxLength: 70
                pattern: \w*\W*
              socialName:
                type: string
                description: 'Nome social da pessoa natural, se houver. (aquele pelo qual travestis e transexuais se reconhecem, bem como são identificados por sua comunidade e em seu meio social, conforme Decreto Local)'
                maxLength: 70
                pattern: \w*\W*
            additionalProperties: false
        birthDate:
          description: 'Data de nascimento, conforme especificação RFC-3339'
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
        maritalStatusCode:
          $ref: '#/components/schemas/EnumMaritalStatusCode'
        maritalStatusAdditionalInfo:
          type: string
          description: 'Campo livre para complementar a informação relativa ao estado civil, quando selecionada a opção `OUTROS`'
          pattern: \w*\W*
          maxLength: 50
        sex:
          $ref: '#/components/schemas/EnumSex'
        contacts:
          $ref: '#/components/schemas/CustomerContacts'
      additionalProperties: false
    PersonalOtherDocument:
      type: object
      required:
        - type
        - typeAdditionalInfo
        - number
        - checkDigit
        - additionalInfo
        - expirationDate
      properties:
        type:
          $ref: '#/components/schemas/EnumPersonalOtherDocumentType'
        typeAdditionalInfo:
          type: string
          maxLength: 70
          pattern: \w*\W*
          description: Campo livre de preenchimento obrigatório se selecionada a opção OUTROS tipos de documentos
          example: NA
        number:
          type: string
          maxLength: 11
          pattern: \w*\W*
          description: Identificação/Número do documento informado
          example: '15291908'
        checkDigit:
          type: string
          maxLength: 2
          pattern: \w*\W*
          description: Dígito verificador do documento informado. De preenchimento obrigatório se o documento informado tiver dígito verificador
          example: P
        additionalInfo:
          type: string
          maxLength: 50
          pattern: \w*\W*
          description: |
            Campo livre, de preenchimento obrigatório quando o documento informado tiver informações complementares. p.ex. RG, este campo deve trazer: "SSP-SP' para RGs emitidos no estado de São Paulo - SP
          example: SSP-SP
        expirationDate:
          description: 'Data de validade do documento informado, conforme especificação RFC-3339.'
          type: string
          maxLength: 10
          format: date
          example: '2021-05-21'
      additionalProperties: false
    PersonalProcurator:
      type: object
      required:
        - type
        - cpfNumber
        - civilName
      properties:
        type:
          $ref: '#/components/schemas/EnumProcuratorsTypePersonal'
        cpfNumber:
          type: string
          pattern: '^\d{11}$|^NA$'
          description: 'Número completo do CPF. O CPF é o Cadastro de Pessoa natural. Ele é um documento feito pela Receita Federal e serve para identificar os contribuintes. O CPF é uma numeração com 11 dígitos, que só mudam por decisão judicial. O documento é emitido pela receita federal'
          example: '73677831148'
          maxLength: 11
        civilName:
          type: string
          pattern: \w*\W*
          description: 'Nome civil completo da pessoa natural. (Direito fundamental da pessoa, o nome civil é aquele atribuído à pessoa natural desde o registro de seu nascimento, com o qual será identificada por toda a sua vida, bem como após a sua morte)'
          maxLength: 70
          example: Elza Milena Stefany Teixeira
        socialName:
          type: string
          pattern: \w*\W*
          description: 'Nome social da pessoa natural, se houver. (aquele pelo qual travestis e transexuais se reconhecem, bem como são identificados por sua comunidade e em seu meio social, conforme Decreto Nº 51.180, de 14 de janeiro de 2010)'
          maxLength: 70
          example: NA
      additionalProperties: false
    PersonalQualificationData:
      type: object
      description: 'Conjunto de informações relativas ao processo de qualificação. Considera-se qualificação as informações que permitam as instituições apreciar, avaliar, caracterizar e classificar o cliente com a finalidade de conhecer o seu perfil de risco e sua capacidade econômico-financeira'
      required:
        - updateDateTime
        - personalId
        - brandID
        - brandName
        - companyCnpj
        - informedIncome
        - informedPatrimony
        - occupationCode
        - occupationDescription
      properties:
        updateDateTime:
          description: 'Data e hora da atualização do bloco, conforme especificação RFC-3339'
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
        personalId:
          type: string
          pattern: \w*\W*
          maxLength: 100
          description: Um identificador único e imutável usado para identificar o recurso cliente pessoa natural. Este identificador não tem significado para o cliente que deu o consentimento
          example: 578-psd-71md6971kjh-2d414
        brandID:
          type: string
          description: 'Identifica a Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes.'
          maxLength: 100
          pattern: \w*\W*
          example: '29698749425984912674'
        brandName:
          type: string
          pattern: \w*\W*
          maxLength: 80
          description: 'Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a ''marca'' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes'
          example: Organização A
        companyCnpj:
          description: |
            Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. 
            Deve-se ter apenas os números do CNPJ, sem máscara
          type: string
          pattern: '\d{14}|^NA$'
          maxLength: 14
          example: '50685362000135'
        informedIncome:
          type: object
          properties:
            frequency:
              $ref: '#/components/schemas/EnumInformedIncomeFrequency'
            amount:
              description: |
                Valor total da renda informada. Expresso em valor monetário com 4 casas decimais. 
                "Renda primária indica os montantes a pagar ou a receber em troca do uso temporário de recursos financeiros, trabalho ou ativos não financeiros não produzidos, a saber, remuneração de trabalhadores, renda de investimentos e demais rendas primárias. Fazem parte da primeira a remuneração do trabalho assalariado (salários e ordenados); da segunda, renda de investimento direto, renda de investimento em carteira, renda de outros investimentos e renda de ativos de reserva; e da terceira, tributos sobre a produção e importação, subsídios e aluguéis". Fonte: Banco Central do Brasil – Departamento Econômico
              type: number
              format: double
              pattern: '(-?\d{15}(.\d{4}?))$'
              maxLength: 19
              minLength: 0
              example: 100000.04
            currency:
              type: string
              pattern: '^(\w{3}){1}$'
              maxLength: 3
              description: 'Moeda referente ao valor da renda, segundo modelo ISO-4217.'
              example: BRL
            date:
              description: 'Data da renda, conforme especificação RFC-3339.'
              type: string
              maxLength: 10
              format: date
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
              example: '2021-05-21'
          additionalProperties: false
        informedPatrimony:
          type: object
          properties:
            amount:
              description: |
                Valor do patrimônio informado. Expresso em valor monetário com 4 casas decimais.
                "Patrimônio é o conjunto de bens vinculado a uma pessoa ou a uma entidade".
              type: number
              format: double
              pattern: '(-?\d{15}(.\d{4}?))$'
              maxLength: 19
              minLength: 0
              example: 100000.04
            currency:
              type: string
              pattern: '^(\w{3}){1}$'
              maxLength: 3
              description: 'Moeda referente ao valor do patrimônio, segundo modelo ISO-4217.'
              example: BRL
            year:
              type: number
              maxLength: 4
              description: 'Ano de referência do Patrimônio, conforme especificação RFC-3339.'
              example: 2010
              maximum: 9999
          additionalProperties: false
        occupationCode:
          $ref: '#/components/schemas/EnumOccupationMainCodeType'
        occupationDescription:
          type: string
          pattern: \w*\W*
          maxLength: 100
          description: 'Campo livre, de preenchimento obrigatório. Traz o código da ocupação ou o descritivo da ocupação, se selecionada a opção ''OUTRO'''
          example: '01'
      additionalProperties: false
    ResponseBusinessCustomersFinancialRelation:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/BusinessFinancialRelationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    ResponseBusinessCustomersIdentification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BusinessIdentificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    ResponseBusinessCustomersQualification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/BusinessQualificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    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*
                maxLength: 255
              title:
                description: Título legível por humanos deste erro específico
                type: string
                pattern: \w*\W*
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                pattern: \w*\W*
                maxLength: 2048
            additionalProperties: false
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    ResponsePersonalCustomersFinancialRelation:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/PersonalFinancialRelationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    ResponsePersonalCustomersIdentification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PersonalIdentificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    ResponsePersonalCustomersQualification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/PersonalQualificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
  parameters:
    Authorization:
      name: Authorization
      in: header
      description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado
      required: true
      schema:
        type: string
        pattern: \w*\W*
        maxLength: 2048
    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
        default: 1
        minimum: 1
        format: int32
    pageSize:
      name: page-size
      in: query
      description: Quantidade total de registros por páginas.
      schema:
        type: integer
        default: 25
        minimum: 1
        format: int32
        maximum: 10000
    xCustomerUserAgent:
      name: x-customer-user-agent
      in: header
      description: Indica o user-agent que o usuário utiliza.
      required: false
      schema:
        type: string
        pattern: \w*\W*
        minLength: 1
        maxLength: 100
    xFapiAuthDate:
      name: x-fapi-auth-date
      in: header
      description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC'
      required: false
      schema:
        type: string
        pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$'
        minLength: 29
        maxLength: 29
    xFapiCustomerIpAddress:
      name: x-fapi-customer-ip-address
      in: header
      description: O endereço IP do usuário se estiver atualmente logado com o receptor.
      required: false
      schema:
        type: string
        pattern: \w*\W*
        minLength: 1
        maxLength: 100
    xFapiInteractionId:
      name: x-fapi-interaction-id
      in: header
      description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.'
      required: false
      schema:
        type: string
        pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
        minLength: 1
        maxLength: 100
  securitySchemes:
    OpenId:
      type: openIdConnect
      openIdConnectUrl: 'https://authserver.example/.well-known/openid-configuration'
  responses:
    OKResponsePersonalCustomersIdentification:
      description: Dados sobre identificação pessoa física.
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/responses/OKResponsePersonalCustomersQualification/headers/x-fapi-interaction-id/schema'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponsePersonalCustomersIdentification'
    OKResponsePersonalCustomersQualification:
      description: Dados sobre qualificação da pessoa física
      headers:
        x-fapi-interaction-id:
          schema:
            type: string
            pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
            maxLength: 100
            description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponsePersonalCustomersQualification'
    OKResponsePersonalCustomersFinancialRelation:
      description: Dados sobre relacionamento da pessoa física
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/responses/OKResponsePersonalCustomersQualification/headers/x-fapi-interaction-id/schema'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponsePersonalCustomersFinancialRelation'
    OKResponseBusinessCustomersIdentification:
      description: Dados sobre identificação pessoa jurídica
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/responses/OKResponsePersonalCustomersQualification/headers/x-fapi-interaction-id/schema'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseBusinessCustomersIdentification'
    OKResponseBusinessCustomersQualification:
      description: Dados sobre qualificação pessoa jurídica
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/responses/OKResponsePersonalCustomersQualification/headers/x-fapi-interaction-id/schema'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseBusinessCustomersQualification'
    OKResponseBusinessCustomersFinancialRelation:
      description: Dados sobre relacionamento pessoa jurídica
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/responses/OKResponsePersonalCustomersQualification/headers/x-fapi-interaction-id/schema'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseBusinessCustomersFinancialRelation'
    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'
    Forbidden:
      description: O token tem escopo incorreto ou uma política de segurança foi violada
      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'
    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'
    NotAcceptable:
      description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8
      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'
    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'
    Unauthorized:
      description: Cabeçalho de autenticação ausente/inválido ou token inválido
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
