﻿openapi: 3.0.0
info:
  title: API Customers - Open Finance Brasil
  description: |
    API de dados cadastrais de clientes do Open Finance 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`.

    # Orientações
    A `Role`  do diretório de participantes relacionada à presente API é a `DADOS`.\
    Para todos os `endpoints` desta API é previsto o envio de um `token` através do header `Authorization`.\
    Este token deverá estar relacionado ao consentimento (`consentId`) mantido na instituição transmissora dos dados, o qual permitirá a pesquisa e retorno, na API em questão, dos 
    dados relacionados ao `consentId` específico relacionado.\
    Os dados serão devolvidos na consulta desde que o `consentId` relacionado corresponda a um consentimento válido e com o status `AUTHORISED`.\
    É também necessário que o recurso em questão (conta, contrato, etc) esteja disponível na instituição transmissora (ou seja, sem boqueios de qualquer natureza e com todas as autorizações/consentimentos já autorizados).\
    Além disso as `permissions` necessárias deverão ter sido solicitadas quando da criação do consentimento relacionado (`consentId`).\
    Relacionamos a seguir as `permissions` necessárias para a consulta de dados em cada `endpoint` da presente API.

    ## 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: 2.1.0-beta.1
  license:
    name: Apache 2.0
    url: 'https://www.apache.org/licenses/LICENSE-2.0'
  contact:
    name: Governança do Open Finance Brasil – Especificações
    email: gt-interfaces@openbankingbr.org
    url: 'https://openbanking-brasil.github.io/areadesenvolvedor/'
servers:
  - url: 'https://api.banco.com.br/open-banking/customers/v2'
    description: Servidor de Produção
  - url: 'https://apih.banco.com.br/open-banking/customers/v2'
    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: customersGetPersonalIdentifications
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/pagination-key'
      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'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '423':
          $ref: '#/components/responses/Locked'
        '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'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - 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: customersGetPersonalQualifications
      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'
        '423':
          $ref: '#/components/responses/Locked'
        '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'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - 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: customersGetPersonalFinancialRelations
      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'
        '423':
          $ref: '#/components/responses/Locked'
        '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'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - 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: customersGetBusinessIdentifications
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/pagination-key'
      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'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '423':
          $ref: '#/components/responses/Locked'
        '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'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - 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: customersGetBusinessQualifications
      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'
        '423':
          $ref: '#/components/responses/Locked'
        '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'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - 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: customersGetBusinessFinancialRelations
      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'
        '423':
          $ref: '#/components/responses/Locked'
        '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'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - 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
        - productsServicesType
        - procurators
        - accounts
      properties:
        updateDateTime:
          type: string
          format: date-time
          maxLength: 20
          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'
          description: |
            Data e hora da atualização dos campos \<_endpoint_\>, conforme especificação RFC-3339, formato UTC. Quando não existente uma data vinculada especificamente ao bloco, assumir a data e hora de atualização do cadastro como um todo.
        startDate:
          type: string
          format: date-time
          maxLength: 20
          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'
          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.
        productsServicesType:
          type: array
          minItems: 1
          maxItems: 12
          items:
            $ref: '#/components/schemas/EnumProductServiceType'
        procurators:
          type: array
          items:
            $ref: '#/components/schemas/BusinessProcurator'
          minItems: 0
          description: Lista dos representantes. De preenchimento obrigatório se houver representante.
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/BusinessAccount'
          minItems: 0
          description: |
            Lista de contas depósito à vista, poupança e pagamento pré-pagas mantidas pelo cliente na instituição transmissora.    
    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:
        - businessId
        - updateDateTime
        - brandName
        - cnpjNumber
        - companiesCnpj
        - companyName
        - incorporationDate
        - parties
        - contacts
      properties:
        updateDateTime:
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
          description: |
            Data e hora da atualização dos campos \<_endpoint_\>, conforme especificação RFC-3339, formato UTC. Quando não existente uma data vinculada especificamente ao bloco, assumir a data e hora de atualização do cadastro como um todo.
        businessId:
          type: string
          maxLength: 100
          minLength: 1
          pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$'
          example: 578-psd-71md6971kjh-2d414
          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
        brandName:
          type: string
          maxLength: 80
          pattern: '[\w\W\s]*'
          example: Organização A
          description: |
            Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).
        companyName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Luiza e Benjamin Assessoria Jurídica Ltda
          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
        tradeName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Mundo da Eletronica
          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'
        incorporationDate:
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
          description: 'Data de constituição da empresa, conforme especificação RFC-3339.'
        cnpjNumber:
          type: string
          maxLength: 14
          pattern: '^\d{14}$'
          example: '50685362006773'
          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'
        companiesCnpj:
          minItems: 1
          type: array
          example:
            - '50685362000135'
            - '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
          items:
            type: string
            maxLength: 14
            pattern: '^\d{14}$'
            example: '50685362000135'
        otherDocuments:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/BusinessOtherDocument'
          description: Relação dos demais documentos
        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/BusinessContacts'
    BusinessProcurator:
      type: object
      required:
        - type
        - cnpjCpfNumber
        - civilName
      properties:
        type:
          type: string
          enum:
            - REPRESENTANTE_LEGAL
            - PROCURADOR
          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
        cnpjCpfNumber:
          type: string
          maxLength: 14
          pattern: '^\d{11}$|^\d{14}$'
          example: '73677831148'
          description: Identificação do Representante Legal ou Procurador. Número do cadastro nas Receita Federal  (Preencher com CPF ou CNPJ sem formatação)
        civilName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Elza Milena Stefany Teixeira
          description: Nome civil completo ou Razão Social
        socialName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Stefany Teixeirass
          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.
    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
      properties:
        updateDateTime:
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
          description: |
            Data e hora da atualização dos campos \<_endpoint_\>, conforme especificação RFC-3339, formato UTC. Quando não existente uma data vinculada especificamente ao bloco, assumir a data e hora de atualização do cadastro como um todo.
        economicActivities:
          type: array
          items:
            $ref: '#/components/schemas/EconomicActivity'
          minItems: 0
          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:
          $ref: '#/components/schemas/InformedRevenue'
        informedPatrimony:
          $ref: '#/components/schemas/BusinessInformedPatrimony'
    BusinessOtherDocument:
      type: object
      required:
        - type
        - number
        - country
      properties:
        type:
          type: string
          maxLength: 20
          pattern: '[\w\W\s]*'
          example: EIN
          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'
        number:
          type: string
          maxLength: 20
          pattern: '[\w\W\s]*'
          example: '128328453'
          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'
        country:
          type: string
          maxLength: 3
          pattern: '^(\w{3}){1}$'
          example: CAN
          description: Pais de emissão do tipo de documento informado. Código do pais de acordo com o código alpha3 do ISO-3166
        expirationDate:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
          description: 'Data vigência do tipo de  documento informado, conforme especificação RFC-3339.'
    BusinessContacts:
      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/BusinessPostalAddress'
          minItems: 1
          description: Lista de endereços da pessoa jurídica
        phones:
          type: array
          items:
            $ref: '#/components/schemas/CustomerPhone'
          minItems: 0
          description: Lista com telefones de contato da pessoa jurídica
        emails:
          type: array
          items:
            $ref: '#/components/schemas/CustomerEmail'
          minItems: 0
          description: Lista e-mails de contato
    PersonalContacts:
      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/PersonalPostalAddress'
          minItems: 0
          description: Lista de endereços da pessoa natural
        phones:
          type: array
          items:
            $ref: '#/components/schemas/CustomerPhone'
          minItems: 0
          description: Lista com telefones de contato da pessoa natural
        emails:
          type: array
          items:
            $ref: '#/components/schemas/CustomerEmail'
          minItems: 0
          description: Lista e-mails de contato
    BusinessInformedPatrimony:
      type: object
      required:
        - amount
        - date
      properties:
        amount:
          $ref: '#/components/schemas/InformedPatrimonyAmount'
        date:
          type: string
          format: date
          maxLength: 20
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
          description: 'Data de referência do Patrimônio, conforme especificação RFC-3339.'
    PersonalInformedPatrimony:
      type: object
      required:
        - amount
        - year
      properties:
        amount:
          $ref: '#/components/schemas/InformedPatrimonyAmount'
        year:
          type: number
          maximum: 9999
          example: 2010
          description: 'Ano de referência da Renda, conforme especificação RFC-3339.'
    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: ^[a-z0-9.!#$&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$
          example: karinafernandes-81@br.inter.net
    CustomerPhone:
      type: object
      required:
        - isMain
        - type
        - areaCode
        - number
      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. [Restrição] De preenchimento obrigatório quando selecionado o tipo ''OUTRO''.'
          pattern: '[\w\W\s]*'
          maxLength: 70
          example: Informações adicionais.
        countryCallingCode:
          type: string
          maxLength: 4
          pattern: '^\d{1,4}$'
          example: '55'
          description: |
            Número de DDI (Discagem Direta Internacional) para telefone de acesso ao Cliente - se houver

            [Restrição] O preenchimento é obrigatório quando for diferente de 55. 
        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}$'
          description: Número do ramal. De preenchimento obrigatório se fizer parte da identificação do número do telefone informado
          example: '932'
    BusinessPostalAddress:
      type: object
      required:
        - isMain
        - townName
        - country
        - countryCode
      properties:
        isMain:
          type: boolean
          example: true
          description: Indica se o endereço informado é o principal
        address:
          type: string
          maxLength: 150
          minLength: 2
          pattern: '^\w{2}[\w\W\s]*$'
          example: 'Av Naburo Ykesaki, 1270'
          description: |
            Corresponde ao endereço comercial do cliente.
        additionalInfo:
          type: string
          maxLength: 30
          pattern: '[\w\W\s]*'
          example: Fundos
          description: Alguns logradouros ainda necessitam ser especificados por meio de complemento
        districtName:
          type: string
          maxLength: 50
          pattern: '[\w\W\s]*'
          example: Centro
          description: |
            Bairro é uma comunidade ou região localizada em uma cidade ou município de acordo com as suas subdivisões geográficas. Preenchimento obrigatório, se houver.
        townName:
          type: string
          maxLength: 50
          pattern: '^\w{2}[\w\W\s]*$'
          minLength: 2
          example: Marília
          description: |
            Localidade: O nome da localidade corresponde à designação da cidade ou município no qual o endereço está localizado.  
        ibgeTownCode:
          type: string
          pattern: '\d{7}$'
          maxLength: 7
          example: '3550308'
          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.'
        countrySubDivision:
          $ref: '#/components/schemas/EnumCountrySubDivision'
        postCode:
          type: string
          pattern: '^\d{8}$'
          maxLength: 8
          example: '17500001'
          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'
        country:
          type: string
          maxLength: 80
          pattern: '[\w\W\s]*'
          example: Brasil
          description: Nome do país
        countryCode:
          type: string
          maxLength: 3
          pattern: '^([A-Z]{3})$'
          example: BRA
          description: Código do pais de acordo com o código alpha3 do ISO-3166
        geographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
    PersonalPostalAddress:
      type: object
      required:
        - isMain
        - address
        - townName
        - postCode
        - country
      properties:
        isMain:
          type: boolean
          example: true
          description: Indica se o endereço informado é o principal.
        address:
          type: string
          maxLength: 150
          pattern: '[\w\W\s]*'
          example: 'Av Naburo Ykesaki, 1270'
          description: Corresponde ao endereço residencial do cliente.
        additionalInfo:
          type: string
          maxLength: 30
          pattern: '[\w\W\s]*'
          example: Fundos
          description: Alguns logradouros ainda necessitam ser especificados por meio de complemento.
        districtName:
          type: string
          maxLength: 50
          pattern: '[\w\W\s]*'
          example: Centro
          description: |
            Bairro é uma comunidade ou região localizada em uma cidade ou município de acordo com as suas subdivisões geográficas.
            [Restrição] De preenchimento obrigatório, se houver.
        townName:
          type: string
          maxLength: 50
          pattern: '[\w\W\s]*'
          example: Marília
          description: |
            Localidade: O nome da localidade corresponde à designação da cidade ou município no qual o endereço está localizado.
        ibgeTownCode:
          type: string
          pattern: '\d{7}$'
          maxLength: 7
          example: '3550308'
          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.'
        countrySubDivision:
          $ref: '#/components/schemas/EnumCountrySubDivision'
        postCode:
          type: string
          pattern: '^\d{8}$'
          maxLength: 8
          example: '17500001'
          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'.
        country:
          type: string
          maxLength: 80
          pattern: '[\w\W\s]*'
          example: Brasil
          description: Nome do país
        countryCode:
          type: string
          pattern: '^([A-Z]{3})$'
          maxLength: 3
          example: BRA
          description: Código do país de acordo com o código alpha3 do ISO-3166.
        geographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
    BusinessAccount:
      type: object
      required:
        - compeCode
        - number
        - checkDigit
        - type
      properties:
        compeCode:
          type: string
          maxLength: 3
          pattern: '^\d{3}$'
          description: 'Código identificador atribuído pelo Banco Central do Brasil às instituições participantes do STR (Sistema de Transferência de reservas).O Compe (Sistema de Compensação de Cheques e Outros Papéis) é um sistema que identifica e processa as compensações bancárias. Ele é representado por um código de três dígitos que serve como identificador de bancos, sendo assim, cada instituição bancária possui um número exclusivo'
          example: '001'
        branchCode:
          type: string
          maxLength: 4
          pattern: '^\d{4}$'
          description: |
            Código da Agência detentora da conta. (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, no exercício de atividades da instituição, não podendo ser móvel ou transitória)   
            [Restrição] Obrigatoriamente deve ser preenchido quando o campo "type" for diferente de conta pré paga.
          example: '6272'
        number:
          type: string
          maxLength: 20
          pattern: '^\d{8,20}$'
          description: |
            Número da conta
          example: '24550245'
        checkDigit:
          type: string
          maxLength: 1
          pattern: '[\w\W\s]*'
          description: |
            Dígito da conta
          example: '4'
        type:
          $ref: '#/components/schemas/EnumAccountTypeCustomers'
    PersonalAccount:
      type: object
      description: |
        Lista de contas depósito à vista, poupança e pagamento pré-pagas mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento
      required:
        - compeCode
        - number
        - checkDigit
        - type
        - subtype
      properties:
        compeCode:
          type: string
          maxLength: 3
          pattern: '^\d{3}$'
          description: 'Código identificador atribuído pelo Banco Central do Brasil às instituições participantes do STR (Sistema de Transferência de reservas).O Compe (Sistema de Compensação de Cheques e Outros Papéis) é um sistema que identifica e processa as compensações bancárias. Ele é representado por um código de três dígitos que serve como identificador de bancos, sendo assim, cada instituição bancária possui um número exclusivo'
          example: '001'
        branchCode:
          type: string
          maxLength: 4
          pattern: '^\d{4}$'
          description: |
            Código da Agência detentora da conta. (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, no exercício de atividades da instituição, não podendo ser móvel ou transitória)   
            [Restrição] Obrigatoriamente deve ser preenchido quando o campo "type" for diferente de conta pré paga.
          example: '6272'
        number:
          type: string
          maxLength: 20
          pattern: '^\d{8,20}$'
          description: |
            Número da conta
          example: '24550245'
        checkDigit:
          type: string
          maxLength: 1
          pattern: '[\w\W\s]*'
          description: |
            Dígito da conta
          example: '4'
        type:
          $ref: '#/components/schemas/EnumAccountTypeCustomers'
        subtype:
          type: string
          enum:
            - INDIVIDUAL
            - CONJUNTA_SIMPLES
            - CONJUNTA_SOLIDARIA
          description: |
            Subtipo de conta (vide Enum): 
            Conta individual - possui um único titular
            Conta conjunta simples - onde as movimentações financeiras só podem serem realizadas mediante autorização de TODOS os correntistas da conta.
            Conta conjunta solidária - é a modalidade cujos titulares podem realizar movimentações de forma isolada, isto é, sem que seja necessária a autorização dos demais titulares.
          example: INDIVIDUAL
    PortabilitiesReceived:
      type: object
      required:
        - employerName
        - employerCnpjCpf
        - paycheckBankDetainerCnpj
        - paycheckBankDetainerIspb
        - portabilityApprovalDate
      properties:
        employerName:
          type: string
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          maxLength: 80
          minLength: 2
          description: |
            Nome do empregador conforme recebido pela comunicação de portabilidade.
        employerCnpjCpf:
          type: string
          pattern: '^\d{14}$|^\d{11}$'
          maxLength: 14
          description: |
            Número de inscrição (CPF/CNPJ) do empregador (contratante dos serviços de pagamento), conforme recebido pela comunicação de portabilidade.
        paycheckBankDetainerCnpj:
          type: string
          pattern: '^\d{14}$'
          maxLength: 14
          description: |
            Número de inscrição no Cadastro Nacional da Pessoa Jurídica (CNPJ) do banco folha (instituição financeira detentora da conta salário) conforme recebido pela comunicação de portabilidade.
        paycheckBankDetainerIspb:
          type: string
          pattern: '^[0-9]{8}$'
          maxLength: 8
          description: |
            Número do ISPB do Banco Folha (instituição financeira detentora da conta salário) conforme recebido pela comunicação de portabilidade.
        portabilityApprovalDate:
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          maxLength: 10
          description: |
            Data de aprovação da portabilidade, conforme recebido pela comunicação de portabilidade.

            Obs.: somente devem ser compartilhadas solicitações aprovadas, mesmo que de forma compulsória.
    PaychecksBankLink:
      type: object
      required:
        - employerName
        - employerCnpjCpf
        - paycheckBankCnpj
        - paycheckBankIspb
        - accountOpeningDate
        - portabilityApprovalDate
      properties:
        employerName:
          type: string
          pattern: '^(?!\s)[\w\W\s]*[^\s]$'
          maxLength: 80
          minLength: 2
          description: |
            Nome do empregador conforme registrado na abertura da conta salário.
        employerCnpjCpf:
          type: string
          pattern: '^\d{14}$|^\d{11}$'
          maxLength: 14
          description: |
            Documento do empregador (CNPJ/CPF), conforme registrado na abertura da conta salário.
        paycheckBankCnpj:
          type: string
          pattern: '^\d{14}$'
          maxLength: 14
          description: |
            CNPJ da instituição financeira contratada para prestar serviço de pagamento de salário (banco-folha).
        paycheckBankIspb:
          type: string
          pattern: '^[0-9]{8}$'
          maxLength: 8
          description: |
            Número ISPB (Identificador do Sistema de Pagamentos Brasileiros) do instituição financeira contratada para prestar serviço de pagamento de salário (banco-folha).
        accountOpeningDate:
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          maxLength: 10
          description: |
            Data de abertura da conta salário.
    EconomicActivity:
      type: object
      required:
        - code
        - isMain
      properties:
        code:
          type: string
          pattern: '^\d{7}$'
          maxLength: 7
          minLength: 2
          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: 'Indica se é o ramo principal de atividade da empresa quando true e se é o ramo secundário quando false. [Restrição] Somente uma ocorrência relativa ao código da atividade econômica principal deve trazer o valor true.'
          example: true
    EnumAccountTypeCustomers:
      type: string
      enum:
        - CONTA_DEPOSITO_A_VISTA
        - CONTA_POUPANCA
        - CONTA_PAGAMENTO_PRE_PAGA
      description: |
        Tipos de contas. Modalidades tradicionais previstas pela Resolução 4.753, não contemplando contas vinculadas, conta de domiciliados no exterior, contas em moedas estrangeiras e conta correspondente moeda eletrônica. Vide Enum:

        Conta de depósito à vista ou Conta corrente - é o tipo mais comum. Nela, o dinheiro fica à sua disposição para ser sacado a qualquer momento. Essa conta não gera rendimentos para o depositante.

        Conta poupança - foi criada para estimular as pessoas a pouparem. O dinheiro que ficar na conta por trinta dias passa a gerar rendimentos, com isenção de imposto de renda para quem declara. Ou seja, o dinheiro “cresce” (rende) enquanto ficar guardado na conta. Cada depósito terá rendimentos de mês em mês, sempre no dia do mês em que o dinheiro tiver sido depositado.

        Conta de pagamento pré-paga - segundo CIRCULAR Nº 3.680, BCB de  2013, é a 'destinada à execução de transações de pagamento em moeda eletrônica realizadas com base em fundos denominados em reais previamente aportados'.
      example: CONTA_DEPOSITO_A_VISTA
    EnumAreaCode:
      type: string
      example: '19'
      description: Número de DDD (Discagem Direta à Distância) do telefone do cliente - se houver
      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'
    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
      example: SP
    EnumCustomerPhoneType:
      type: string
      description: Identificação do Tipo de telefone do cliente.
      enum:
        - FIXO
        - MOVEL
        - OUTRO
      example: FIXO
    EnumPersonalDocumentType:
      type: string
      enum:
        - CPF
        - PASSAPORTE
        - AMBOS
      description: |
        Selecionar o tipo de documento que será informado.
      example: AMBOS
    EnumFiliationType:
      type: string
      enum:
        - MAE
        - PAI
      example: PAI
      description: Tipo de filiação.
    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
        - OUTROS
      example: DIARIA
    EnumInformedIncomeFrequency:
      type: string
      enum:
        - DIARIA
        - SEMANAL
        - QUINZENAL
        - MENSAL
        - BIMESTRAL
        - TRIMESTRAL
        - SEMESTRAL
        - ANUAL
        - OUTROS
      description: Traz a frequência ou período da renda informada.
    EnumMaritalStatusCode:
      type: string
      enum:
        - SOLTEIRO
        - CASADO
        - VIUVO
        - SEPARADO_JUDICIALMENTE
        - DIVORCIADO
        - UNIAO_ESTAVEL
        - OUTRO
      example: OUTRO
      description: |
        Estado marital do cliente.
    EnumOccupationMainCodeType:
      type: string
      enum:
        - RECEITA_FEDERAL
        - CBO
        - OUTRO
      example: RECEITA_FEDERAL
      description: |
        Traz a relação dos códigos relativos à ocupação.
    EnumPartiesParticipationDocumentType:
      type: string
      enum:
        - CPF
        - PASSAPORTE
        - OUTRO_DOCUMENTO_VIAGEM
        - CNPJ
      description: |
        Tipo do documento informado. 
    EnumPersonalOtherDocumentType:
      type: string
      enum:
        - CNH
        - RG
        - NIF
        - RNE
        - OUTROS
      description: |
        Relação dos Códigos dos demais documentos pessoa natural.
    EnumProcuratorsTypePersonal:
      type: string
      enum:
        - REPRESENTANTE_LEGAL
        - PROCURADOR
      example: PROCURADOR
      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.
    EnumProductServiceType:
      type: string
      enum:
        - CONTA_DEPOSITO_A_VISTA
        - CONTA_POUPANCA
        - CONTA_PAGAMENTO_PRE_PAGA
        - CARTAO_CREDITO
        - OPERACAO_CREDITO
        - SEGURO
        - PREVIDENCIA
        - INVESTIMENTO
        - OPERACOES_CAMBIO
        - CONTA_SALARIO
        - CREDENCIAMENTO
        - OUTROS
      example: SEGURO
      description: Lista com a relação dos produtos e serviços com contrato vigente.
    EnumSex:
      type: string
      enum:
        - FEMININO
        - MASCULINO
        - OUTRO
      example: FEMININO
      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'
    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'
      required:
        - latitude
        - longitude
      properties:
        latitude:
          description: |
            Informação da Latitude referente a geolocalização informada. Entre -90 e 90.p.ex. '-23.5475000'. (2 casas antes da vírgula, 11 posições)
          type: string
          pattern: '^-?\d{1,2}\.\d{1,9}$'
          maxLength: 13
          example: '-23.5475000'
        longitude:
          description: |
            Informação da Longitude referente a geolocalização informada. Entre -180 e 180. p.ex '-46.6361100'. (3 casas antes da vírgula, 11 posições)
          type: string
          pattern: '^-?\d{1,3}\.\d{1,8}$'
          maxLength: 13
          example: '-46.6361100'
    InformedRevenue:
      type: object
      required:
        - amount
      properties:
        frequency:
          $ref: '#/components/schemas/EnumInformedRevenueFrequency'
        frequencyAdditionalInfo:
          type: string
          maxLength: 100
          pattern: '[\w\W\s]*'
          example: Informações adicionais
          description: |
            Texto livre para complementar informação relativa ao patrimonio.

            [Restrição] Preencher quando frequency for igual OUTROS.
        amount:
          $ref: '#/components/schemas/InformedRevenueAmount'
        year:
          type: number
          maximum: 9999
          example: 2010
          description: 'Ano de referência da Renda, conforme especificação RFC-3339.'
    InformedRevenueAmount:
      type: object
      required:
        - amount
        - currency
      description: Valor do patrimônio informado
      properties:
        amount:
          description: |
            Valor do patrimônio informado. Expresso em valor monetário com no mínimo 2 casas e no máximo 4 casas decimais.
            Patrimônio é o conjunto de bens vinculado a uma pessoa ou a uma entidade.
          type: string
          pattern: '^-?\d{1,15}\.\d{2,4}$'
          maxLength: 21
          minLength: 4
          example: '100000.0400'
        currency:
          type: string
          pattern: '^[A-Z]{3}$'
          maxLength: 3
          description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.'
          example: BRL
    InformedIncome:
      type: object
      required:
        - frequency
        - amount
        - date
      properties:
        frequency:
          $ref: '#/components/schemas/EnumInformedIncomeFrequency'
        amount:
          $ref: '#/components/schemas/InformedIncomeAmount'
        date:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
          description: 'Data da renda, conforme especificação RFC-3339.'
    InformedIncomeAmount:
      type: object
      required:
        - amount
        - currency
      description: Valor total da renda informada
      properties:
        amount:
          description: |
            Valor total da renda informada. Expresso em valor monetário com no mínimo 2 casas e no máximo 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: string
          pattern: '^\d{1,15}\.\d{2,4}$'
          maxLength: 20
          minLength: 4
          example: '100000.0400'
        currency:
          type: string
          pattern: '^[A-Z]{3}$'
          maxLength: 3
          description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.'
          example: BRL
    InformedPatrimonyAmount:
      type: object
      required:
        - amount
        - currency
      description: Valor do patrimônio informado
      properties:
        amount:
          description: |
            Valor do patrimônio informado. Expresso em valor monetário com no mínimo 2 casas e no máximo 4 casas decimais.
            Patrimônio é o conjunto de bens vinculado a uma pessoa ou a uma entidade.
          type: string
          pattern: '^-?\d{1,15}\.\d{2,4}$'
          maxLength: 21
          minLength: 4
          example: '100000.0400'
        currency:
          type: string
          pattern: '^[A-Z]{3}$'
          maxLength: 3
          description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.'
          example: BRL
    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@:%_\+.~#?&\/\/=]*)$'
    Meta:
      type: object
      description: Meta informações referente à 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'
    Nationality:
      type: object
      description: Objeto que agrupa informações relativas à nacionalidade da Pessoa Natural
      required:
        - otherNationalitiesInfo
        - documents
      properties:
        otherNationalitiesInfo:
          type: string
          pattern: '^\S[\s\S]*$'
          maxLength: 40
          example: CAN
          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'
        documents:
          type: array
          items:
            $ref: '#/components/schemas/NationalityOtherDocument'
          description: Lista que traz relação de documentos complementares de pessoas com nacionalidade diferente de brasileira
    NationalityOtherDocument:
      type: object
      required:
        - type
        - number
      properties:
        type:
          type: string
          maxLength: 10
          pattern: '[\w\W\s]*'
          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\s]*'
          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'
        country:
          type: string
          maxLength: 80
          pattern: '[\w\W\s]*'
          example: Brasil
          description: |
            Nome do país.
        additionalInfo:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          description: Campo livre de preenchimento quando necessário.
          example: Informações adicionais.
    PartiesParticipation:
      type: object
      description: |
        Lista relativa às informações das partes envolvidas, como: sócio e /ou administrador
      required:
        - type
        - personType
        - documentType
        - documentNumber
      properties:
        personType:
          type: string
          enum:
            - PESSOA_NATURAL
            - PESSOA_JURIDICA
          description: Indica se a pessoa da parte envolvida é uma pessoa natural ou juridica
        type:
          type: string
          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
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Juan Kaique Cláudio Fernandes
          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)

            [Restrição] O campo civilName deve ser obrigatoriamente preenchido quando personType for PESSOA_JURIDICA.
        socialName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Karina
          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).   
        companyName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Luiza e Benjamin Assessoria Jurídica Ltda
          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

            [Restrição] o campo companyName deve ser obrigatoriamente preenchido quando personType for PESSOA_JURIDICA.
        tradeName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Mundo da Eletronica
          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'
        startDate:
          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: '2021-05-21T08:30:00Z'
          description: 'Data de início da participação, conforme especificação RFC-3339.'
        shareholding:
          type: string
          format: double
          maxLength: 8
          minLength: 8
          pattern: '^[01]\.\d{6}$'
          example: '0.510000'
          description: |
            Percentual de participação societária (informar com 6 casas decimais). O Sócio só deve ser informado se sua participação societária for igual ou superior a 25%. p.ex: 0.250000 (Este valor  representa 25%. O valor '1 'representa 100%).

            [Restrição]: Campo obrigatório caso o type for igual a SOCIO e este tiver participação societária maior que 25%.
        documentType:
          $ref: '#/components/schemas/EnumPartiesParticipationDocumentType'
        documentNumber:
          type: string
          maxLength: 20
          pattern: '[\w\W\s]*'
          example: '73677831148'
          description: Número do documento informado. Campo Texto Livre para preencher número e dígito do documento se houver
        documentAdditionalInfo:
          type: string
          maxLength: 100
          pattern: '[\w\W\s]*'
          example: CNH
          description: 'Campo livre, de preenchimento obrigatório quando o documento informado tiver informações complementares relevantes para a sua identificação'
        documentCountry:
          type: string
          maxLength: 3
          pattern: '[\w\W\s]*'
          example: CAN
          description: |
            País de emissão do documento. Código do pais de acordo com o código alpha3 do ISO-3166.
        documentExpirationDate:
          type: string
          format: date
          maxLength: 10
          example: '2021-05-21'
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          description: 'Data de validade do documento informado, conforme especificação RFC-3339.'
        documentIssueDate:
          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'
          description: 'Data de emissão do documento, conforme especificação RFC-3339.'
    PersonalDocument:
      type: object
      description: Objeto agrupador de informações relativas a Documentos da pessoa natural
      properties:
        cpfNumber:
          type: string
          maxLength: 11
          pattern: '^\d{11}$'
          example: '25872252137'
          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.

            [Restrição] Preenchimento obrigatório quando não for informado o passport.
        passport:
          $ref: '#/components/schemas/PersonalPassport'
    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
        - startDate
        - productsServicesType
        - accounts
        - procurators
      properties:
        updateDateTime:
          type: string
          format: date-time
          maxLength: 20
          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: '2021-05-21T08:30:00Z'
          description: |
            Data e hora da atualização dos campos \<_endpoint_\>, conforme especificação RFC-3339, formato UTC. Quando não existente uma data vinculada especificamente ao bloco, assumir a data e hora de atualização do cadastro como um todo.
        startDate:
          type: string
          format: date-time
          maxLength: 20
          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: '2021-05-21T08:30:00Z'
          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.
        productsServicesType:
          type: array
          items:
            $ref: '#/components/schemas/EnumProductServiceType'
          minItems: 1
          maxItems: 12
        productsServicesTypeAdditionalInfo:
          type: string
          pattern: '^[\w\W]*$'
          maxLength: 100
          example: Informações adicionais do tipo de serviço.
          description: |
            Informações adicionais do tipo de serviço.
            [Restrição] Campo obrigatório quando productsServicesType for 'OUTROS'.
        procurators:
          type: array
          items:
            $ref: '#/components/schemas/PersonalProcurator'
          minItems: 0
          description: |
            Lista dos representantes. 
            [Restrição] De preenchimento obrigatório se houver representante.
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/PersonalAccount'
          minItems: 0
          description: |
            Lista de contas depósito à vista, poupança e pagamento pré-pagas mantidas pelo cliente na instituição transmissora.
        portabilitiesReceived:
          type: array
          items:
            $ref: '#/components/schemas/PortabilitiesReceived'
          minItems: 0
          description: |
            Lista de informações de empregador recebidos através de portabilidade de salário solicitada pelo cliente da transmissora à instituição detentora(s) de sua conta salário, ativos ou que já estiveram ativos,. Cada vínculo é associado a uma portabilidade de salário recebida pela transmissora.
            
            Obs.: a portabilidade não é explicitamente encerrada, ou seja, a IF para a qual o salário foi portado não é avisado quando a conta salário se encerra ou o salário é portado para outra IF. Não é possível garantir que os dados informados sejam de uma portabilidade ativa, nem que o vínculo com o banco folha ainda exista.
        paychecksBankLink:
          type: array
          items:
            $ref: '#/components/schemas/PaychecksBankLink'
          minItems: 0
          description: |
            Lista de informações de contas salário relacionadas com vínculos empregatícios, existentes ou que já existiram, firmados entre o cliente pessoa natural e um ou mais empregadores. Cada vínculo é associado a uma conta salário aberta mantida no banco-folha (instituição transmissora).

            Obs: como empregadores antigos podem não ter solicitado o fechamento da conta salário, não é possível garantir que os dados informados sejam do empregador atual.
    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
        - brandName
        - civilName
        - birthDate
        - documents
        - hasBrazilianNationality
        - contacts
        - companiesCnpj
      properties:
        updateDateTime:
          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: '2021-05-21T08:30:00Z'
          description: |
            Data e hora da atualização dos campos \<_endpoint_\>, conforme especificação RFC-3339, formato UTC. Quando não existente uma data vinculada especificamente ao bloco, assumir a data e hora de atualização do cadastro como um todo.
        personalId:
          type: string
          pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$'
          maxLength: 100
          minLength: 1
          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
        brandName:
          type: string
          maxLength: 80
          pattern: '[\w\W\s]*'
          example: Organização A
          description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).'
        civilName:
          type: string
          maxLength: 70
          pattern: '^[\w\W]*$'
          example: Juan Kaique Cláudio Fernandes
          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)'
        socialName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Jaqueline de Freitas
          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)'
        birthDate:
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '1989-03-23'
          description: 'Data de nascimento, conforme especificação RFC-3339'
        maritalStatusCode:
          $ref: '#/components/schemas/EnumMaritalStatusCode'
        maritalStatusAdditionalInfo:
          type: string
          pattern: '[\w\W\s]*'
          maxLength: 50
          example: Amasiado
          description: |
            Campo livre para complementar a informação relativa ao estado marital.

            [Restrição] Preenchimento obrigatório quando selecionado o tipo 'OUTRO'.
        sex:
          $ref: '#/components/schemas/EnumSex'
        companiesCnpj:
          type: array
          minItems: 1
          items:
            type: string
            pattern: '^\d{14}$'
            maxLength: 14
          example:
            - '01773247000103'
            - '01773247000563'
          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
        documents:
          $ref: '#/components/schemas/PersonalDocument'
        otherDocuments:
          type: array
          items:
            $ref: '#/components/schemas/PersonalOtherDocument'
          minItems: 1
          description: Relação dos demais documentos
        hasBrazilianNationality:
          type: boolean
          example: false
          description: Informa se o Cliente tem nacionalidade brasileira.
        nationality:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/Nationality'
        filiation:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - type
              - civilName
            properties:
              type:
                $ref: '#/components/schemas/EnumFiliationType'
              civilName:
                type: string
                maxLength: 70
                pattern: '^[\w\W]*$'
                example: Marcelo Cláudio Fernandes
                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).
              socialName:
                type: string
                maxLength: 70
                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 Local).
        contacts:
          $ref: '#/components/schemas/PersonalContacts'
    PersonalOtherDocument:
      type: object
      required:
        - type
        - number
      properties:
        type:
          $ref: '#/components/schemas/EnumPersonalOtherDocumentType'
        typeAdditionalInfo:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: CREA-RJ
          description: Campo livre de preenchimento obrigatório se selecionada a opção OUTROS tipos de documentos
        number:
          type: string
          maxLength: 40
          pattern: '[\w\W\s]*'
          example: '15291908'
          description: Identificação/Número do documento informado
        checkDigit:
          type: string
          maxLength: 2
          pattern: '[\w\W\s]*'
          example: P
          description: Dígito verificador do documento informado. De preenchimento obrigatório se o documento informado tiver dígito verificador
        additionalInfo:
          type: string
          maxLength: 50
          pattern: '[\w\W\s]*'
          example: SSP/SP
          description: |
            Para documentos em que se aplique o uso do local de emissão o mesmo deve ser enviado mandatoriamente, com a informação de órgão e UF. Exemplo: RG, local de emissão: SSP/RS.
            [Restrição] Obrigatório quando o Local de Emissão do Documento for relevante.
        expirationDate:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
          description: 'Data de validade do documento informado, conforme especificação RFC-3339.'
    PersonalProcurator:
      type: object
      required:
        - type
        - cpfNumber
        - civilName
      properties:
        type:
          $ref: '#/components/schemas/EnumProcuratorsTypePersonal'
        cpfNumber:
          type: string
          maxLength: 11
          pattern: '^\d{11}$'
          example: '73677831148'
          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'
        civilName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Elza Milena Stefany Teixeira
          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)'
        socialName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Carlos
          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)'
    PersonalPassport:
      type: object
      description: |
        Documento concedido aos viajantes por uma autoridade administrativa nacional a fim de certificar sua identidade perante autoridades estrangeiras. 

        [Restrição] Aplicável somente à Pessoa natural residente no exterior desobrigada de inscrição no CPF.

        [Restrição] Preenchimento obrigatório quando não for informado o cpfNumber.
      required:
        - number
        - country
      properties:
        number:
          type: string
          maxLength: 20
          pattern: '^[\w\W]*$'
          example: '75253468744594820620'
          description: |
            Número do Passaporte. 
        country:
          type: string
          maxLength: 3
          pattern: '^(\w{3}){1}$'
          example: CAN
          description: |
            Pais de emissão do passaporte. Código do pais de acordo com o código 'alpha3' do ISO-3166.
        expirationDate:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
          description: |
            Data vigência do Passaporte, conforme especificação RFC-3339.
        issueDate:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2021-05-21'
          description: |
            Data de emissão do passaporte, conforme especificação RFC-3339.
    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
        - companyCnpj
      properties:
        updateDateTime:
          type: string
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
          description: |
            Data e hora da atualização dos campos \<_endpoint_\>, conforme especificação RFC-3339, formato UTC. Quando não existente uma data vinculada especificamente ao bloco, assumir a data e hora de atualização do cadastro como um todo.
        companyCnpj:
          type: string
          pattern: '^\d{14}$'
          maxLength: 14
          example: '50685362000135'
          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
        occupationCode:
          $ref: '#/components/schemas/EnumOccupationMainCodeType'
        occupationDescription:
          type: string
          maxLength: 100
          pattern: '[\w\W\s]*'
          example: '01'
          description: |
            Campo livre, de preenchimento obrigatório. Se selecionada a opção *occupationCode* "RECEITA_FEDERAL" ou "CBO", informar o código desta lista padronizada.   
            Se selecionada *occupationCode* "OUTRO", informar o descritivo da ocupação quando a IF não segue a lista padronizada da Receita Federal e nem da CBO.
        informedIncome:
          $ref: '#/components/schemas/InformedIncome'
        informedPatrimony:
          $ref: '#/components/schemas/PersonalInformedPatrimony'
    ResponseBusinessCustomersFinancialRelation:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/BusinessFinancialRelationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponseBusinessCustomersIdentification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/BusinessIdentificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponseBusinessCustomersQualification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/BusinessQualificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    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:
          $ref: '#/components/schemas/Meta'
    ResponsePersonalCustomersFinancialRelation:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/PersonalFinancialRelationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponsePersonalCustomersIdentification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/PersonalIdentificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponsePersonalCustomersQualification:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/PersonalQualificationData'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    XFapiInteractionId:
      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.'
  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\s]*'
        maxLength: 2048
    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\s]*'
        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\s]*'
        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
    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
        maximum: 2147483647
        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: 1000
    pagination-key:
      name: pagination-key
      in: query
      description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.'
      schema:
        type: string
        maxLength: 2048
        pattern: '[\w\W\s]*'
  securitySchemes:
    OpenId:
      type: openIdConnect
      openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration'
    OAuth2Security:
      type: oauth2
      description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados.
      flows:
        authorizationCode:
          authorizationUrl: 'https://authserver.example/authorization'
          tokenUrl: 'https://authserver.example/token'
          scopes:
            customers: Escopo necessário para acesso à API Customers. O controle dos endpoints específicos é feito via permissions.
  responses:
    OKResponsePersonalCustomersIdentification:
      description: Dados sobre identificação pessoa física.
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponsePersonalCustomersIdentification'
    OKResponsePersonalCustomersQualification:
      description: Dados sobre qualificação da pessoa física
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
      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/schemas/XFapiInteractionId'
      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/schemas/XFapiInteractionId'
      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/schemas/XFapiInteractionId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseBusinessCustomersQualification'
    OKResponseBusinessCustomersFinancialRelation:
      description: Dados sobre relacionamento pessoa jurídica
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
      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'
    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'
    InternalServerError:
      description: Ocorreu um erro no gateway da API ou no microsserviço
      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/ResponseError'
    Locked:
      description: Locked
      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'
    UnprocessableEntity:
      description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    Default:
      description: Erro inesperado.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
