﻿openapi: 3.0.0
info:
  title: APIs OpenData do Open Banking Brasil
  description: As APIs descritas neste documento são referentes as APIs da fase OpenData do Open Banking Brasil.
  version: 1.0.0-rc5.2
  contact:
    email: "apiteam@swagger.io"
tags:
  - name: "Channels"
    description: "Operações para listagem de canais de atendimentos"
servers:
  - url: http://api.banco.com.br/open-banking/channels/v1
paths:
  /banking-agents:
    get:
      tags:
        - "Channels"
      summary: Obtém a lista de correspondentes bancários da instituição financeira.
      description: "Método para obter a lista de correspondentes bancários da instituição financeira."
      operationId: "getBankingAgents"
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de correspondentes bancários obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBankingAgentsList'
  /branches:
    get:
      tags:
        - "Channels"
      summary: Obtém a lista de dependências próprias da instituição financeira.
      description: "Método para obter a lista de dependências próprias da instituição financeira."
      operationId: "getBranches"
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de dependências próprias obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBranchesList'
  /electronic-channels:
    get:
      tags:
        - "Channels"
      summary: Obtém a lista de canais eletrônicos de atendimento da instituição financeira.
      description: "Método para obter a lista de canais eletrônicos de atendimento da instituição financeira."
      operationId: "getElectronicChannels"
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de canais eletrônicos de atendimento obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseElectronicChannelsList'
  /phone-channels:
    get:
      tags:
        - "Channels"
      summary: "Obtém a lista de canais telefônicos de atendimento da instituição financeira."
      description: "Método para obter a lista de canais telefônicos de atendimento da instituição financeira."
      operationId: "getPhoneChannels"
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de canais telefônicos de atendimento obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePhoneChannelsList'
  /shared-automated-teller-machines:
    get:
      tags:
        - "Channels"
      summary: "Obtém a lista de terminais compartilhados de autoatendimento."
      description: "Método para obter a lista de terminais compartilhados de autoatendimento da instituição financeira."
      operationId: "getSharedAutomatedTellerMachines"
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/pageSize"
      responses:
        '200':
          description: Lista de terminais compartilhados de autoatendimento obtida com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSharedAutomatedTellerMachinesList'
components:
  schemas:
    ResponseBankingAgentsList:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          required:
            - brand
          properties:
            brand:
              $ref: '#/components/schemas/BankingAgentsBrand'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      example:
        data:
          brand:
            name: 'Organização A'
            companies:
              - name: 'Empresa A1'
                cnpjNumber: '45086338000178'
                contractors:
                  - name: 'Empresa Contratante 1'
                    cnpjNumber: '99558332000137'
                    bankingAgents:
                      - identification:
                          corporationName: 'Empresa Correspondente A'
                          groupName: 'Grupo Master'
                          cnpjNumber: '02345876000299'
                          isUnderestablishment: true
                        locations:
                          - postalAddress:
                              address: 'Av Tasuko Ykeda, 25'
                              districtName: 'Centro'
                              townName: 'Marília'
                              countrySubDivision: 'SP'
                              postCode: '17500001'
                              additionalInfo: "Loja B."
                              ibgeCode: "3550308"
                              country: "Brasil"
                              countryCode: "BRA"
                              geographicCoordinates:
                                latitude: "-90.8365180"
                                longitude: "-180.836519"
                            phones:
                              - type: 'FIXO'
                                countryCallingCode: '55'
                                areaCode: '14'
                                number: '35721199'
                              - type: 'MOVEL'
                                countryCallingCode: '55'
                                areaCode: '14'
                                number: '997865532'
                            availability:
                              standards:
                                - weekday: SEGUNDA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: TERCA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: QUARTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: QUINTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: SEXTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                              exception: 'Exceto feriados municipais, estaduais e nacionais'
                              isPublicAccessAllowed: true
                          - postalAddress:
                              address: 'R Yroshima Takasi, 72'
                              districtName: 'Altos da Colina'
                              townName: 'Marília'
                              countrySubDivision: 'SP'
                              postCode: '17526760'
                              additionalInfo: "Loja 2."
                              ibgeCode: "3550308"
                              country: "Brasil"
                              countryCode: "BRA"
                              geographicCoordinates:
                                latitude: "-90.8365180"
                                longitude: "-180.836519"
                            phones:
                              - type: 'FIXO'
                                countryCallingCode: '55'
                                areaCode: '14'
                                number: '64721199'
                            availability:
                              standards:
                                - weekday: SEGUNDA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: TERCA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: QUARTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: QUINTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: SEXTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                              exception: 'Exceto feriados municipais, estaduais e nacionais'
                              isPublicAccessAllowed: true
                          - postalAddress:
                              address: 'Al Nasso Origami, 15, bloco A'
                              districtName: 'Centro'
                              townName: 'Marília'
                              countrySubDivision: 'SP'
                              postCode: '17500001'
                              additionalInfo: "Loja B."
                              ibgeCode: "3550308"
                              country: "Brasil"
                              countryCode: "BRA"
                              geographicCoordinates:
                                latitude: "-90.8365180"
                                longitude: "-180.836519"
                            availability:
                              standards:
                                - weekday: SEGUNDA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: TERCA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: QUARTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: QUINTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                                - weekday: SEXTA_FEIRA
                                  openingTime: '10:00:57Z'
                                  closingTime: '16:00:57Z'
                              exception: 'Exceto feriados municipais, estaduais e nacionais'
                              isPublicAccessAllowed: true
                        services:
                          - name: 'RECEPCAO_ENCAMINHAMENTO_PROPOSTAS_ABERTURA_CONTAS_DEPOSITOS_VISTA_PRAZO_POUPANCA_MANTIDOS_INSTITUICAO_CONTRATANTE'
                            code: 'RECEBE_ENCAMINHA_PROPOSTAS_ABERTURA_CONTAS'
                            additionalInfo: 'NA'
                          - name: 'REALIZACAO_RECEBIMENTOS_PAGAMENTOS_TRANSFERENCIAS_ELETRONICAS_VISANDO_MOVIMENTACAO_CONTAS_DEPOSITOS_TITULARIDADE_CLIENTES_MANTIDAS_INSTITUICAO_CONTRATANTE'
                            code: 'REALIZA_RECEBIMENTOS_PAGAMENTOS_TRANSFERENCIAS_ELETRONICAS'
                            additionalInfo: 'NA'
                          - name: 'RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA_OUTRAS_ATIVIDADES_DECORRENTES_EXECUCAO_CONTRATOS_CONVENIOS_PRESTACAO_SERVICOS'
                            code: 'RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA_EXECUCAO_CONTRATOS_CONVENIO'
                            additionalInfo: 'NA'
        links:
          self: 'https://api.banco.com.br/open-banking/channels/v1/banking-agents'
          first: 'https://api.banco.com.br/open-banking/channels/v1/banking-agents'
          prev: "null"
          next: "null"
          last: 'https://api.banco.com.br/open-banking/channels/v1/banking-agents'
        meta:
          totalRecords: 1
          totalPages: 1
    BankingAgentsBrand:
      type: object
      required:
        - name
        - companies
      allOf:
        - $ref: '#/components/schemas/Brand'
      properties:
        name:
          type: string
          description: Nome da marca selecionada pela Organização proprietário da dependência (titular).
          maxLength: 80
        companies:
          type: array
          items:
            $ref: '#/components/schemas/BankingAgentsCompanies'
          minItems: 1
          description: Lista de instituições pertencentes à marca
    BankingAgentsCompanies:
      type: object
      required:
        - name
        - cnpjNumber
        - contractors
      properties:
        name:
          type: string
          maxLength: 80
          pattern: \w*\W*
          description: Nome da Instituição, pertencente à marca, responsável pelo Correspondente Bancário no país.
          example: 'Empresa da Organização A'
        contractors:
          type: array
          items:
            $ref: '#/components/schemas/BankingAgentsContractor'
          minItems: 1
          description: Relação de informações de um contratante do serviço de correspondente.
      allOf:
        - $ref: '#/components/schemas/CNPJ'
    BankingAgentsContractor:
      type: object
      required:
        - name
        - cnpjNumber
      properties:
        name:
          type: string
          maxLength: 100
          pattern: \w*\W*
        bankingAgents:
          type: array
          items:
            $ref: '#/components/schemas/BankingAgent'
          minItems: 1
      allOf:
        - $ref: '#/components/schemas/CNPJ'
    ResponseBranchesList:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          required:
            - brand
          properties:
            brand:
              $ref: '#/components/schemas/BranchesBrand'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      example:
        data:
          brand:
            name: Organização A
            companies:
              - name: Empresa A1
                cnpjNumber: '45086338000178'
                urlComplementaryList: 'https://empresaa1.com/branches-banking'
                branches:
                  - identification:
                      type: 'AGENCIA'
                      code: '0001'
                      checkDigit: '9'
                      name: 'Marília'
                      relatedBranch: '0001'
                      openingDate: '2010-01-02'
                    postalAddress:
                      address: 'Av Naburo Ykesaki, 1270'
                      additionalInfo: 'Loja B'
                      districtName: 'Centro'
                      townName: 'Marília'
                      ibgeCode: '3550308'
                      countrySubDivision: 'SP'
                      postCode: '17500-001'
                      country: 'Brasil'
                      countryCode: 'BRA'
                      geographicCoordinates:
                        latitude: "-90.8365180"
                        longitude: "-180.836519"
                    availability:
                      standards:
                        - weekday: SEGUNDA_FEIRA
                          openingTime: '10:00:57Z'
                          closingTime: '16:00:57Z'
                        - weekday: TERCA_FEIRA
                          openingTime: '10:00:57Z'
                          closingTime: '16:00:57Z'
                        - weekday: QUARTA_FEIRA
                          openingTime: '10:00:57Z'
                          closingTime: '16:00:57Z'
                        - weekday: QUINTA_FEIRA
                          openingTime: '10:00:57Z'
                          closingTime: '16:00:57Z'
                        - weekday: SEXTA_FEIRA
                          openingTime: '10:00:57Z'
                          closingTime: '16:00:57Z'
                      exception: 'Exceto feriados municipais, estaduais e nacionais'
                      isPublicAccessAllowed: true
                    phones:
                      - type: FIXO
                        countryCallingCode: '55'
                        areaCode: '14'
                        number: '35721199'
                      - type: MOVEL
                        countryCallingCode: '55'
                        areaCode: '14'
                        number: '997865532'
                    services:
                      - name: "RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA"
                        code: "RECEBE_PAGA_QUALQUER_NATUREZA"
                      - name: "OUTROS_PRODUTOS_SERVICOS"
                        code: "OUTROS_PRODUTOS_SERVICOS"
                        additionalInfo: "Renegociação"
        links:
          self: 'https://api.banco.com.br/open-banking/channels/v1/branches'
          first: 'https://api.banco.com.br/open-banking/channels/v1/branches'
          prev: "null"
          next: "null"
          last: 'https://api.banco.com.br/open-banking/channels/v1/branches'
        meta:
          totalRecords: 1
          totalPages: 1
    BranchesBrand:
      type: object
      required:
        - name
        - companies
      properties:
        name:
          type: string
          description: Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a 'marca' é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes.
          maxLength: 80
          pattern: \w*\W*
        companies:
          type: array
          items:
            $ref: '#/components/schemas/BranchesCompany'
          minItems: 1
          description: Companies traz uma lista de todas as instuituições da Marca.
    BranchesCompany:
      type: object
      required:
        - name
        - cnpjNumber
      properties:
        name:
          type: string
          maxLength: 80
          pattern: \w*\W*
        cnpjNumber:
          type: string
          minLength: 14
          maxLength: 14
          pattern: '^(\d{14})$|^NA$'
          description: |
            Número completo do CNPJ da instituição responsável pela dependência - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica.
            Deve-se ter apenas os números do CNPJ, sem máscara
          example: '45086338000178'
        urlComplementaryList:
          type: string
          maxLength: 1024
          pattern: \w*\W*
          example: 'https://example.com/mobile-banking'
        branches:
          type: array
          items:
            $ref: '#/components/schemas/Branch'
          minItems: 1
          description: Lista de Dependências de uma Instituição
      allOf:
        - $ref: '#/components/schemas/CNPJ'
    ResponseElectronicChannelsList:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          required:
            - brand
          properties:
            brand:
              $ref: '#/components/schemas/ElectronicChannelsBrand'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      example:
        data:
          brand:
            name: 'Organização A'
            companies:
              - name: 'Empresa A1'
                cnpjNumber: '45086338000178'
                urlComplementaryList: 'https://empresaa1.com/branches-banking'
                electronicChannels:
                  - identification:
                      type: 'INTERNET_BANKING'
                      additionalInfo: 'NA'
                      urls:
                        - 'https://empresaa1.com/internet-banking'
                    services:
                      - name: "ABERTURA_CONTAS_DEPOSITOS_OU_PAGAMENTO_PRE_PAGA"
                        code: "ABRE_CONTA_DEPOSITO_OU_PRE_PAGA"
                        additionalInfo: 'NA'
                      - name: "SEGUROS"
                        code: "SEGUROS"
                        additionalInfo: 'NA'
        links:
          self: 'https://api.banco.com.br/open-banking/channels/v1/electronic-channels'
          first: 'https://api.banco.com.br/open-banking/channels/v1/electronic-channels'
          prev: "null"
          next: "null"
          last: 'https://api.banco.com.br/open-banking/channels/v1/electronic-channels'
        meta:
          totalRecords: 1
          totalPages: 1
    ElectronicChannelsBrand:
      type: object
      required:
        - name
        - companies
      properties:
        name:
          type: string
          description: Nome da marca selecionada pela Organização proprietária da dependência (titular).
          example: "Marca A"
          maxLength: 80
          pattern: \w*\W*
        companies:
          type: array
          items:
            $ref: '#/components/schemas/ElectronicChannelsCompanies'
          minItems: 1
          description: Lista de instituições pertencentes à marca
    ElectronicChannelsCompanies:
      type: object
      required:
        - name
        - electronicChannels
        - cnpjNumber
      properties:
        name:
          type: string
          description: Nome da marca selecionada pela Organização proprietária da dependência (titular).
          example: "Empresa da Marca A"
          maxLength: 80
          pattern: \w*\W*
        urlComplementaryList:
          type: string
          maxLength: 1024
          pattern: \w*\W*
          example: "https://example.com/mobile-banking"
        electronicChannels:
          type: array
          items:
            $ref: '#/components/schemas/ElectronicChannel'
          minItems: 1
          maxItems: 4
          description: Lista  de canais de atendimento eltrônico
      allOf:
        - $ref: '#/components/schemas/CNPJ'
    BankingAgent:
      type: object
      required:
        - identification
        - locations
        - services
      properties:
        identification:
          $ref: '#/components/schemas/BankingAgentIdentification'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/BankingAgentLocation'
          minItems: 1
          description: Relação de informações referentes as localizações dos Correspondentes bancários.
        services:
          type: array
          items:
            $ref: '#/components/schemas/BankingAgentService'
          minItems: 1
          maxItems: 20
          description: "Traz a relação de serviços disponbilizados pelo Canal de Atendimento"
    BankingAgentIdentification:
      type: object
      properties:
        corporationName:
          type: string
          maxLength: 100
          pattern: \w*\W*
        groupName:
          type: string
          maxLength: 100
          pattern: \w*\W*
        isUnderestablishment:
          type: boolean
          description: Indicador do Correspondente Bancário ser um Substabelecimento (são empresas  que foram contratadas por um correspondente bancário para prestar serviços. A empresa substabelecida é tratada como um correspondente do banco e tem praticamente os mesmos direitos e obrigações que possui o correspondente direto)
      allOf:
        - $ref: '#/components/schemas/CNPJ'
      required:
        - cnpjNumber
        - corporationName
    BankingAgentLocation:
      type: object
      required:
        - postalAddress
      properties:
        postalAddress:
          $ref: '#/components/schemas/BankingAgentPostalAddress'
        availability:
          $ref: '#/components/schemas/BankingAgentAvailability'
        phones:
          type: array
          items:
            $ref: '#/components/schemas/Phone'
    BankingAgentPostalAddress:
      type: object
      required:
        - address
        - districtName
        - townName
        - countrySubDivision
        - postCode
      allOf:
        - $ref: '#/components/schemas/PostalAddress'
    BankingAgentAvailability:
      type: object
      properties:
        standards:
          type: array
          items:
            required:
              - weekday
            properties:
              weekday:
                type: string
                enum:
                  - DOMINGO
                  - SEGUNDA_FEIRA
                  - TERCA_FEIRA
                  - QUARTA_FEIRA
                  - QUINTA_FEIRA
                  - SEXTA_FEIRA
                  - SABADO
                description: Dia da semana de abertura
              openingTime:
                type: string
                description: Horário de abertura (UTC)
                maxLength: 13
                pattern: ^(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)|Z$
              closingTime:
                type: string
                description: Horário de fechamento (UTC)
                maxLength: 13
                pattern: ^(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)|Z$
        exception:
          type: string
          maxLength: 2000
          pattern: \w*\W*
          example: Exceto feriados municipais, nacionais e estaduais
        isPublicAccessAllowed:
          type: boolean
          example: false
    BankingAgentService:
      type: object
      properties:
        name:
          type: string
          enum:
            - RECEPCAO_ENCAMINHAMENTO_PROPOSTAS_ABERTURA_CONTAS_DEPOSITOS_VISTA_PRAZO_POUPANCA_MANTIDOS_INSTITUICAO_CONTRATANTE
            - REALIZACAO_RECEBIMENTOS_PAGAMENTOS_TRANSFERENCIAS_ELETRONICAS_VISANDO_MOVIMENTACAO_CONTAS_DEPOSITOS_TITULARIDADE_CLIENTES_MANTIDAS_INSTITUICAO_CONTRATANTE
            - RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA_OUTRAS_ATIVIDADES_DECORRENTES_EXECUCAO_CONTRATOS_CONVENIOS_PRESTACAO_SERVICOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGAMENTO_CURSADAS_INTERMEDIO_INSTITUICAO_CONTRATANTE_SOLICITACAO_CLIENTES_USUARIOS
            - RECEPCAO_ENCAMINHAMENTO_PROPOSTAS_OPERACAO_CREDITO_ARRENDAMENTO_MERCANTIL_CONCESSAO_INSTITUICAO_CONTRATANTE
            - RECEBIMENTOS_PAGAMENTOS_RELACIONADOS_LETRAS_CAMBIO_ACEITE_INSTITUICAO_CONTRATANTE
            - RECEPCAO_ENCAMINHAMENTO_PROPOSTAS_FORNECIMENTO_CARTAO_CREDITO_RESPONSABILIDADE_INSTITUICAO_CONTRATANTE
            - REALIZACAO_OPERACOES_CAMBIO_RESPONSABILIDADE_INSTITUICAO_CONTRATANTE
            - OUTROS
          description: "Relação dos Nomes de serviços prestados pelo Correspondente"
        code:
          type: string
          enum:
            - RECEBE_ENCAMINHA_PROPOSTAS_ABERTURA_CONTAS
            - REALIZA_RECEBIMENTOS_PAGAMENTOS_TRANSFERENCIAS_ELETRONICAS
            - RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA_EXECUCAO_CONTRATOS_CONVENIO
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGAMENTO
            - RECEBE_ENCAMINHA_PROPOSTAS_CREDITO_ARRENDAMENTO_MERCANTIL
            - RECEBE_PAGAMENTOS_RELACIONADOS_LETRAS_CAMBIO_ACEITE_INSTITUICAO
            - RECEBE_ENCAMINHA_PROPOSTAS_FORNECIMENTO_CARTAO_CREDITO
            - REALIZA_OPERACOES_CAMBIO
            - OUTROS
          description: ">
            Relação dos Códigos relativos aos serviços prestados pelo Correspondente
            \n* `RECEBE_ENCAMINHA_PROPOSTAS_ABERTURA_CONTAS` - Recepção e encaminhamento de propostas de abertura de contas
            \n* `REALIZA_RECEBIMENTOS_PAGAMENTOS_TRANSFERENCIAS_ELETRONICAS` - Realização de recebimentos, pagamentos e transferências eletrônicas
            \n* `RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA_EXECUCAO_CONTRATOS_CONVENIO` - Recebimentos e pagamentos de qualquer natureza
            \n* `EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGAMENTO` - Execução ativa e passiva de ordens de pagamento
            \n* `RECEBE_ENCAMINHA_PROPOSTAS_CREDITO_ARRENDAMENTO_MERCANTIL` - Recepção e encaminhamento de propostas de operações de crédito e de arrendamento mercantil
            \n* `RECEBE_PAGAMENTOS_RELACIONADOS_LETRAS_CAMBIO_ACEITE_INSTITUICAO` - Recebimento e pagamentos relacionados a letras de câmbio de aceite da instituição
            \n* `RECEBE_ENCAMINHA_PROPOSTAS_FORNECIMENTO_CARTAO_CREDITO` - Recepção e encaminhamento de propostas de fornecimento de cartões de crédito
            \n* `REALIZA_OPERACOES_CAMBIO` - Realização de operações de câmbio
            \n* `OUTROS` - Outros"
        additionalInfo:
          type: string
          maxLength: 2000
          pattern: \w*\W*
          description: Campo aberto para detalhamento
      required:
        - name
        - code
    Branch:
      type: object
      description: Dependência de instituições financeiras e demais instituições, autorizadas a funcionar pelo Banco Central do Brasil, destinada à prática das atividades para as quais a instituição esteja regularmente habilitada.
      required:
        - identification
        - postalAddress
        - availability
        - services
      properties:
        identification:
          $ref: '#/components/schemas/BranchIdentification'
        postalAddresses:
          $ref: '#/components/schemas/BranchPostalAddress'
        availability:
          $ref: '#/components/schemas/BranchAvailability'
        phones:
          type: array
          items:
            $ref: '#/components/schemas/BranchPhone'
          minItems: 1
          description: Lista de telefones da Dependência
        services:
          type: array
          description: Traz a relação de serviços disponbilizados pelo Canal de Atendimento
          items:
            $ref: '#/components/schemas/BranchService'
          minItems: 1
          maxItems: 20
    BranchPostalAddress:
      type: object
      required:
        - address
        - districtName
        - townName
        - countrySubDivision
        - postCode
      allOf:
        - $ref: '#/components/schemas/PostalAddress'
    BranchPhone:
      type: object
      required:
        - type
      allOf:
        - $ref: '#/components/schemas/Phone'
    BranchIdentification:
      type: object
      properties:
        type:
          type: string
          enum:
            - AGENCIA
            - POSTO_ATENDIMENTO
            - POSTO_ATENDIMENTO_ELETRONICO
            - UNIDADE_ADMINISTRATIVA_DESMEMBRADA
          description: " >
            Tipo da dependência, segundo a regulamentação do Bacen,  na Resolução Nº 4072, de 26 de abril de 2012:
            Dependência de instituições financeiras e demais instituições, autorizadas a funcionar pelo Banco Central do Brasil, destinada à prática das atividades para as quais a instituição esteja regularmente habilitada.
            \n* `AGENCIA`: 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;
            \n* `POSTO_ATENDIMENTO`: Posto de Atendimento é a dependência subordinada a agência  ou à sede da instituição financeira, destinada ao atendimento ao público no exercício de uma ou mais de suas atividades, podendo ser fixo ou móvel. Segundo Art.15. Os Postos de Atendimento Bancário (PAB), Postos Avançados de Atendimento (PAA), Postos de Atendimento Transitórios (PAT), Postos de Compra de Ouro (PCO), Postos de Atendimento Cooperativo (PAC), Postos de Atendimento de Microcrédito (PAM), Postos Bancários de Arrecadação e Pagamento (PAP) e os Postos de Câmbio atualmente em funcionamento serão considerados PA.
            \n* `POSTO_ATENDIMENTO_ELETRONICO`: Posto de Atendimento Eletrônico é a dependência constituída por um ou mais terminais de autoatendimento, subordinada a agência ou à sede da instituição, destinada à prestação de serviços por meio eletrônico, podendo ser fixo ou móvel, permanente ou transitório
            \n* `UNIDADE_ADMINISTRATIVA_DESMEMBRADA `: Unidade Administrativa Desmembrada (UAD) segundo a Resolução 4072 , BCB, 2012, no Art. 8º \"... é dependência destinada à execução de atividades administrativas da instituição, vedado o atendimento ao público\""
        code:
          type: string
          maxLength: 4
          pattern: ^\d{4}$|^NA$
          description: Código identificador da dependência
        checkDigit:
          type: string
          maxLength: 1
          pattern: \w*\W*
          description: Dígito verificador do código da dependência
        name:
          type: string
          maxLength: 100
          pattern: \w*\W*
          description: Nome da dependência
        relatedBranch:
          type: string
          maxLength: 4
          pattern: ^\d{4}$
          description: Código da agência vinculada ao Posto de Atendimento - se aplicável
        openingDate:
          type: string
          maxLength: 10
          pattern: ^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$
          description: Data de abertura da dependência (uma string com data conforme especificação RFC-3339. p.ex. 2014-03-19)
      required:
        - type
        - code
        - checkDigit
        - name
    BranchAvailability:
      type: object
      properties:
        standards:
          type: array
          description: Lista disponibilidade padrão da depêndencia por dias da semana
          items:
            properties:
              weekday:
                type: string
                enum:
                  - DOMINGO
                  - SEGUNDA_FEIRA
                  - TERCA_FEIRA
                  - QUARTA_FEIRA
                  - QUINTA_FEIRA
                  - SEXTA_FEIRA
                  - SABADO
                description: Dia da semana de abertura da dependência bancária
              openingTime:
                type: string
                description: Horário de abertura da dependência bancária (UTC)
                maxLength: 13
                pattern: ^(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)|Z$|^NA$
              closingTime:
                type: string
                description: Horário de fechamento da dependência bancária (UTC)
                maxLength: 13
                pattern: ^(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)|Z$|^NA$
            required:
              - weekday
              - openingTime
              - closingTime
          minItems: 1
          maxItems: 7
        exception:
          type: string
          maxLength: 2000
          pattern: \w*\W*
          description: Em campo texto devem ser registradas todas as Exceções para o não atendimento.
        isPublicAccessAllowed:
          type: boolean
          description: Indica se a instalação da Dependência tem acesso restrito a clientes.
      required:
        - standards
        - exception
    BranchService:
      type: object
      properties:
        name:
          type: string
          enum:
            - ABERTURA_CONTAS_DEPOSITOS_OU_PAGAMENTO_PRE_PAGA
            - SAQUE_MOEDA_EM_ESPECIE
            - RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_VISANDO_MOVIMENTACAO_CONTAS_DEPOSITOS_OU_PAGAMENTO_TITULARIDADE_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS_CONTAS_PAGAMENTOS
            - APLICACOES_RESGATES_INVESTIMENTOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGAMENTO_SOLICITACAO_CLIENTES_USUARIOS
            - DEPOSITOS_MOEDA_ESPECIE_CHEQUE
            - OPERACOES_CREDITO_BEM_COMO_OUTROS_SERVICOS_PRESTADOS_ACOMPANHAMENTO_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERACOES_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDA_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDA_CHEQUE_CHEQUE_VIAGEM_BEM_COMO_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDA_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: Nome dos Serviços efetivamente prestados pelo Canal de Atendimento
        code:
          type: string
          enum:
            - ABRE_CONTA_DEPOSITO_OU_PRE_PAGA
            - SAQUE_MOEDA_ESPECIE
            - RECEBE_PAGA_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_MOVIMENTA_CONTAS_DEPOSITOS_OU_PAGTO_TITULARES_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS_PAGTOS
            - APLICA_RESGATA_INVESTIMENTOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGTO
            - DEPOSITO_MOEDA_ESPECIE_CHEQUE
            - OPERA_CREDITO_OUTROS_SERVICOS_ACOMPANHA_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERA_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDA_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDA_CHEQUE_CHEQUE_VIAGEM_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDA_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: Código dos Serviços efetivamente prestados pelo Canal de Atendimento
        additionalInfo:
          type: string
          description: Texto livre para complementar informação relativa ao Serviço disponível, quando for selecionada a opção 'OUTROS_PRODUTOS_SERVICOS'
          maxLength: 2000
          pattern: \w*\W*
      required:
      - code
      - name
    ElectronicChannel:
      type: object
      properties:
        identification:
          $ref: '#/components/schemas/ElectronicChannelIdentification'
        services:
          type: array
          items:
            $ref: '#/components/schemas/ElectronicChannelService'
          minItems: 1
          maxItems: 20
          description: "Traz a relação de serviços disponbilizados pelo Canal de Atendimento"
      required:
        - identification
        - services
    ElectronicChannelIdentification:
      type: object
      required:
        - type
        - urls
      properties:
        type:
          type: string
          enum:
            - INTERNET_BANKING
            - MOBILE_BANKING
            - SAC
            - OUVIDORIA
            - CHAT
            - OUTROS
          description: "Tipo de canal de atendimento eletrônico"
          example: "CHAT"
        additionalInfo:
          type: string
          pattern: \w*\W*
          maxLength: 300
          description: |
            Campo de texto livre para descrever complementação de informações necessárias. De preenchimento obrigatório para  o tipo de canal de atendimento 'OUTROS'
            Restrição: Preenchimento obrigatório para o tipo de canal de atendimento 'OUTROS'
        urls:
          type: array
          items:
            $ref: '#/components/schemas/ElectronicChannelUrl'
          minItems: 1
          description: Lista das URLs que atendem um tipo de canal eletrônico selecionado
    ElectronicChannelUrl:
      type: string
      pattern: \w*\W*
      maxLength: 1024
    ElectronicChannelService:
      type: object
      required:
        - name
        - code
      properties:
        name:
          type: string
          enum:
            - ABERTURA_CONTAS_DEPOSITOS_OU_PAGAMENTO_PRE_PAGA
            - SAQUE_MOEDA_EM_ESPECIE
            - RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_VISANDO_MOVIMENTACAO_CONTAS_DEPOSITOS_OU_PAGAMENTO_TITULARIDADE_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS_CONTAS_PAGAMENTOS
            - APLICACOES_RESGATES_INVESTIMENTOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGAMENTO_SOLICITACAO_CLIENTES_USUARIOS
            - DEPOSITOS_MOEDA_ESPECIE_CHEQUE
            - OPERACOES_CREDITO_BEM_COMO_OUTROS_SERVICOS_PRESTADOS_ACOMPANHAMENTO_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERACOES_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDA_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDA_CHEQUE_CHEQUE_VIAGEM_BEM_COMO_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDA_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: "Nome dos Serviços efetivamente prestados pelo Canal de Atendimento"
          example: "ABERTURA_CONTAS_DEPOSITOS_OU_PAGAMENTO_PRE_PAGA"
        code:
          type: string
          enum:
            - ABRE_CONTA_DEPOSITO_OU_PRE_PAGA
            - SAQUE_MOEDA_ESPECIE
            - RECEBE_PAGA_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_MOVIMENTA_CONTAS_DEPOSITOS_OU_PAGTO_TITULARES_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS_PAGTOS
            - APLICA_RESGATA_INVESTIMENTOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGTO
            - DEPOSITO_MOEDA_ESPECIE_CHEQUE
            - OPERA_CREDITO_OUTROS_SERVICOS_ACOMPANHA_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERA_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDA_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDA_CHEQUE_CHEQUE_VIAGEM_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDA_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: "Código dos Serviços efetivamente prestados pelo Canal de Atendimento"
          example: "ABRE_CONTA_DEPOSITO_OU_PRE_PAGA"
        additionalInfo:
          type: string
          maxLength: 2000
          pattern: \w*\W*
          description: "Texto livre para complementar informação relativa ao Serviço disponível, quando for selecionada a opção 'OUTROS_PRODUTOS_SERVICOS'"
          example: "SIC"
    Phone:
      type: object
      properties:
        type:
          type: string
          enum:
            - FIXO
            - MOVEL
          example: "FIXO"
          description: "Identificação do Tipo de telefone da dependência. p.ex.FIXO, MOVEL."
        countryCallingCode:
          type: string
          maxLength: 4
          pattern: ^\d{1,4}$
          example: "55"
          description: "Número de DDI (Discagem Direta Internacional) para  telefone de acesso ao Canal - se houver. p.ex. '55'"
        areaCode:
          type: string
          maxLength: 2
          pattern: ^\d{2}$
          example: "19"
          description: "Número de DDD (Discagem Direta à Distância) do telefone da dependência - se houver. p.ex. '19'"
        number:
          type: string
          maxLength: 11
          pattern: '^([0-9]{8,11})$'
          example: "35721199"
          description: "Número de telefone da dependência - se houver"
    PostalAddress:
      type: object
      properties:
        address:
          type: string
          description: "Deverá trazer toda a informação referente ao endereço da dependência informada: Tipo de logradouro + Nome do logradouro + Número do Logradouro (se não existir usar ' s/n') + complemento (se houver), como, p.ex.: 'R Diamatina, 59, bloco 35, fundos' 'Praça da Boa Vontade s/n'"
          maxLength: 150
          pattern: \w*\W*
          example: 'Av Naburo Ykesaki, 1270'
        additionalInfo:
          type: string
          description: "Alguns logradouros ainda necessitam ser especificados por meio de complemento"
          maxLength: 30
          pattern: \w*\W*
          example: 'Fundos'
        districtName:
          type: string
          description: "Bairro é uma comunidade ou região localizada em uma cidade ou município de acordo com as suas subdivisões geográficas. p.ex: 'Paraíso'"
          maxLength: 50
          pattern: \w*\W*
          example: 'Centro'
        townName:
          type: string
          description: "Localidade: O nome da localidade corresponde à designação da cidade ou município no qual o endereço está localizado. p.ex. 'São Paulo'"
          maxLength: 50
          pattern: \w*\W*
          example: 'Marília'
        ibgeCode:
          type: string
          description: "Código IBGE do município"
          maxLength: 7
          pattern: ^\d{7}$
          example: '3515890'
        countrySubDivision:
          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'
        postCode:
          type: string
          description: "Código de Endereçamento Postal"
          pattern: (\d{8}|^NA$)
          maxLength: 8
          example: '17500001'
        country:
          type: string
          description: "Nome do país"
          maxLength: 80
          pattern: \w*\W*
          example: 'Brasil'
        countryCode:
          type: string
          description: "Código do país"
          example: 'BRA'
        geographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
    ResponseSharedAutomatedTellerMachinesList:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          properties:
            brand:
              $ref: '#/components/schemas/SharedAutomatedTellerMachinesBrand'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    SharedAutomatedTellerMachinesBrand:
      type: object
      allOf:
        - $ref: '#/components/schemas/Brand'
      properties:
        companies:
          type: array
          items:
            $ref: '#/components/schemas/SharedAutomatedTellerMachinesCompanies'
          description: Lista de instituições pertencentes à marca
    SharedAutomatedTellerMachinesCompanies:
      properties:
        sharedAutomatedTellerMachines:
          type: array
          items:
            $ref: '#/components/schemas/SharedAutomatedTellerMachines'
      allOf:
        - $ref: '#/components/schemas/SharedAutomatedTellerMachinesCompany'
    SharedAutomatedTellerMachines:
      type: object
      properties:
        identification:
          $ref: '#/components/schemas/SharedAutomatedTellerMachinesIdentification'
        postalAddress:
          $ref: '#/components/schemas/SharedAutomatedTellerMachinesPostalAddress'
        availability:
          $ref: '#/components/schemas/SharedAutomatedTellerMachinesAvailability'
        services:
          type: array
          items:
            $ref: '#/components/schemas/SharedAutomatedTellerMachinesServices'
    SharedAutomatedTellerMachinesServices:
      type: object
      properties:
        name:
          type: string
          enum:
            - ABERTURA_CONTAS_DEPOSITOS_OU_PAGAMENTO_PRE_PAGA
            - SAQUE_MOEDA_EM_ESPECIE
            - RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_VISANDO_MOVIMENTACAO
            - CONTAS_DEPOSITOS_OU_PAGAMENTO_TITULARIDADE_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS_E_CONTAS
            - PAGAMENTOS
            - APLICACOES_RESGATES_INVESTIMENTOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGAMENTO_SOLICITACAO
            - CLIENTES_USUARIOS
            - DEPOSITOS_MOEDA_ESPECIE_CHEQUE
            - OPERACOES_CREDITO_BEM_COMO_OUTROS_SERVICOS_PRESTADOS_ACOMPANHAMENTO_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERACOES_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDA_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDA_CHEQUE_CHEQUE_VIAGEM_BEM_COMO_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDA_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: "Nome dos Serviços efetivamente prestados pelo Terminal de Autoatendimento Compartilhado informado"
          example: OUTROS_PRODUTOS_SERVICOS
        code:
          type: string
          enum:
            - ABRE_CONTA_DEPOSITO_OU_PRE_PAGA
            - SAQUE_MOEDA_ESPECIE
            - RECEBE_PAGA_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_MOVIMENTA_CONTAS_DEPOSITOS_OU_PAGA_TITULARES_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS
            - PAGAMENTOS
            - APLICA_RESGATA_INVESTIMENTOS
            - EXECUTA_ATIVA_PASSIVA_ORDENS_PAGAMENTO
            - DEPOSITA_MOEDA_ESPECIE_CHEQUE
            - OPERA_CREDITO_OUTROS_SERVICOS_ACOMPANHA_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERA_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDE_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDE_CHEQUE_CHEQUE_VIAGEM_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDE_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: "Código dos Serviços efetivamente prestados pelo Terminal de Autoatendimento Compartilhado informado"
          example: OUTROS_PRODUTOS_SERVICOS
        additionalInfo:
          type: string
          maxLength: 2000
          pattern: \w*\W*
          description: Texto livre para complementar informação relativa ao Serviço disponível, quando for preenchida a opção 'OUTROS_PRODUTOS_SERVICOS'
          example: "Serviços complementares de atendimento via terminais de autoatendimento."
    SharedAutomatedTellerMachinesIdentification:
      type: object
      properties:
        ownerName:
          type: string
          maxLength: 100
          pattern: \w*\W*
          description: "Nome do proprietário do terminal de Autoatendimento Compartilhado"
          example: "João da Silva Santos"
    ####################
    ## Phone ElectronicChannels ##
    ####################
    #### ResponsePhoneChannelsList ####
    ResponsePhoneChannelsList:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          required:
            - brand
          properties:
            brand:
              $ref: '#/components/schemas/PhoneChannelsBrand'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
      example:
        data:
          brand:
            name: 'Organização A'
            companies:
              - name: 'Empresa A1'
                cnpjNumber: '45086338000178'
                urlComplementaryList: 'https://empresaa1.com/branches-banking'
                phoneChannels:
                  - identification:
                      type: 'CENTRAL_TELEFONICA'
                      phones:
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '35721199'
                          additionalInfo: 'NA'
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '997865532'
                          additionalInfo: 'NA'
                    services:
                      - name: 'ABERTURA_CONTAS_DEPOSITOS_OU_PAGAMENTO_PRE_PAGA'
                        code: 'ABRE_CONTA_DEPOSITO_OU_PRE_PAGA'
                      - name: 'RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA'
                        code: 'RECEBE_PAGA_QUALQUER_NATUREZA'
                      - name: 'OUTROS_PRODUTOS_SERVICOS'
                        code: 'OUTROS_PRODUTOS_SERVICOS'
                        additionalInfo: "Atendimento em outros idiomas"
                  - identification:
                      type: 'SAC'
                      phones:
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '40044828'
                          additionalInfo: 'DDI ''55''; DDD ''11'', 40044828, ''Para clientes no exterior'''
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '40044828'
                          additionalInfo: 'DDI '' '', DDD '' '', 40044828, ''Para regiões metropolitanas'''
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '40044828'
                          additionalInfo: 'DDI '' '', DDD '' '', 40044828, ''Para demais localidades'''
                    services:
                      - name: 'RECLAMACOES'
                        code: 'RECLAMACOES'
                      - name: 'INFORMACOES'
                        code: 'INFORMACOES'
                      - name: 'CANCELAMENTO'
                        code: 'CANCELAMENTO'
                  - identification:
                      type: 'OUVIDORIA'
                      phones:
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '40045555'
                          additionalInfo: 'DDI ''55''; DDD ''11'', 40045555, ''Para clientes no exterior'''
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '40045555'
                          additionalInfo: 'DDI '' '', DDD '' '', 40045555, ''Para regiões metropolitanas'''
                        - countryCallingCode: '55'
                          areaCode: '14'
                          number: '40045555'
                          additionalInfo: 'DDI '' '', DDD '' '', 40045555, ''Para demais localidades'''
                    services:
                      - name: 'RECLAMACOES'
                        code: 'RECLAMACOES'
                      - name: 'INFORMACOES'
                        code: 'INFORMACOES'
                  - identification:
                      type: 'OUTROS'
                      additionalInfo: 'Receptivo'
                      phones:
                        - countryCallingCode: '55'
                          areaCode: 'NA'
                          number: '40043277'
                          additionalInfo: 'DDI ''55''; DDD ''11'', 40043277, ''Para clientes no metropolitanas'''
                        - countryCallingCode: 'NA'
                          areaCode: 'NA'
                          number: '40043277'
                          additionalInfo: 'DDI '' '', DDD '' '', 40043277, ''Para regiões localidades'''
                    services:
                      - name: 'OUTROS_PRODUTOS_SERVICOS'
                        code: 'OUTROS_PRODUTOS_SERVICOS'
                        additionalInfo: 'Previdência Privada'
        links:
          self: 'https://api.banco.com.br/open-banking/channels/v1/phone-channels'
          first: 'https://api.banco.com.br/open-banking/channels/v1/phone-channels'
          prev: "null"
          next: "null"
          last: 'https://api.banco.com.br/open-banking/channels/v1/phone-channels'
        meta:
          totalRecords: 1
          totalPages: 1
    #### PhoneChannelsBrand ####
    PhoneChannelsBrand:
      type: object
      required:
        - name
        - companies
      properties:
        name:
          type: string
          pattern: '\w*\W*'
          maxLength: 80
          description: "Nome da Marca reportada pelo participante do Open Banking. O conceito a que se refere a 'marca' utilizada está em definição pelos participantes."
          example: "Marca A"
        companies:
          type: array
          items:
            $ref: '#/components/schemas/PhoneChannelsCompany'
          minItems: 1
          description: Lista de instituições pertencentes à marca
    #### PhoneChannelsCompany ####
    PhoneChannelsCompany:
      type: object
      required:
        - name
        - phoneChannels
        - cnpjNumber
      properties:
        name:
          type: string
          pattern: \w*\W*
          maxLength: 80
          description: "Nome da Instituição, pertencente à organização, responsável pelo Canal Telefônico."
          example: "Empresa da Marca A"
        urlComplementaryList:
          type: string
          pattern: \w*\W*
          maxLength: 1024
          example: "https://example.com/mobile-banking"
        phoneChannels:
          type: array
          items:
            $ref: '#/components/schemas/PhoneChannel'
          minItems: 1
          description: Lista  de canais de atendimento telefônico
      allOf:
        - $ref: '#/components/schemas/CNPJ'
    #### PhoneChannel ####
    PhoneChannel:
      type: object
      properties:
        identification:
          $ref: '#/components/schemas/PhoneChannelIdentification'
        services:
          type: array
          items:
            $ref: '#/components/schemas/PhoneChannelService'
          minItems: 1
          maxItems: 20
          description: Traz a relação de serviços disponbilizados pelo Canal de Atendimento
      required:
        - identification
        - services
    #### PhoneChannelIdentification ####
    PhoneChannelIdentification:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - CENTRAL_TELEFONICA
            - SAC
            - OUVIDORIA
            - OUTROS
          description: "
            Tipo de canal telefônico de atendimento:
              \n* `CENTRAL_TELEFONICA`
              \n* `SAC`
              \n* `OUVIDORIA`
              \n* `OUTROS`"
          example: "OUVIDORIA"
        additionalInfo:
          type: string
          pattern: \w*\W*
          maxLength: 300
          description: Campo de texto livre para descrever informações complementateres sobre canais telefônicos. De preenchimento obrigatório quando o tipo de canal de atendimento telefônico selecionado for "OUTROS"
        phones:
          type: array
          items:
            $ref: '#/components/schemas/PhoneChannelPhone'
          minItems: 1
          description: "Lista de telefones do Canal de Atendimento"
    #### PhoneChannelPhone ####
    PhoneChannelPhone:
      type: object
      required:
        - countryCallingCode
        - areaCode
        - number
      properties:
        countryCallingCode:
          type: string
          maxLength: 4
          pattern: ^\d{1,4}$|^NA$
          example: "55"
          description: "Número de DDI (Discagem Direta Internacional) para telefone de acesso ao Canal - se houver."
        areaCode:
          type: string
          maxLength: 2
          pattern: ^\d{2}$|^NA$
          example: "19"
          description: "Número de DDD (Discagem Direta à Distância) para telefone de acesso ao Canal - se houver."
        number:
          type: string
          maxLength: 13
          pattern: ^([0-9]{8,11})$|^NA$
          example: "08007787788"
          description: "Número de telefone de acesso ao canal."
        additionalInfo:
          type: string
          maxLength: 300
          pattern: \w*\W*
          example: "Mensagem complementar necessária para o agrupamento da identificação do telefone."
    #### PhoneChannelService ####
    PhoneChannelService:
      type: object
      required:
        - name
        - code
      properties:
        name:
          type: string
          enum:
            - ABERTURA_CONTAS_DEPOSITOS_OU_PAGAMENTO_PRE_PAGA
            - SAQUE_MOEDA_EM_ESPECIE
            - RECEBIMENTOS_PAGAMENTOS_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_VISANDO_MOVIMENTACAO_CONTAS_DEPOSITOS_OU_PAGAMENTO_TITULARIDADE_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS_CONTAS_PAGAMENTOS
            - APLICACOES_RESGATES_INVESTIMENTOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGAMENTO_SOLICITACAO_CLIENTES_USUARIOS
            - DEPOSITOS_MOEDA_ESPECIE_CHEQUE
            - OPERACOES_CREDITO_BEM_COMO_OUTROS_SERVICOS_PRESTADOS_ACOMPANHAMENTO_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERACOES_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDA_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDA_CHEQUE_CHEQUE_VIAGEM_BEM_COMO_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDA_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: "Nome dos Serviços efetivamente prestados pelo Canal de Atendimento"
        code:
          type: string
          enum:
            - ABRE_CONTA_DEPOSITO_OU_PRE_PAGA
            - SAQUE_MOEDA_ESPECIE
            - RECEBE_PAGA_QUALQUER_NATUREZA
            - TRANSFERENCIAS_ELETRONICAS_MOVIMENTA_CONTAS_DEPOSITOS_OU_PAGTO_TITULARES_CLIENTES
            - CONSULTA_SALDOS_EXTRATOS_CONTAS_DEPOSITOS_PAGTOS
            - APLICA_RESGATA_INVESTIMENTOS
            - EXECUCAO_ATIVA_PASSIVA_ORDENS_PAGTO
            - DEPOSITO_MOEDA_ESPECIE_CHEQUE
            - OPERA_CREDITO_OUTROS_SERVICOS_ACOMPANHA_OPERACAO
            - CARTAO_CREDITO
            - SEGUROS
            - OPERA_ARRENDAMENTO_MERCANTIL
            - ABERTURA_CONTA_PAGAMENTO_POS_PAGA
            - COMPRA_VENDA_MOEDA_ESTRANGEIRA_ESPECIE
            - COMPRA_VENDA_CHEQUE_CHEQUE_VIAGEM_CARGA_MOEDA_ESTRANGEIRA_CARTAO_PRE_PAGO
            - COMPRA_VENDA_OURO
            - OUTROS_PRODUTOS_SERVICOS
            - CANCELAMENTO
            - INFORMACOES
            - RECLAMACOES
          description: "Código dos Serviços efetivamente prestados pelo Canal de Atendimento"
        additionalInfo:
          type: string
          pattern: \w*\W*
          maxLength: 2000
          description: "Texto livre para complementar informação relativa ao Serviço disponível, quando for selecionada a opção 'OUTROS_PRODUTOS_SERVICOS'"
          example: ""
    GeographicCoordinates:
      type: object
      description: Informação referente a geolocalização informada.
      properties:
        latitude:
          description: Informação da latitude referente a geolocalização informada.
          type: string
          pattern: ^-?\d{1,2}\.\d{1,9}$
          maxLength: 13
          example: '-90.8365180'
        longitude:
          description: Informação da longitude referente a geolocalização informada.
          type: string
          pattern: ^-?\d{1,3}\.\d{1,8}$
          maxLength: 13
          example: '-180.836519'
    Brand:
      type: object
      properties:
        name:
          type: string
          maxLength: 80
          pattern: \w*\W*
          description: Nome da marca selecionada pela Organização
          example: Organização A
    CNPJ:
      type: object
      properties:
        cnpjNumber:
          type: string
          pattern: '^(\d{14})$|^NA$'
          description: Número completo do CNPJ da instituição
          maxLength: 14
          example: "50685362000135"
    Links:
      type: object
      properties:
        self:
          type: string
          description: URL da página atualmente requisitada
          example: "https://api.banco.com.br/open-banking/channels/v1/<resource>"
        first:
          type: string
          description: URL da primeira página de registros
          example: "https://api.banco.com.br/open-banking/channels/v1/<resource>"
        prev:
          type: string
          description: URL da página anterior de registros
        next:
          type: string
          description: URL da próxima página de registros
        last:
          type: string
          description: URL da última página de registros
          example: "https://api.banco.com.br/open-banking/channels/v1/<resource>"
    Meta:
      type: object
      properties:
        totalRecords:
          type: integer
          description: Total de registros encontrados
          example: 1
        totalPages:
          type: integer
          description: Total de páginas para os registros encontrados
          example: 1
      required:
        - totalRecords
        - totalPages

#### ATM specific schemas because of optional NA values ####
    SharedAutomatedTellerMachinesCompany:
      type: object
      properties:
        name:
          type: string
          description: Nome da Instituição, pertencente à Marca.
          maxLength: 80
          pattern: \w*\W*
          example: 'Empresa da Organização A'
        urlComplementaryList:
          type: string
          pattern: \w*\W*
          maxLength: 1024
          description: |
            URL de link para lista complementar com os nomes e CNPJs agrupados para o caso instituições ofertantes de produtos e serviços com as mesmas características.
          example: 'https://empresadaorganizacaoa.com/complementarylist'
        cnpjNumber:
          type: string
          pattern: '^(\d{14})$|^NA$'
          description: Número completo do CNPJ da instituição
          maxLength: 14
          example: "50685362000135"
    SharedAutomatedTellerMachinesAvailability:
      type: object
      properties:
        standards:
          type: array
          items:
            properties:
              weekday:
                type: string
                enum:
                  - DOMINGO
                  - SEGUNDA_FEIRA
                  - TERCA_FEIRA
                  - QUARTA_FEIRA
                  - QUINTA_FEIRA
                  - SEXTA_FEIRA
                  - SABADO
                description: Dia da semana de abertura
                example: SEGUNDA_FEIRA
              openingTime:
                type: string
                description: Horário de abertura (UTC)
                maxLength: 13
                pattern: ^(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)|Z$|^NA$
                example: '10:00:57Z'
              closingTime:
                type: string
                description: Horário de fechamento (UTC)
                maxLength: 13
                pattern: ^(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)|Z$|^NA$
                example: '16:00:57Z'
        exception:
          type: string
          maxLength: 2000
          pattern: \w*\W*
          example: Exceto feriados municipais, nacionais e estaduais
        isPublicAccessAllowed:
          type: boolean
          example: false
    SharedAutomatedTellerMachinesPostalAddress:
      type: object
      properties:
        address:
          type: string
          description: "Deverá trazer toda a informação referente ao endereço da dependência informada: Tipo de logradouro + Nome do logradouro + Número do Logradouro (se não existir usar ' s/n') + complemento (se houver), como, p.ex.: 'R Diamatina, 59, bloco 35, fundos' 'Praça da Boa Vontade s/n'"
          maxLength: 150
          pattern: \w*\W*
          example: 'Av Naburo Ykesaki, 1270'
        additionalInfo:
          type: string
          description: "Complemento"
          maxLength: 30
          pattern: \w*\W*
          example: 'Fundos'
        districtName:
          type: string
          description: "Bairro é uma comunidade ou região localizada em uma cidade ou município de acordo com as suas subdivisões geográficas. p.ex: 'Paraíso'"
          maxLength: 50
          pattern: \w*\W*
          example: 'Centro'
        townName:
          type: string
          description: "Localidade: O nome da localidade corresponde à designação da cidade ou município no qual o endereço está localizado. p.ex. 'São Paulo'"
          maxLength: 50
          pattern: \w*\W*
          example: 'Marília'
        ibgeCode:
          type: string
          description: "Código IBGE do município"
          maxLength: 7
          pattern: \d{7}
          example: '3515890'
        countrySubDivision:
          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'
        postCode:
          type: string
          description: "Código de Endereçamento Postal"
          pattern: (\d{8})|^NA$
          maxLength: 8
          example: '17500001'
        country:
          type: string
          description: "Nome do país"
          maxLength: 80
          pattern: \w*\W*
          example: 'Brasil'
        countryCode:
          type: string
          description: "Código do país"
          example: 'BRA'
        geographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
  parameters:
    page:
      name: page
      in: query
      description: Número da página que está sendo requisitada (o valor da primeira página é 1).
      schema:
        type: integer
        default: 1
        minimum: 1
    pageSize:
      name: page-size
      in: query
      description: Quantidade total de registros por páginas.
      schema:
        type: integer
        default: 25
        minimum: 1
