openapi: 3.0.0
info:
  title: API Quote Auto - Open Insurance Brasil
  description: |
    API de Cotação Auto do Open Insurance Brasil - Fase 3.\
    Recebe informações da solicitação de cotação e contratação vindas das instituições iniciadoras.\
    Possui um conjunto de endpoints por ramo de produto e um conjunto específico de endpoints para ramos classificados como LEAD OPIN.\
    Requer consentimento do cliente para todos os 'endpoints'.
    
    # Orientações
    A `Role`  do diretório de participantes relacionada à presente API é a ``.\
    Para todos os `endpoints` desta API é previsto o envio de um `token` através do header `Authorization`.\
    Os dados serão entregues pela iniciadora na seguradora desde que o `consentId` relacionado corresponda a um consentimento válido e com o status `AUTHORISED`.\
    Relacionamos a seguir as `permissions` necessárias para o envio de dados em cada `endpoint` da presente API.

    ## Permissions necessárias para a API Quote Auto

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

    ### `/lead/request`
      - permissions:
        - POST: **QUOTE_AUTO_LEAD_CREATE**   
    ### `/lead/request/{consentId}`
      - permissions:      
        - PATCH: **QUOTE_AUTO_LEAD_UPDATE**
    ### `/request/{consentId}/quote-status`
      - permissions:
        - GET: **QUOTE_AUTO_READ**    
    ### `/request`
      - permissions:   
        - POST: **QUOTE_AUTO_CREATE**   
    ### `/request/{consentId}`
      - permissions:   
        - PATCH: **QUOTE_AUTO_UPDATE**
    ## Válidações Semanticas - Entidade não processável - 422
      - 1 - `Idempotência:` Valida se há divergência entre chave de idempotência e informações enviadas (ERRO_IDEMPOTENCIA);
      - 2 - `Não Informado:` Valida itens não explicitamente informados pelo servidor - (NAO_INFORMADO).



  version: 1.9.0
  contact:
    name: Governança do Open Insurance Brasil
    email: gt-interfaces@openinsurancebr.org
    url: 'https://www.gov.br/susep'
servers:
  - url: 'https://api.organizacao.com.br/open-insurance/quote-auto/v1'
    description: Servidor de Produção
  - url: 'https://api.organizacao.com.br/open-insurance/quote-auto/v1'
    description: Servidor de Homologação
tags:
  - name: AutoLead
    description: Iniciação de serviços de seguro Cotação Auto (AutoLead)
  - name: Auto
    description: Iniciação de serviços de seguro Cotação Auto (Auto)
paths:
  /lead/request:
    post:
      tags:
        - AutoLead
      summary: Envia dados de cotação e contratação de AutoLead
      description: "Método para criação de solicitação de cotação e contratação de AutoLead"
      operationId: "postQuoteAutoLead"
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/xIdempotencyKey'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequestAutoLead'
      responses:
        '201':
          $ref: '#/components/responses/CreatedResponseQuoteRequestAutoLead'
        '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/UnprocessableEntityQuote'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          description: Erro inesperado.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Security:
          - quote-auto-lead
  /lead/request/{consentId}:
    patch:
      tags:
        - AutoLead
      summary: Atualiza dados de cotação e contratação de AutoLead identificado por consentId
      description: "Método para atualização de solicitação de cotação e contratação de AutoLead"
      operationId: "patchQuoteAutoLead"
      parameters:
        - $ref: "#/components/parameters/consentId"
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevokePatchPayload'
        description: Payload para postagem da atualização de proposta de cotação.
        required: true
      responses:
        '200':
          $ref: '#/components/responses/200UpdatedQuoteAutoLead'
        '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'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          description: Erro inesperado.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Security:
          - quote-auto-lead

  /request:
    post:
      tags:
        - Auto
      summary: Envia dados de cotação e contratação de Auto
      description: "Método para criação de solicitação de cotação e contratação de Auto"
      operationId: "postQuoteAuto"
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/xIdempotencyKey'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequestAuto'
      responses:
        '201':
          $ref: '#/components/responses/CreatedResponseQuoteRequestAuto'
        '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/UnprocessableEntityQuote'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          description: Erro inesperado.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Security:
          - quote-auto
  /request/{consentId}/quote-status:
    get:
      tags:
        - Auto
      summary: Obtém os dados de cotação e contratação de Auto identificado por consentId
      description: "Método para consulta dos dados de solicitação de cotação e contratação de Auto"
      operationId: "getQuoteAuto"
      parameters:
        - $ref: "#/components/parameters/consentId"
        - $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"
      responses:
        '200':
          $ref: '#/components/responses/200QuoteStatusAuto'
        '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'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          description: Erro inesperado.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Security:         
          - quote-auto
  /request/{consentId}:
    patch:
      tags:
        - Auto
      summary: Atualiza dados de cotação e contratação de Auto identificado por consentId
      description: "Método para atualização de solicitação de cotação e contratação de Auto"
      operationId: "patchQuoteAuto"
      parameters:
        - $ref: "#/components/parameters/consentId"
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchPayload'
        description: Payload para postagem da atualização de proposta de cotação.
        required: true
      responses:
        '200':
          $ref: '#/components/responses/200UpdatedQuoteAuto'
        '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'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          description: Erro inesperado.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2Security:          
          - quote-auto

components:
  schemas:
    PolicyDataAutoLead:
      $ref: '#/components/schemas/PolicyDataAuto'
    
    QuoteAutoBeneficiary:
      type: object
      properties:
        identification:
          description: Documento de Identifica��o do Benefici�rio
          type: string
          maxLength: 60
          example: "12345678900"
        identificationType: 
          description: Tipo de Documento do Benefici�rio
          type: string
          example: CPF
          enum: [
            CPF,
            CNPJ,
            OUTROS
          ]
        housingVehiclesNumber:
            type: string
            maxLength: 10
            description: "Número de veículos na residência"
        isUndeterminedDriver:
            type: boolean
            description: "Condutor Indeterminado"
        isInsuredTheOwner:
            type: boolean
            description: "O Segurado é o proprietário?"
        relationshipMainDriver:
            type: string
            example: FILHO_A_ENTEADO_A
            enum: [
                FILHO_A_ENTEADO_A,
                CONJUGE_COMPANHEIRO_A,
                PAI_MAE,
                IRMAO_IRMA,
                OUTROS,
                NAO_SE_APLICA
            ]
            description: "Qual a relação do Condutor Principal com o Segurado?"
        isInsuredTheMainDriver:
            type: boolean
            description: "O Segurado � o Condutor Principal?"
        mainDriver:
            type: object
            properties:
                identification:
                  description: Documento de Identifica��o do Benefici�rio
                  type: string
                  maxLength: 60
                  example: "12345678900"
                identificationType: 
                  description: Tipo de Documento do Benefici�rio
                  type: string
                  example: CPF
                  enum: [
                    CPF,
                    CNPJ,
                    OUTROS
                  ]
                name:
                    type: string
                    maxLength: 100
                    description: "Nome do Condutor Principal"
                birthDate:
                    type: string
                    maxLength: 100
                    format: date
                    description: "Data de nascimento  do Condutor Principal"
                    pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
                    example: '2022-10-27'
                gender:
                    type: string
                    example: MASCULINO
                    enum: [MASCULINO,
                        FEMININO,
                        NAO_DECLARADO,
                        OUTROS]
                    description: "Sexo do Condutor Principal"
                civilStatus:
                    type: string
                    example: SOLTEIRO
                    enum: [SOLTEIRO,
                        CASADO,
                        VIUVO,
                        SEPARADO_JUDICIALMENTE,
                        DIVORCIADO,
                        UNIAO_ESTAVEL,
                        OUTROS]
                    description: "Estado civil do Condutor Principal"
                postCode:
                    type: string
                    maxLength: 10
                    description: "CEP do Condutor Principal"
                licensedExperience:
                    type: string
                    description: "Tempo de habilitação do condutor utilizado para taxação (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
                profession:
                    type: string
                    maxLength: 10
                    description: "Profissão do Condutor Principal"

    QuoteAutoInsuredObject:
      type: object
      description: Objeto que agrupa os dados de objeto segurado.
      required:
        - identification
        - doorsNumber
        - color
        - vehicleUse
        - isEquipmentsAttached
        - isBrandNew
        - fuel
        - isGasKit
        - isArmouredVehicle
        - isActiveTrackingDevice
        - overnightPostCode
        - wasThereAClaim 
      properties:
        identification:
          type: string
          maxLength: 100
          description: "Identificador do objeto segurado. Obs.: Para Fiança Locatícia, é a identificação do Contrato de Locação."
        model:
            required: 
                - brand
                - modelName
            type: object
            description: Objeto que agrupa os dados de modelo.
            properties:
                brand:
                  description: "Marca do veículo"
                  type: string 
                  example: "Mercedes-Benz"
                  maxLength: 20
                modelName: 
                  type: string
                  description: Nome do modelo (Caso aplicável) 
                  maxLength: 100
                  example: "AMG Classe A"
                modelYear: 
                  type: string
                  maxLength: 4
                  pattern: '^\d{4}$'
                  description: "Ano do modelo (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
                  example: "2022"
                manufactureYear: 
                  type: string
                  maxLength: 4
                  pattern: '^\d{4}$'
                  description: "Ano de fabricação (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
                  example: "2022"
        modality: 
          type: string
          example: VALOR_DETERMINADO
          enum: [VALOR_DE_MERCADO_REFERENCIADO,
                VALOR_DETERMINADO,
                CRITERIO_DIVERSO,
                OUTROS]
          description: "Modalidade de cobertura (para cobertura de casco)"
        tableUsed:
          type: string
          example: MOLICAR
          enum: [MOLICAR,
                FIPE,
                JORNAL_DO_CARRO,
                VD,
                OUTRAS]
          description: "Tabela de referência adotada no plano (Casco, RCF-A, APP, Assistência e Outras Coberturas). Condicional, caso a opção '1. Valor de mercado referenciado' seja selecionada no campo 'Modalidade'"
        modelCode:
          type: string
          maxLength: 20
          description: "Código do modelo de acordo com a tabela de referência adotada no plano (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
          example: "123456-0"
        adjustmentFactor:
           type: string
           maxLength: 500
           description: "Fator de ajuste da tabela utilizada para valor médio de mercado"
           example: "80%"
        valueDetermined:
           type: string
           maxLength: 500
           description: "BRL - De acordo com ISO-4217. Condicional, caso a opção '2. Valor determinado' seja selecionada no campo 'Modalidade'"
        tax:
          type: object
          required:
            - exempt
          properties:
              exempt:
                  type: boolean
                  description: "Isento de Imposto. Condicional, caso a opção '1. Sim' seja selecionada no campo 'Isento de Imposto'"
              type:
                  type: string
                  example: ICMS
                  enum: [ICMS,
                      IPI,
                      AMBOS]
                  description: "qual imposto isento(s)"
              exemptionPercentage:
                  type: string
                  maxLength: 10
                  description: "Percentual da isenção. Condicional, caso a opção '1. Sim' seja selecionada no campo 'Isento de Imposto'"
        doorsNumber:
            type: string
            maxLength: 10
            description: "Quantidade de portas"
            example: "2"
        color:   
            type: string
            maxLength: 100
            description: "Cor"
            example: "PRATA"
        licensePlate:
            type: string
            maxLength: 8
            description: "Placa"
            example: "ABC-0123"
        vehicleUse:
            type: array 
            items: 
                type: string
                example: LAZER
                enum: [LAZER,
                        LOCOMOCAO_DIARIA,
                        EXERCICIO_DO_TRABALHO]
                description: " Código de utilização do veículo (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
        commercialActivityType:
          description: " Tipo de atividade comercial. Condicional, caso a opção '3. Exercício do trabalho' seja selecionada no campo 'Código de utilização do veículo'"
          type: array
          items:
              type: string
              example: TAXI_PARTICULAR
              enum: [COMERCIAL_ATIVIDADE_PROFISSIONAL_PARA_REPRESENTACAO_COMERCIAL_VENDEDORES_PROMOTORES_E_PRESTADORES_DE_SERVICOS,
                    TAXI_PARTICULAR,
                    MOTORISTA_DE_APLICATIVO_APLICATIVO_DE_TRANSPORTE,
                    MOTO_TAXI,
                    LOTACAO,
                    TRANSPORTE_ESCOLAR,
                    LOCADORA_CONTRATO,
                    LOCADORA_AVULSO,
                    TRANSPORTE_DE_MERCADORIA,
                    PRESTA_SERVICO_PARA_TRANSPORTADORA,
                    TRANSPORTE_DE_PESSOAS_URBANO,
                    TRANSPORTE_DE_PESSOAS_FRETAMENTO_EMPRESARIAL_CONTINUO,
                    TRANSPORTE_DE_PESSOAS_FRETAMENTO_MISTO_FRETE_PESSOAS,
                    TRANSPORTE_DE_PESSOAS_FRETAMENTO_TURISTICO,
                    VEICULOS_OFICIAIS_ORGAO_PUBLICO,
                    AMBULANCIA,
                    BOMBEIROS,
                    COLETORES_DE_LIXO,
                    VIGILANCIA,
                    POLICIAMENTO,
                    COMPETICAO_EVENTOS,
                    AUTO_ESCOLAS,
                    TEST_DRIVE,
                    DIFERENCIADOS_EX_TRAILER_MOTORHOME_HOSPITAIS_VOLANTE_VEICULOS_COM_PLATAFORMA_PARA_REPAROS_DE_ENERGIA_ELETRICA_ETC,
                    OUTROS]
        riskManagementSystem:
            type: array
            items:
                type: string
                example: NAO
                enum: [NAO,
                      CADASTRO_DE_MOTORISTAS,
                      ESCOLTA_DE_CARGAS,
                      OUTROS,
                      NAO_INFORMADO]
                description: "Utiliza algum sistema de gerenciamento de risco?. Condicional, caso a opção '10. Transporte de Mercadoria' ou '11. Presta Serviço para Transportadora' seja selecionada no campo 'Tipo de Atividade Comercial'"
        isTransportedCargoInsurance:
          description: "Possui seguro da carga transportada? Condicional, caso a opção '10. Transporte de Mercadoria' ou '11. Presta Serviço para Transportadora' seja selecionada no campo 'Tipo de Atividade Comercial'"
          type: boolean
        loadsCarriedinsured:
            type: array
            items:
                type: string
                example: AUTO_PECAS
                enum: [AUTO_PECAS,
                    AUTOMOVEIS,
                    BEBIDAS,
                    BRINQUEDOS,
                    CALCADOS,
                    CARGA_MISTA,
                    CARGA_VIVA,
                    CIGARROS,
                    COMBUSTIVEIS_OU_INFLAMAVEIS,
                    CONFECCOES,
                    ELETRODOMESTICOS,
                    GASES,
                    GENERO_ALIMENTICIO,
                    HORTIFRUTI_GRANJEIROS,
                    LATICIOS,
                    LIXO,
                    MADEIRA,
                    MATERIAL_DE_CONSTRUCAO,
                    MEDICAMENTOS,
                    MOVEIS,
                    MUDANCAS,
                    PAPEIS,
                    PLASTICOS,
                    PNEU_OU_CAMERA_DE_AR,
                    PRODUTO_PERICIVEL,
                    PRODUTO_QUIMICO,
                    SUCO,
                    TECIDO,
                    VALORES,
                    VIDROS,
                    OUTRAS,
                    NAO_INFORMADO]
                description: "Quais as cargas transportadas pelo veículo segurado? Condicional, caso a opção '10. Transporte de Mercadoria' ou '11. Presta Serviço para Transportadora' seja selecionada no campo 'Tipo de Atividade Comercial'"
        isEquipmentsAttached:
             type: boolean
             description: "Utiliza algum sistema de gerenciamento de risco?"
        equipmentsAttached:
             type: object
             description: Objeto que agrupa os dados de equipamentos ou acessórios acoplados.
             properties:
                isDesireCoverage:
                    type: boolean
                    description: "Deseja cobertura destes equipamentos ou acessórios? Condicional, caso a opção '1. Sim' seja selecionada no campo 'Possui equipamentos ou acessórios acoplados, fixados ou instalados a veículos?'"
                equipmentsAttachedAmount:
                    description: "Valor dos equipamentos/acessórios - Condicional, caso a opção '1. Sim' seja selecionada no campo 'Deseja cobertura destes equipamentos ou acessórios?'"
                    allOf:
                        - $ref: '#/components/schemas/AmountDetails'
        chassis:
            type: string
            description: "Chassi"
            maxLength: 17
        isAuctionChassisRescheduled:
            type: boolean
            description: "Leilão ou Chassi remarcado"
        isBrandNew:
            type: boolean
            description: "Zero km?" 
        departureDateFromCarDealership:
            type: string
            maxLength: 10
            format: date
            description: "Data de saída da concessionária - Zero km? Condicional e opcional, caso a opção '1. Sim' seja selecionada no campo 'Zero km?'"
            pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
            example: '2022-10-27'
        vehicleInvoice:
            type: object
            description: Objeto que agrupa os dados de Nota Fiscal.
            properties:
                vehicleAmount:
                    description: "Valor de NF do veículo - Condicional e opcional, caso a opção '1. Sim' seja selecionada no campo 'Zero km?'"
                    allOf:
                        - $ref: '#/components/schemas/AmountDetails'
                vehicleNumber:
                    type: string
                    maxLength: 10
                    description: "Número da NF do veículo"
        fuel:
            type: string
            example: GASOLINA
            enum: [GASOLINA,
                FLEX,
                HIBRIDO,
                ELETRICO,
                DIESEL,
                GAS_GNV,
                ALCOOL_ETANOL,
                FLEX_E_GNV]
            description: "Combustível"
        isGasKit:
            type: boolean
            description: "Possui Kit-gás?"
        gasKit:
            type: object
            description: Objeto que agrupa os dados de Kit-gás.
            required:
                - isDesireCoverage
            properties:
                isDesireCoverage:
                    type: boolean
                    description: "Deseja cobertura do Kit-gás? Condicional, caso a opção '1. Sim' seja selecionada no campo 'Veículo blindado?'"       
                gasKitAmount:
                    description: "Valor do Kit-gás - Condicional, caso a opção '1. Sim' seja selecionada no campo 'Deseja cobertura do Kit-gás?'"
                    allOf:
                        - $ref: '#/components/schemas/AmountDetails' 
        isArmouredVehicle:
            type: boolean
            description: "Veículo blindado?"
        armouredVehicle:
            type: object
            description: Objeto que agrupa os dados de blindagem.
            properties:
                isDesireCoverage:
                    type: boolean
                    description: "Deseja cobertura da blindagem?"       
                armouredVehicleAmount:
                    description: "Valor da blindagem"
                    allOf: 
                        - $ref: '#/components/schemas/AmountDetails'   
        isActiveTrackingDevice:
            type: boolean
            description: "Possui dispositivo rastreador próprio e ativo (adquirido e pago pelo cliente)?"    
        frequentTrafficArea: 
            type: string
            example: REGIAO_NORDESTE
            enum: [MUNICIPIO_E_ARREDORES_ATE_KM,    
                DENTRO_DO_PROPRIO_ESTADO_DA_SEDE,
                REGIAO_NORTE,
                REGIAO_NORDESTE,
                REGIAO_CENTRO_OESTE,
                REGIAO_SUL,
                REGIAO_SUDESTE,
                MERCOSUL,
                AMERICA_DO_SUL,
                NAO_INFORMADO]
            description: "Qual a área de circulação mais frenquente?"
        overnightPostCode:
            type: string
            maxLength: 10
            description: "CEP da localidade de pernoite do veículo (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
        riskLocationInfo:
          $ref: '#/components/schemas/QuoteAutoRiskLocation'
        beneficiaries:
          type: array
          description: Lista de dados de beneficiários.
          items:
            $ref: '#/components/schemas/QuoteAutoBeneficiary'
        isExtendCoverageAgedBetween18And25:
            type: boolean
            description: "Deseja estender a cobertura contratada para condutores na faixa etária dos 18 aos 25 anos?"    
        driverBetween18and25YearsOldGender:
            type: string
            description: "Condicional, caso seja selecionado '1. Sim' no campo 'Deseja estender a cobertura contratada para condutores na faixa etária dos 18 aos 25 anos?'sexo dos condutores na faixa etária dos 18 aos 25 anos"
            example: MASCULINO
            enum: [MASCULINO,
                    FEMININO,
                    MASCULINO_E_FEMININO,
                    PREFIRO_NAO_DECLARAR]
        wasThereAClaim:  
          description: "Houve sinistro no local nos últimos 12 meses?"
          type: boolean
        claimNotifications:
          description: Lista de sinistros e valores
          type: array
          items:
            $ref: '#/components/schemas/ClaimNotification'
    ClaimNotification:
      type: object
      description: Valores de sinistros (nos últimos 12 meses)
      required:
        - claimAmount
        - claimDescription
      properties:
        claimAmount:   
          description: "Valor do sinistro De acordo com ISO-4217."
          allOf:
            - $ref: '#/components/schemas/AmountDetails'  
        claimDescription:
          description: Descrição do sinistro
          type: string
          maxLength: 100
      additionalProperties: false         
    QuoteAutoRiskLocation:
        type: object
        description: Objeto que agrupa dados de local de risco.
        properties:
            isUsedCollege:
                type: boolean
                description: "Veículo é utilizado para ir à faculdade/colégio?"
            usedCollege:   
                type: object 
                properties:                                       
                    isKeptInGarage:
                        type: boolean
                        maxLength: 32
                        description: "Veículo é guardado em garagem/estacionamento fechado quando utilizado para ir à faculdade/colégio? Condicional, caso a opção '1. Sim' seja selecionada no campo 'utilizado para ir à faculdade?'"
                    distanceFromResidence:
                        type: string
                        maxLength: 20
                        description: "Distância da residência até unidade de ensino (Em km). Condicional, caso a opção '1. Sim' seja selecionada no campo 'utilizado para ir à faculdade?'"
            isUsedCommuteWork:
                type: boolean
                description: "Veículo é utilizado para ir ao trabalho?"
            usedCommuteWork:
                type: object 
                properties: 
                    isKeptInGarage:
                        type: boolean
                        maxLength: 32
                        description: "Veículo é guardado em garagem/estacionamento fechado quando utilizado para ir ao local de trabalho?Condicional, caso a opção '1. Sim' seja selecionada no campo 'utilizado para ir ao trabalho?'"
                    distanceFromResidence:
                        type: string
                        maxLength: 20
                        description: "Campo aberto para detalhamento da quilometragem. Condicional, caso a opção '1. Sim' seja selecionada no campo 'utilizado para ir ao trabalho?'"
            kmAveragePerWeek:
                    type: string
                    maxLength: 20
                    description: "Quantos KM em média o veículo circula por semana"
            housing:
                type: object
                properties:
                    type:
                        type: string
                        example: APARTAMENTO_OU_FLAT
                        enum: [APARTAMENTO_OU_FLAT,
                            CASA_OU_SOBRADO_EM_CONDOMINIO_FECHADO,
                            CASA_OU_SOBRADO,
                            CHACARA_FAZENDA_OU_SITIO]
                        description: "Qual é o tipo de residência do condutor principal?"
                    isKeptInGarage:
                        type: boolean
                        description: "O veículo é guardado em garagem/estacionamento fechado na residência?"
                    gateType:
                        type: string
                        example: PORTAO_AUTOMATICO
                        enum: [PORTAO_AUTOMATICO,
                            PORTAO_MANUAL]
                        description: "Tipo de portão do local onde o veículo é guardado na residência"
                    
    QuoteAutoCoverage:
      type: object
      required:
          - branch
          - code
          - isSeparateContractingAllowed
          - maxLMI
      properties:
        branch:
            description: Grupo e ramo da cobertura
            type: string
            maxLength: 4
            example: "0111"
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
            description: Descrição / Nome da Cobertura (Caso Código da Cobertura for "OUTRAS")
            type: string
            maxLength: 500
        isSeparateContractingAllowed:
            description: Permissão para Contratação Separada
            type: boolean
        maxLMI:
          description: Valor de Limite Máximo de Indenização (LMI) solicitado
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        internalCode:
            description: "Código interno da cobertura da seguradora"
            type: string
            maxLength: 500
            
    QuoteAutoQuoteResultCoverage:
      type: object
      required:
        - branch
        - code
        - isSeparateContractingAllowed
        - POS
        - fullIndemnity
      properties:
        branch:
          description: Grupo e ramo da cobertura
          type: string
          maxLength: 4
          example: "0111"
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
          description: Descrição / Nome da Cobertura (Caso Código da Cobertura for "OUTRAS")
          type: string
          maxLength: 500
        internalCode:
          description: "Código interno da cobertura da seguradora"
          type: string
          maxLength: 500
        isSeparateContractingAllowed:
            description: Permissão para Contratação Separada
            type: boolean  
        gracePeriod:
          type: integer
          maxLength: 5
          description: "Período de carência. OBS: Obrigatório, se houver"       
        gracePeriodicity:
          type: string
          description: "Periodicidade da carência. OBS: Obrigatório, se houver"
          example: DIA
          enum: [DIA,
                MES,
                ANO]     
        gracePeriodCountingMethod:   
          type: string
          description: "Indicador de dias úteis ou corridos da carência. OBS: Obrigatório, se houver"
          example: DIAS_UTEIS
          enum: [DIAS_UTEIS,
                DIAS_CORRIDOS] 
        gracePeriodStartDate:            
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-10-27'
          description: "Data de início da carência. OBS: Obrigatório, se houver"
        gracePeriodEndDate:            
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-10-27'
          description: "Data de fim da carência. OBS: Obrigatório, se houver"            
        deductible:
          description: Informações de franquia
          allOf:
            - $ref: '#/components/schemas/QuoteAutoResultDeductible'
        POS:
          description: Informações de POS
          allOf:
            - $ref: '#/components/schemas/POS'
        fullIndemnity:
          type: string
          description: "Franquia sobre indenização integral(caso aplicável)"
          example: VALOR
          enum: [VALOR,
                PERCENTUAL,
                OUTROS]  
    ResultQuoteQuoteAuto:
      type: object
      description: Objeto que agrupa dados específicos do ramo de cotação.
      required:
        - termStartDate
        - termType
        - insuranceType
        - termEndDate
        - currency
        - includesAssistanceServices
      properties:
        isCollectiveStipulated:
          description: "Apólice coletiva, por estipulação ou automóvel frota?"
          type: boolean
        hasAnIndividualItem:
          description: "Trata-se uma apólice individual com apenas um item?"
          type: boolean
        termStartDate: 
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-10-27'
          description: "Vigência das 24 horas do dia "
        termEndDate:  
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-10-27'
          description: "Até as 24 horas do dia"
        termType:
          type: string
          example: ANUAL
          enum: [ANUAL,
                ANUAL_INTERMITENTE,     
                PLURIANUAL,
                PLURIANUAL_INTERMITENTE,
                SEMESTRAL,
                SEMESTRAL_INTERMITENTE, 
                MENSAL,
                MENSAL_INTERMITENTE,
                DIARIO,
                DIARIO_INTERMITENTE,
                OUTROS] 
          description: "Tipo de vigência"
        insuranceType: 
          type: string
          description: "Tipo de Seguro"
          example: NOVO
          enum: [NOVO,    
                RENOVACAO]
        policyId:
          description: "Número para identificar a apólice atual"
          type: string
          maxLength: 100
          example: "111111"
        insurerId:
          description: "Nome para identifcar a congênere de renovação"
          type: string
          maxLength: 100
        identifierCode:
          description: "Código Identificador. Condicional, caso a opção '2. Renovação' seja selecionada no campo 'tipo de Seguro'"
          type: string
          example: "123"
          maxLength: 3
        bonusClass:
          description: "Classe de Bônus. Condicional, caso a opção '2. Renovação' seja selecionada no campo 'tipo de Seguro'"
          type: string
          example: "123"
          maxLength: 3
        currency:
          description: "Moeda de emissão do contrato de acordo com ISO-4217."
          type: string
          example: BRL
          enum: [AFN,AFA,ALL,ALK,DZD,USD,EUR,ADP,ESP,FRF,AOA,AOK,AON,AOR,XCD,ARS,ARA,ARP,ARY,AMD,RUR,AWG,AUD,ATS,AZN,AYM,AZM,BSD,BHD,BDT,BBD,BYN,BYB,BYR,BEC,BEF,BEL,BZD,XOF,BMD,INR,BTN,BOP,BOB,BOV,BAM,BAD,BWP,NOK,BRL,BRB,BRC,BRE,BRN,BRR,BND,BGN,BGJ,BGK,BGL,BUK,BIF,CVE,KHR,XAF,CAD,KYD,CLP,CLF,CNY,COP,COU,KMF,CDF,NZD,CRC,HRK,HRD,CUP,CUC,ANG,CYP,CZK,CSJ,CSK,DKK,DJF,DOP,ECS,ECV,EGP,SVC,GQE,ERN,EEK,SZL,ETB,XEU,FKP,FJD,FIM,XPF,GMD,GEL,GEK,DDM,DEM,GHS,GHC,GHP,GIP,GRD,GTQ,GBP,GNF,GNE,GNS,GWE,GWP,GYD,HTG,ITL,HNL,HKD,HUF,ISK,ISJ,IDR,XDR,IRR,IQD,IEP,ILS,ILP,ILR,JMD,JPY,JOD,KZT,KES,KPW,KRW,KWD,KGS,LAJ,LAK,LVL,LVR,LBP,LSL,ZAR,LSM,ZAL,LRD,LYD,CHF,LTL,LTT,LUC,LUF,LUL,MOP,MGA,MGF,MWK,MYR,MVR,MVQ,MLF,MTL,MTP,MRU,MRO,MUR,XUA,MXN,MXV,MXP,MDL,MNT,MAD,MZN,MZE,MZM,MMK,NAD,NPR,NLG,NIO,NIC,NGN,MKD,OMR,PKR,PAB,PGK,PYG,PEN,PEH,PEI,PES,PHP,PLN,PLZ,PTE,QAR,RON,ROK,ROL,RUB,RWF,SHP,WST,STN,STD,SAR,RSD,CSD,SCR,SLL,SGD,XSU,SKK,SIT,SBD,SOS,SSP,SDG,RHD,ESA,ESB,LKR,SDD,SDP,SRD,SRG,SEK,CHE,CHW,CHC,SYP,TWD,TJS,TJR,TZS,THB,TPE,TOP,TTD,TND,TRY,TRL,TMT,TMM,UGX,UGS,UGW,UAH,UAK,SUR,AED,USS,USN,UYU,UYI,UYW,UYN,UYP,UZS,VUV,VEB,VEF,VES,VND,VNC,YER,YDD,YUD,YUM,YUN,ZRN,ZRZ,ZMW,ZMK,ZWL,ZWC,ZWD,ZWN,ZWR,XBA,XFO,XBB,XRE,XBC,XBD,XFU,XTS,XXX,XAU,XPD,XPT,XAG]
        includesAssistanceServices:
          description: "Deseja contratação de serviços de assistência"
          type: boolean
        insuredObjects:
          type: array
          description: Lista que agrupa os dados de objetos segurados.  
          items:
            $ref: '#/components/schemas/QuoteAutoResultInsuredObject'
            
    QuoteStatusAuto:
      type: object
      required:
        - quoteCustomer
        - quoteData
        - quotes
      properties:
        quoteCustomer:
          oneOf:
            - $ref: '#/components/schemas/PersonalCustomerInfo'
            - $ref: '#/components/schemas/BusinessCustomerInfo'
        quoteData:
          $ref: '#/components/schemas/ResultQuoteQuoteAuto'
        quotes:
          type: array
          minItems: 1
          description: Lista de cotações enviadas pela seguradora.
          items:
            required:
               - susepProcessNumbers
               - assistances
               - premiumInfo
               - insurerQuoteId
            type: object
            description: Informações da cotação enviada pela seguradora
            properties:
              insurerQuoteId:
                type: string
                description: |
                  Id da proposta da segurada            
              susepProcessNumbers:
                description: "Número do Processo Susep das Coberturas"
                type: array
                items:
                  type: string
                  maxLength: 50
              coverages:
                type: array
                description: Lista que agrupa os dados de coberturas.
                items:
                  $ref: '#/components/schemas/QuoteAutoQuoteResultCoverage'
              assistances:
                type: array
                description: Lista que agrupa dados de assistências.
                items:
                  $ref: '#/components/schemas/QuoteResultAssistance'
              premiumInfo:
                $ref: '#/components/schemas/QuoteResultPremium'
        quoteCustomData:
          $ref: '#/components/schemas/QuoteCustomData'
          
    PersonalCustomerInfo:
      type: object
      properties:
        identification:
          $ref: '#/components/schemas/PersonalIdentificationData'
        qualification:
          $ref: '#/components/schemas/PersonalQualificationData'
        complimentaryInfo:
          $ref: '#/components/schemas/PersonalComplimentaryInformationData'
    BusinessCustomerInfo:
      type: object
      properties:
        identification:
          $ref: '#/components/schemas/BusinessIdentificationData'
        qualification:
          $ref: '#/components/schemas/BusinessQualificationData'
        complimentaryInfo:
          $ref: '#/components/schemas/BusinessComplimentaryInformationData'
            
    QuoteAutoResultInsuredObject:
      type: object
      required:
        - identification
        - doorsNumber
        - color
        - vehicleUse
        - isEquipmentsAttached
        - isBrandNew
        - fuel
        - isGasKit
        - isArmouredVehicle
        - isActiveTrackingDevice
        - overnightPostCode
        - coverages
        - licensePlateType
        - wasThereAClaim
      properties:
        identification:
          type: string
          maxLength: 100
          description: "Identificador do objeto segurado. Obs.: Para Fiança Locatícia, é a identificação do Contrato de Locação."
        model:
            type: object
            description: Objeto que agrupa os dados de modelo.
            required:
                - brand
                - modelName
            properties:
                brand:
                  description: "Marca do veículo"
                  type: string 
                  example: "Mercedes-Benz"
                  maxLength: 20
                modelName: 
                  type: string
                  description: Nome do modelo (Caso aplicável) 
                  maxLength: 100
                  example: "AMG Classe A"
                modelYear: 
                  type: string
                  maxLength: 4
                  pattern: '^\d{4}$'
                  description: "Ano do modelo (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
                  example: "2022"
                manufactureYear: 
                  type: string
                  maxLength: 4
                  pattern: '^\d{4}$'
                  description: "Ano de fabricação (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
                  example: "2022"
        modality: 
          type: string
          example: VALOR_DETERMINADO
          enum: [VALOR_DE_MERCADO_REFERENCIADO,
                VALOR_DETERMINADO,
                CRITERIO_DIVERSO,
                OUTROS]
          description: "Modalidade de cobertura (para cobertura de casco)"
        tableUsed:
          type: string
          example: MOLICAR
          enum: [MOLICAR,
                FIPE,
                JORNAL_DO_CARRO,
                VD,
                OUTRAS]
          description: "Tabela de referência adotada no plano (Casco, RCF-A, APP, Assistência e Outras Coberturas). Condicional, caso a opção '1. Valor de mercado referenciado' seja selecionada no campo 'Modalidade'"
        modelCode:
          type: string
          maxLength: 20
          description: "Código do modelo de acordo com a tabela de referência adotada no plano (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
          example: "123456-0"
        adjustmentFactor:
           type: string
           maxLength: 500
           description: "Fator de ajuste da tabela utilizada para valor médio de mercado"
           example: "80%"
        valueDetermined:
           type: string
           maxLength: 500
           description: "BRL - De acordo com ISO-4217. Condicional, caso a opção '2. Valor determinado' seja selecionada no campo 'Modalidade'"
        tax:
          type: object
          description: Objeto que agrupa os dados de imposto.
          required:
            - exempt
          properties:
              exempt:
                  type: boolean
                  description: "Isento de Imposto. Condicional, caso a opção '1. Sim' seja selecionada no campo 'Isento de Imposto'"
              type:
                  type: string
                  example: ICMS
                  enum: [ICMS,
                      IPI,
                      AMBOS]
                  description: "qual imposto isento(s)"
              exemptionPercentage:
                  type: string
                  maxLength: 10
                  description: "Percentual da isenção. Condicional, caso a opção '1. Sim' seja selecionada no campo 'Isento de Imposto'"
        doorsNumber:
            type: string
            maxLength: 10
            description: "Quantidade de portas"
            example: "2"
        color:   
            type: string
            maxLength: 100
            description: "Cor"
            example: "PRATA"
        licensePlate:
            type: string
            maxLength: 8
            description: "Placa"
            example: "ABC-0123"
        vehicleUse:
            type: array 
            items: 
                type: string
                example: LAZER
                enum: [LAZER,
                        LOCOMOCAO_DIARIA,
                        EXERCICIO_DO_TRABALHO]
                description: " Código de utilização do veículo (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
        commercialActivityType:
          description: " Tipo de atividade comercial. Condicional, caso a opção '3. Exercício do trabalho' seja selecionada no campo 'Código de utilização do veículo'"
          type: array
          items:
              type: string
              example: TAXI_PARTICULAR
              enum: [COMERCIAL_ATIVIDADE_PROFISSIONAL_PARA_REPRESENTACAO_COMERCIAL_VENDEDORES_PROMOTORES_E_PRESTADORES_DE_SERVICOS,
                    TAXI_PARTICULAR,
                    MOTORISTA_DE_APLICATIVO_APLICATIVO_DE_TRANSPORTE,
                    MOTO_TAXI,
                    LOTACAO,
                    TRANSPORTE_ESCOLAR,
                    LOCADORA_CONTRATO,
                    LOCADORA_AVULSO,
                    TRANSPORTE_DE_MERCADORIA,
                    PRESTA_SERVICO_PARA_TRANSPORTADORA,
                    TRANSPORTE_DE_PESSOAS_URBANO,
                    TRANSPORTE_DE_PESSOAS_FRETAMENTO_EMPRESARIAL_CONTINUO,
                    TRANSPORTE_DE_PESSOAS_FRETAMENTO_MISTO_FRETE_PESSOAS,
                    TRANSPORTE_DE_PESSOAS_FRETAMENTO_TURISTICO,
                    VEICULOS_OFICIAIS_ORGAO_PUBLICO,
                    AMBULANCIA,
                    BOMBEIROS,
                    COLETORES_DE_LIXO,
                    VIGILANCIA,
                    POLICIAMENTO,
                    COMPETICAO_EVENTOS,
                    AUTO_ESCOLAS,
                    TEST_DRIVE,
                    DIFERENCIADOS_EX_TRAILER_MOTORHOME_HOSPITAIS_VOLANTE_VEICULOS_COM_PLATAFORMA_PARA_REPAROS_DE_ENERGIA_ELETRICA_ETC,
                    OUTROS]
        riskManagementSystem:
            type: array
            items:
                type: string
                example: NAO
                enum: [NAO,
                      CADASTRO_DE_MOTORISTAS,
                      ESCOLTA_DE_CARGAS,
                      OUTROS,
                      NAO_INFORMADO]
                description: "Utiliza algum sistema de gerenciamento de risco?. Condicional, caso a opção '10. Transporte de Mercadoria' ou '11. Presta Serviço para Transportadora' seja selecionada no campo 'Tipo de Atividade Comercial'"
        isTransportedCargoInsurance:
          description: "Possui seguro da carga transportada? Condicional, caso a opção '10. Transporte de Mercadoria' ou '11. Presta Serviço para Transportadora' seja selecionada no campo 'Tipo de Atividade Comercial'"
          type: boolean
        loadsCarriedinsured:
            type: array
            items:
                type: string
                example: AUTO_PECAS
                enum: [AUTO_PECAS,
                    AUTOMOVEIS,
                    BEBIDAS,
                    BRINQUEDOS,
                    CALCADOS,
                    CARGA_MISTA,
                    CARGA_VIVA,
                    CIGARROS,
                    COMBUSTIVEIS_OU_INFLAMAVEIS,
                    CONFECCOES,
                    ELETRODOMESTICOS,
                    GASES,
                    GENERO_ALIMENTICIO,
                    HORTIFRUTI_GRANJEIROS,
                    LATICIOS,
                    LIXO,
                    MADEIRA,
                    MATERIAL_DE_CONSTRUCAO,
                    MEDICAMENTOS,
                    MOVEIS,
                    MUDANCAS,
                    PAPEIS,
                    PLASTICOS,
                    PNEU_OU_CAMERA_DE_AR,
                    PRODUTO_PERICIVEL,
                    PRODUTO_QUIMICO,
                    SUCO,
                    TECIDO,
                    VALORES,
                    VIDROS,
                    OUTRAS,
                    NAO_INFORMADO]
                description: "Quais as cargas transportadas pelo veículo segurado? Condicional, caso a opção '10. Transporte de Mercadoria' ou '11. Presta Serviço para Transportadora' seja selecionada no campo 'Tipo de Atividade Comercial'"
        isEquipmentsAttached:
             type: boolean
             description: "Utiliza algum sistema de gerenciamento de risco?"
        equipmentsAttached:
             type: object
             description: Objeto que agrupa os dados de equipamentos ou acessórios acoplados.
             properties:
                isDesireCoverage:
                    type: boolean
                    description: "Deseja cobertura destes equipamentos ou acessórios? Condicional, caso a opção '1. Sim' seja selecionada no campo 'Possui equipamentos ou acessórios acoplados, fixados ou instalados a veículos?'"
                equipmentsAttachedAmount:
                    description: "Valor dos equipamentos/acessórios - Condicional, caso a opção '1. Sim' seja selecionada no campo 'Deseja cobertura destes equipamentos ou acessórios?'"
                    allOf:
                        - $ref: '#/components/schemas/AmountDetails'
        chassis:
            type: string
            maxLength: 17
            description: "Chassi"
        isAuctionChassisRescheduled:
            type: boolean
            description: "Leilão ou Chassi remarcado"
        isBrandNew:
            type: boolean
            description: "Zero km?" 
        departureDateFromCarDealership:
            type: string
            maxLength: 10
            format: date
            description: "Data de saída da concessionária - Zero km? Condicional e opcional, caso a opção '1. Sim' seja selecionada no campo 'Zero km?'"
            pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
            example: '2022-10-27'
        vehicleInvoice:
            type: object
            description: Objeto que agrupa os dados de Nota Fiscal.
            properties:
                vehicleAmount:
                    description: "Valor de NF do veículo - Condicional e opcional, caso a opção '1. Sim' seja selecionada no campo 'Zero km?'"
                    allOf:
                        - $ref: '#/components/schemas/AmountDetails'
                vehicleNumber:
                    type: string
                    maxLength: 10
                    description: "Número da NF do veículo"
        fuel:
            type: string
            example: GASOLINA
            enum: [GASOLINA,
                FLEX,
                HIBRIDO,
                ELETRICO,
                DIESEL,
                GAS_GNV,
                ALCOOL_ETANOL,
                FLEX_E_GNV]
            description: "Combustível"
        isGasKit:
            type: boolean
            description: "Possui Kit-gás?"
        gasKit:
            type: object
            description: Objeto que agrupa os dados de Kit-gás.
            required:
                - isDesireCoverage
            properties:
                isDesireCoverage:
                    type: boolean
                    description: "Deseja cobertura do Kit-gás? Condicional, caso a opção '1. Sim' seja selecionada no campo 'Veículo blindado?'"       
                gasKitAmount:
                    description: "Valor do Kit-gás - Condicional, caso a opção '1. Sim' seja selecionada no campo 'Deseja cobertura do Kit-gás?'"
                    allOf:
                        - $ref: '#/components/schemas/AmountDetails' 
        isArmouredVehicle:
            type: boolean
            description: "Veículo blindado?"
        armouredVehicle:
            type: object
            description: Objeto que agrupa os dados de blindagem.
            properties:
                isDesireCoverage:
                    type: boolean
                    description: "Deseja cobertura da blindagem?"       
                armouredVehicleAmount:
                    description: "Valor da blindagem"
                    allOf:
                        - $ref: '#/components/schemas/AmountDetails'   
        isActiveTrackingDevice:
            type: boolean
            description: "Possui dispositivo rastreador próprio e ativo (adquirido e pago pelo cliente)?"    
        frequentTrafficArea:
            type: string
            example: REGIAO_NORDESTE
            enum: [MUNICIPIO_E_ARREDORES_ATE_KM,    
                DENTRO_DO_PROPRIO_ESTADO_DA_SEDE,
                REGIAO_NORTE,
                REGIAO_NORDESTE,
                REGIAO_CENTRO_OESTE,
                REGIAO_SUL,
                REGIAO_SUDESTE,
                MERCOSUL,
                AMERICA_DO_SUL,
                NAO_INFORMADO]
            description: "Qual a área de circulação mais frenquente?"
        overnightPostCode:
            type: string
            maxLength: 10
            description: "CEP da localidade de pernoite do veículo (Casco, RCF-A, APP, Assistência e Outras Coberturas)"
        riskLocationInfo:
          $ref: '#/components/schemas/QuoteAutoRiskLocation'
        beneficiaries:
          type: array
          description: Lista de dados de beneficiários.
          items:
            $ref: '#/components/schemas/QuoteAutoBeneficiary'
        coverages:
          type: array
          description: Lista que agrupa os dados de coberturas.
          items:
            $ref: '#/components/schemas/QuoteAutoResultInsuredObjectCoverage'
        isExtendCoverageAgedBetween18And25:
            type: boolean
            description: "Deseja estender a cobertura contratada para condutores na faixa etária dos 18 aos 25 anos?"    
        driverBetween18and25YearsOldGender:
            type: string
            description: "Condicional, caso seja selecionado '1. Sim' no campo 'Deseja estender a cobertura contratada para condutores na faixa etária dos 18 aos 25 anos?'sexo dos condutores na faixa etária dos 18 aos 25 anos"
            example: MASCULINO
            enum: [MASCULINO,
                    FEMININO,
                    MASCULINO_E_FEMININO,
                    PREFIRO_NAO_DECLARAR]
        wasThereAClaim:  
          description: "Houve sinistro no local nos últimos 12 meses?"
          type: boolean
        claimNotifications:
          description: Lista de sinistros e valores
          type: array
          items:
            $ref: '#/components/schemas/ClaimNotification'
        tariff:
          description: "Campo Categoria tarifária"
          type: string
          example: PASSEIO_NACIONAL
          enum: [PASSEIO_NACIONAL,
                PASSEIO_IMPORTADO,
                PICK_UP_NACIONAL_E_IMPORTADO,
                VEICULO_DE_CARGA_NACIONAL_E_IMPORTADO,
                MOTOCICLETA_NACIONAL_E_IMPORTADO,     
                ONIBUS_NACIONAL_E_IMPORTADO,
                UTILITARIO_NACIONAL_E_IMPORTADO]
        licensePlateType:
            description: "Tipo de placa"
            type: array
            items:
              type: string
              example: INCENDIO
              enum: [INCENDIO,
                    COLISAO,
                    ROUBO,
                    FURTO,
                    ALAGAMENTO_ENCHENTE,
                    INUNDACOES]
    QuoteAutoResultInsuredObjectCoverage:
      type: object
      required:
        - branch
        - code
        - LMI
        - daysForTotalCompensation
      properties:
        LMI:
          allOf:
              - $ref: '#/components/schemas/AmountDetails'
          description: "Limite máximo de indenização (LMI)"  
        branch:
          type: string
          maxLength: 4
          example: "0111"
          description: Grupo e Ramo da Cobertura (Conforme regulamentação Susep vigente)
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
          type: string
          maxLength: 500
          description: "Descrição / Nome da Cobertura (Obrigatório quando o campo 'Codigo' for preenchido com 'Outras')"
        internalCode:
          description: "Código interno da cobertura da seguradora"
          type: string
          maxLength: 500
        isMainCoverage:
          type: boolean
          description: "Indicador de Cobertura Principal"
        compensationType:
          type: string
          example: INTEGRAL
          enum: [
                INTEGRAL,
                PARCIAL,
                OUTROS]
        partialCompensationPercentage:
          type: string
          maxLength: 100
          description: "Percentual por indenização parcial(caso aplicável)"    
          example: "5%"
        daysForTotalCompensation:  
          type: string
          maxLength: 16
          description: "Número de dias de cobertura para direito à indenização pelo valor de novo (Casco)"
   
    
    PolicyDataAuto:
      type: array
      description: Lista que agrupa os dados das apólices históricos em categorias.                                                                                     
      items:
        type: object
        properties:
          policyInfo:
            $ref: '#/components/schemas/InsuranceAutoPolicyInfo'
          premium:
            $ref: '#/components/schemas/InsuranceAutoPremium'
          claim:
            $ref: '#/components/schemas/InsuranceAutoClaim'
        
    #### PolicyDataAuto
    
    InsuranceAutoPolicyInfo:    
      type: object
      required:
        - documentType 
        - policyId
        - issuanceType
        - issuanceDate
        - termStartDate
        - termEndDate
        - maxLMG
        - proposalId
        - insureds
        - insuredObjects
        - repairNetwork
        - repairedPartsUsageType
        - repairedPartsClassification
        - repairedPartsNationality
        - validityType
      properties:
        documentType:
          description: Tipo de Documento Emitido
          type: string
          enum: [APOLICE_INDIVIDUAL,
                BILHETE,
                CERTIFICADO,
                APOLICE_INDIVIDUAL_AUTOMOVEL,
                APOLICE_FROTA_AUTOMOVEL,
                CERTIFICADO_AUTOMOVEL]
          example: APOLICE_INDIVIDUAL
        policyId:
          description: Identificador da apólice ou bilhete
          type: string
          maxLength: 60
          example: "111111"
        susepProcessNumber: 
          description: Número SUSEP da apólice, conforme regulamentação vigente (Obrigatório caso apólice com coberturas do ramo Garantia)
          type: string
          maxLength: 60
        groupCertificateId: 
          description: "Identificador do Certificado(Caso Tipo de Documento Emitido for certificado)"
          type: string
          maxLength: 60
        issuanceType: 
          description: "Tipo de Emissão"
          type: string
          enum: [EMISSAO_PROPRIA,
                COSSEGURO_ACEITO]
          example: EMISSAO_PROPRIA
        issuanceDate:
          description: Data de emissão do documento
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        termStartDate: 
          description: Data de início de vigência do documento
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        termEndDate:
          description: Data de fim de vigência do documento
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        leadInsurerCode:
          description: "Código da seguradora líder para contratos com arranjo de cosseguro"
          type: string
          maxLength: 1024
        leadInsurerPolicyId:
          description: "Identificador da apólice seguradora líder para apólice de cosseguro aceito"
          type: string
          maxLength: 1024
        maxLMG:
          description: Valor Limite máximo de garantia (LMG)
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        proposalId:
          description: Identificador da Proposta
          type: string
          maxLength: 60
        insureds:
          type: array
          description: Lista que agrupa os dados dos segurados.                                                                                                                                                                                            
          items:
            $ref: '#/components/schemas/PersonalInfo'  
        beneficiaries: 
          type: array
          description: Lista que agrupa os dados dos beneficiários.                                                                                    
          items:
            $ref: '#/components/schemas/BeneficiaryInfo'
        principals:
          type: array
          description: Lista que agrupa os dados dos tomadores/garantidos.                                                                                                                                                                    
          items:
            $ref: '#/components/schemas/Principals'
        intermediaries:
          type: array
          description: Lista que agrupa os dados de intermediários.                                                                                                                                                        
          items:
            $ref: '#/components/schemas/Intermediary'
        insuredObjects:
          type: array
          description: Lista que agrupa os dados de objetos segurados.  
          items:
            $ref: '#/components/schemas/InsuranceAutoInsuredObject'
        coverages:    
          type: array
          description: Lista que agrupa os dados de coberturas.
          items:
            $ref: '#/components/schemas/InsuranceAutoCoverage'
        coinsuranceRetainedPercentage:
          description: "Percentual Retido em Cosseguro (Quando há cosseguro)"
          type: string
          pattern: '^100\.0{1,9}$|^\d{1,2}\.\d{1,9}$'
          example: '10.00'
        coinsurers:
          type: array
          description: Lista que agrupa os dados dos cosseguros. 
          items:
            $ref: '#/components/schemas/Coinsurer'
        repairNetwork:
          description: Rede de reparação dos veículos
          type: string
          enum: [
            LIVRE_ESCOLHA,
            REDE_REFERENCIADA,
            AMBAS,
            OUTROS
          ]
          example: REDE_REFERENCIADA
        repairNetworkOthers:
          description: Campo de detalhamento para quando a opcao de rede de reparacao dos veiculos for OUTROS
          type: string
          maxLength: 100
        repairedPartsUsageType:
          description: Tipos de peças passíveis de uso em reparos (Casco)
          type: string
          enum: [
            NOVA,
            USADA,
            NOVA_E_USADA
          ]
          example: NOVA_E_USADA
        repairedPartsClassification:
          description: Classificação das peças passíveis de uso em reparos (Casco)
          type: string
          enum: [
            ORIGINAL,
            COMPATIVEL,
            ORIGINAL_E_COMPATIVEL
          ]
          example: ORIGINAL_E_COMPATIVEL
        repairedPartsNationality:
          description: Nacionalidade das peças passíveis de uso em reparos (Casco)
          type: string
          enum: [
            NACIONAL,
            IMPORTADA,
            NACIONAL_E_IMPORTADA
          ]
          example: NACIONAL_E_IMPORTADA
        validityType:
          description: Tipo de vigência (Casco, RCF-A, APP, Assistência e Outras Coberturas)
          type: string
          enum: [
            ANUAL,
            ANUAL_INTERMITENTE,     
            PLURIANUAL,
            PLURIANUAL_INTERMITENTE,
            SEMESTRAL,
            SEMESTRAL_INTERMITENTE, 
            MENSAL,
            MENSAL_INTERMITENTE,
            DIARIO,
            DIARIO_INTERMITENTE,
            OUTROS
          ]
          example: SEMESTRAL_INTERMITENTE
        validityTypeOthers:
          description: Campo de detalhamento para quando a opcao do tipo de vigencia for OUTROS
          type: string
          maxLength: 100
        otherCompensations:
          description: Outras formas de recompensa (Caso aplicável)
          type: string
          maxLength: 500
        otherBenefits:
          description: Benefícios Adicionais (Caso aplicável)
          type: string
          enum: [
            SORTEIO_GRATUITO,
            CLUBE_DE_BENEFICIOS,
            CASH_BACK,
            DESCONTOS,
            CUSTOMIZAVEL
          ]
          example: DESCONTOS
        assistancePackages:
          description: Pacotes de Assistência (Caso aplicável)
          type: string
          enum: [
            ATE_10_SERVICOS,
            ATE_20_SERVICOS,
            ACIMA_DE_20_SERVICOS,
            CUSTOMIZAVEL
          ]
          example: ATE_10_SERVICOS
        isExpiredRiskPolicy:
          description: Apólice de Risco Decorrido (Caso aplicável)
          type: boolean
        bonusDiscountRate:
          description: Percentual de desconto por bônus (Casco, RCF-A, APP, Assistência; caso aplicável)
          type: string
          pattern: '^100\.0{1,9}$|^\d{1,2}\.\d{1,9}$' 
        bonusClass:
          description: Classe de bônus (Casco, RCF-A, APP, Assistência e Outras Coberturas; caso aplicável)
          type: string
          maxLength: 500
        drivers:
          type: array
          items:
            $ref: '#/components/schemas/Driver'  
    InsuranceAutoPremium:
      type: object
      description: Objeto que agrupa dados de prêmio.
      required:
        - amount
        - paymentsQuantity
        - coverages
        - payments
      properties:
        paymentsQuantity:
          description: Quantidade de parcelas do prêmio do contrato
          type: string
          maxLength: 3
          example: '4'
        amount:
          description: Valor total do premio do contrato
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        coverages:
          type: array
          description: Lista que agrupa os dados de coberturas.
          items:
            $ref: '#/components/schemas/InsuranceAutoPremiumCoverage'
        payments:
          type: array
          items:
            $ref: '#/components/schemas/Payment'
    InsuranceAutoClaim:
      type: object
      required:
        - identification
        - status
        - statusAlterationDate
        - occurrenceDate
        - warningDate
        - amount
        - coverages
      properties:
        identification:
          description: Identificador do processo de sinistro
          type: string
          maxLength: 50
        documentationDeliveryDate:
          description: Data de entrega da documentação completa
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        status:
          description: Status do sinistro     
          type: string
          example: ABERTO
          enum: [ABERTO,
                ENCERRADO_COM_INDENIZACAO,
                ENCERRADO_SEM_INDENIZACAO,
                REABERTO,
                CANCELADO_POR_ERRO_OPERACIONAL,
                AVALIACAO_INICIAL]
        statusAlterationDate:
          description: Data de alteração do status do sinistro
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        occurrenceDate:
          description: Data de ocorrência do sinistro
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        warningDate:
          description: Data de aviso do sinistro
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        thirdPartyClaimDate:
          description: Data de reclamação do terceiro
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        amount:
          $ref: '#/components/schemas/AmountDetails'
        denialJustification:
          description: "Justificativa da Negativa(Caso Status do Sinistro for 'ENCERRADO_SEM_INDENIZACAO')"
          type: string
          example: RISCO_EXCLUIDO
          enum: [RISCO_EXCLUIDO,
            RISCO_AGRAVADO,
            SEM_DOCUMENTACAO,
            DOCUMENTACAO_INCOMPLETA,
            PRESCRICAO,
            FORA_COBERTURA,
            OUTROS]
        denialJustificationDescription:
          description: "Descrição da Justificativa da Negativa(Caso Justificativa da Negativa for 'OUTROS')"
          type: string
          maxLength: 100  
        coverages:
          type: array
          description: Lista que agrupa os dados de coberturas.
          items:
            $ref: '#/components/schemas/InsuranceAutoClaimCoverage'
        branchInfo:
          $ref: '#/components/schemas/InsuranceAutoSpecificClaim'
    
    ####
        
    QuoteDataAuto:
      type: object
      description: Objeto que agrupa dados específicos do ramo de cotação.
      required:
        - termStartDate
        - termType
        - insuranceType
        - termEndDate
        - currency
        - includesAssistanceServices
        - coverages
      properties:
        isCollectiveStipulated:
          description: "Apólice coletiva, por estipulação ou automóvel frota?"
          type: boolean
        hasAnIndividualItem:
          description: "Trata-se uma apólice individual com apenas um item?"
          type: boolean
        termStartDate: 
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-10-27'
          description: "Vigência das 24 horas do dia "
        termEndDate:  
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-10-27'
          description: "Até as 24 horas do dia"
        termType:
          type: string
          example: ANUAL
          enum: [ANUAL,
                ANUAL_INTERMITENTE,     
                PLURIANUAL,
                PLURIANUAL_INTERMITENTE,
                SEMESTRAL,
                SEMESTRAL_INTERMITENTE, 
                MENSAL,
                MENSAL_INTERMITENTE,
                DIARIO,
                DIARIO_INTERMITENTE,
                OUTROS]
          description: "Tipo de vigência"
        insuranceType: 
          type: string
          description: "Tipo de Seguro"
          example: NOVO
          enum: [NOVO,    
                RENOVACAO]
        policyId:
          description: "Número para identificar a apólice atual"
          type: string
          maxLength: 100
          example: "111111"
        insurerId:
          description: "Nome para identifcar a congênere de renovação"
          type: string
          maxLength: 100
        identifierCode:
          description: "Código Identificador. Condicional, caso a opção '2. Renovação' seja selecionada no campo 'tipo de Seguro'"
          type: string
          example: "123"
          maxLength: 3
        bonusClass:
          description: "Classe de Bônus. Condicional, caso a opção '2. Renovação' seja selecionada no campo 'tipo de Seguro'"
          type: string
          example: "123"
          maxLength: 3
        currency:
          description: "Moeda de emissão do contrato de acordo com ISO-4217."
          type: string
          example: BRL
          enum: [AFN,AFA,ALL,ALK,DZD,USD,EUR,ADP,ESP,FRF,AOA,AOK,AON,AOR,XCD,ARS,ARA,ARP,ARY,AMD,RUR,AWG,AUD,ATS,AZN,AYM,AZM,BSD,BHD,BDT,BBD,BYN,BYB,BYR,BEC,BEF,BEL,BZD,XOF,BMD,INR,BTN,BOP,BOB,BOV,BAM,BAD,BWP,NOK,BRL,BRB,BRC,BRE,BRN,BRR,BND,BGN,BGJ,BGK,BGL,BUK,BIF,CVE,KHR,XAF,CAD,KYD,CLP,CLF,CNY,COP,COU,KMF,CDF,NZD,CRC,HRK,HRD,CUP,CUC,ANG,CYP,CZK,CSJ,CSK,DKK,DJF,DOP,ECS,ECV,EGP,SVC,GQE,ERN,EEK,SZL,ETB,XEU,FKP,FJD,FIM,XPF,GMD,GEL,GEK,DDM,DEM,GHS,GHC,GHP,GIP,GRD,GTQ,GBP,GNF,GNE,GNS,GWE,GWP,GYD,HTG,ITL,HNL,HKD,HUF,ISK,ISJ,IDR,XDR,IRR,IQD,IEP,ILS,ILP,ILR,JMD,JPY,JOD,KZT,KES,KPW,KRW,KWD,KGS,LAJ,LAK,LVL,LVR,LBP,LSL,ZAR,LSM,ZAL,LRD,LYD,CHF,LTL,LTT,LUC,LUF,LUL,MOP,MGA,MGF,MWK,MYR,MVR,MVQ,MLF,MTL,MTP,MRU,MRO,MUR,XUA,MXN,MXV,MXP,MDL,MNT,MAD,MZN,MZE,MZM,MMK,NAD,NPR,NLG,NIO,NIC,NGN,MKD,OMR,PKR,PAB,PGK,PYG,PEN,PEH,PEI,PES,PHP,PLN,PLZ,PTE,QAR,RON,ROK,ROL,RUB,RWF,SHP,WST,STN,STD,SAR,RSD,CSD,SCR,SLL,SGD,XSU,SKK,SIT,SBD,SOS,SSP,SDG,RHD,ESA,ESB,LKR,SDD,SDP,SRD,SRG,SEK,CHE,CHW,CHC,SYP,TWD,TJS,TJR,TZS,THB,TPE,TOP,TTD,TND,TRY,TRL,TMT,TMM,UGX,UGS,UGW,UAH,UAK,SUR,AED,USS,USN,UYU,UYI,UYW,UYN,UYP,UZS,VUV,VEB,VEF,VES,VND,VNC,YER,YDD,YUD,YUM,YUN,ZRN,ZRZ,ZMW,ZMK,ZWL,ZWC,ZWD,ZWN,ZWR,XBA,XFO,XBB,XRE,XBC,XBD,XFU,XTS,XXX,XAU,XPD,XPT,XAG]
        includesAssistanceServices:
          description: "Deseja contratação de serviços de assistência"
          type: boolean
        insuredObject:
          $ref: '#/components/schemas/QuoteAutoInsuredObject'     
        coverages:
          type: array
          description: Lista que agrupa os dados de coberturas.
          items:
            $ref: '#/components/schemas/QuoteAutoCoverage'       
                          
    QuoteResultAssistance:
      type: object
      required:
        - type
        - service
        - description
      properties:
        type:
          description: Tipo de prestação de serviços
          type: string
          example: ASSISTENCIA_AUTO
          enum: [
            ASSISTENCIA_AUTO,   
            ASSISTENCIA_RE,     
            ASSISTENCIA_VIDA,   
            BENEFICIOS,
            DESPACHANTE,        
            LOCACAO_DE_VEICULOS,
            REPAROS_AUTOMOTIVOS,
            REPAROS_EMERGENCIAIS,
            SERVICO_DE_MANUTENCAO,
            SERVICO_EM_CASO_DE_SINISTRO,
            TRANSPORTE_DO_EMERGENCIAL,
            OUTROS
          ]
        service:
          description: Nome do serviço prestado
          type: string
          example: AMPARO_DE_CRIANCAS
          enum: [
            ACIONAMENTO_E_OU_AGENDAMENTO_DE_LEVA_E_TRAZ,
            AMPARO_DE_CRIANCAS,
            APLICACAO_DE_VACINAS_EM_DOMICILIO,
            AQUECEDORES,
            ASSISTENCIA_A_ELETRODOMESTICOS,
            ASSISTENCIA_AUTO_E_OU_MOTO,
            ASSISTENCIA_BIKE,
            ASSISTENCIA_EM_VIAGEM,
            ASSISTENCIA_ESCOLAR,
            ASSISTENCIA_FUNERAL,
            ASSISTENCIA_FUNERAL_PET,
            ASSISTENCIA_INFORMATICA,
            ASSISTENCIA_NUTRICIONAL,
            ASSISTENCIA_PET,
            ASSISTENCIA_RESIDENCIAL,
            ASSISTENCIA_SUSTENTAVEL,
            ASSISTENCIA_VETERINARIA_EMERGENCIAL,
            ASSISTENCIAS_SAUDE_E_BEM_ESTAR,
            BABY_SITTER,
            CACAMBA,
            CARRO_RESERVA,
            CESTA_BASICA,
            CESTA_DE_ALIMENTOS,
            CESTA_NATALIDADE,
            CHAVEIRO,
            CHECK_UP,
            COBERTURA_PROVISORIA_DE_TELHADO,
            CONCIERGE,
            CONSERTO_DE_AR_CONDICIONADO,
            CONSERTO_DE_ELETRODOMESTICOS_LINHA_BRANCA,
            CONSERTO_DE_ELETROELETRONICO_LINHA_MARROM,
            CONSERTO_DE_PORTA_ONDULADA,
            CONSULTAS_VETERINARIAS,
            CONSULTORIA_ORCAMENTARIA,
            CONVENIENCIA_EM_VIAGEM,
            DEDETIZACAO,
            DESATOLAMENTO,
            DESCARTE_RESPONSAVEL,
            DESCONTOS_EM_CONSULTAS_E_EXAMES,
            DESCONTOS_EM_MEDICAMENTOS,
            DESENTUPIMENTO,
            DESINSETIZACAO_E_DESRATIZACAO,
            DESPACHANTE,
            DESPESAS_FARMACEUTICAS,
            DESPESAS_MEDICAS_CIRURGICAS_E_DE_HOSPITALIZACAO,
            DESPESAS_ODONTOLOGICAS,
            ELETRICISTA,
            EMERGENCIAS,
            ENCANADOR,
            ENVIO_DE_ACOMPANHANTE_EM_CASO_DE_ACIDENTE,
            ENVIO_DE_FAMILIAR_PARA_ACOMPANHAMENTO_DE_MENORES_DE_CATORZE_ANOS,
            ENVIO_DE_RACAO,
            ESCRITORIO_VIRTUAL,
            GUARDA_DE_ANIMAIS,
            GUARDA_DO_VEICULO,
            GUINCHO,
            HELP_DESK,
            HIDRAULICA,
            HOSPEDAGEM,
            HOSPEDAGEM_DE_ANIMAIS,
            INDICACAO_DE_BANHO_E_TOSA,
            INDICACAO_DE_PROFISSIONAIS,
            INFORMACAO_SOBRE_RACAS_DE_CAES,
            INFORMACAO_SOBRE_VENDA_DE_FILHOTES,
            INFORMACOES_SOBRE_VACINAS,
            INFORMACOES_VETERINARIAS_UTEIS,
            INSTALACAO_RESIDENCIA,
            INSTALACAO_DE_CHUVEIRO_ELETRICO_E_OU_TROCA_DE_RESISTENCIA,
            INSTALACAO_DE_SUPORTE_TV_ATE_SETENTA,
            LIMPEZA,
            LIMPEZA_DE_AR_CONDICIONADO,
            LIMPEZA_DE_CAIXA_D_AGUA,
            LIMPEZA_DE_CALHAS,
            LIMPEZA_DE_RALOS_E_SIFOES,
            LOCACAO_DE_ELETRODOMESTICOS,
            LOCACAO_DE_VEICULOS,
            LOCALIZACAO_DE_BAGAGEM,
            MANUTENCAO,
            MARTELINHO_E_REPARO_RAPIDO,
            MECANICO,
            MEIO_DE_TRANSPORTE,
            MONITORACAO_MEDICA,
            MOTO,
            MOTORISTA_AMIGO,
            MOTORISTA_SUBSTITUTO,
            MTA_MEIO_DE_TRANSPORTE_ALTERNATIVO,
            MUDANCA_E_GUARDA_DE_MOVEIS,
            ORGANIZACAO,
            ORIENTACAO_EM_CASO_DE_PERDA_DE_DOCUMENTOS,
            ORIENTACAO_MEDICA,
            ORIENTACAO_PSICOLOGICA,
            PERSONAL_FITNESS,
            REBOQUE,
            REBOQUE_BIKE,
            RECUPERACAO_DO_VEICULO,
            REGRESSO_ANTECIPADO_EM_CASO_DE_FALECIMENTO_DE_PARENTES,
            REGRESSO_DO_USUARIO_APOS_ALTA_HOSPITALAR,
            REINSTALACAO_E_REPARO_DO_VENTILADOR_DE_TETO,
            REMANEJAMENTO_DE_MOVEIS,
            REMOCAO_HOSPITALAR,
            REMOCAO_MEDICA,
            REMOCAO_MEDICA_INTER_HOSPITALAR,
            REPARACAO_AUTOMOTIVA,
            REPARO_DE_TELEFONIA,
            REPARO_EM_PORTOES_AUTOMATICOS,
            REPARO_FIXACAO_DE_ANTENAS,
            REPAROS_ELETRICOS,
            RETORNO_ANTECIPADO_AO_DOMICILIO,
            REVERSAO_DE_FOGAO,
            REVISAO_DE_INSTALACAO_ELETRICA,
            SEGUNDA_OPINIAO_MEDICA_INTERNACIONAL,
            SEGURANCA,
            SERRALHEIRO,
            SERVICO_DE_INDICACAO_MEDICA,
            SERVICO_DE_LIMPEZA,
            SERVICOS_AUTO,
            SERVICOS_ESPECIAIS_FIXACAO_DE_OBJETOS,
            SERVICOS_GERAIS,
            SUBSTITUICAO_DE_PNEUS,
            SUBSTITUICAO_DE_TELHAS,
            TAXI,
            TELEMEDICINA,
            TRANSMISSAO_DE_MENSAGENS_URGENTES,
            TRANSPORTE_E_ENVIO_DE_FAMILIAR,
            TRANSPORTE_E_GUARDA_MOVEIS,
            TRANSPORTE_ESCOLAR_PESSOAS,
            TRANSPORTE_VETERINARIO_EMERGENCIAL,
            TRASLADO_DE_CORPO,
            TROCA_DE_BATERIA,
            TROCA_DE_PNEUS,
            VERIFICACAO_DE_POSSIVEIS_VAZAMENTOS,
            VIDROS_E_ACESSORIOS,
            VIGILANCIA_E_SEGURANCA,
            OUTROS
          ]
        description:
          description: Descrição do serviço prestado
          type: string
          maxLength: 5000
        assistancePremiumAmount:
          description: Valor de Prêmio da Assistência
          allOf:
            - $ref: '#/components/schemas/AmountDetails'  
    QuoteAutoResultDeductible:
      type: object
      required:
        - type
      properties:
        type:
          description: Tipo de Franquia
          type: string
          example: REDUZIDA
          enum: [
            REDUZIDA,
            NORMAL,
            MAJORADA,
            DEDUTIVEL,
            OUTROS
          ]
        typeAdditionalInfo:
          description: Descriçao do Tipo de Franquia (Caso Tipo de Franquia for "OUTROS")
          type: string
          maxLength: 500
        deductibleAmount:
          description: Valor da Franquia
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        period:
          description: Prazo da Franquia
          type: integer
          maxLength: 5
          example: 10
        periodicity:
          description: Periodicidade da Franquia
          type: string
          example: DIA
          enum: [
            DIA,
            MES,
            ANO
          ]
        periodCountingMethod:
          description: Indicador de Dias Úteis ou Corridos (Caso aplicável)
          type: string
          example: DIAS_UTEIS
          enum: [
            DIAS_UTEIS,
            DIAS_CORRIDOS
          ]
        periodStartDate:
          description: Data de Início da Franquia
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2022-05-16'
        periodEndDate:
          description: Data de Fim da Franquia
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
          example: '2022-05-17'
        description:
          description: Descrição da Franquia
          type: string
          maxLength: 60
          example: Franquia de exemplo
    POS:
      type: object
      required:
        - applicationType
        - description
      properties:
        applicationType:
          description: Forma de Aplicação do POS
          type: string
          example: VALOR
          enum: [
            VALOR,
            PERCENTUAL,
            OUTROS
          ]
        description:
          description: Descrição do POS
          type: string
          maxLength: 60
          example: "Descrição de exemplo"
        minValue:
          description: Valor Mínimo do POS
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        maxValue:
          description: Valor Máximo do POS
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        percentage:
          description: Valor Percentual do POS
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        valueOthers: 
          description: Valor do POS
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
    QuoteResultPremium:
      type: object
      description: Objeto que agrupa dados de prêmio.
      required:
        - totalPremiumAmount
        - totalNetAmount
        - IOF
        - paymentsQuantity
        - coverages
        - payments
      properties:
        paymentsQuantity:
          description: Quantidade de parcelas do prêmio do contrato
          type: string
          maxLength: 3
          example: '4'
        totalPremiumAmount:
          description: Valor total do prêmio do contrato
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        totalNetAmount:
          description: Valor de prêmio líquido total
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        IOF:
          description: Valor do IOF
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        interestRateOverPayments:
          description: Taxa de juros sobre o parcelamento do prêmio
          type: number
          pattern: '^\d{1,3}\.\d{1,9}$'
          example: 10.00
        coverages:
          type: array
          description: Lista que agrupa os dados de coberturas.
          items:
            $ref: '#/components/schemas/QuoteResultPremiumCoverage'
        payments:
          type: array
          description: Lista que agrupa os dados de pagamentos.
          items:
            $ref: '#/components/schemas/QuoteResultPayment'
    QuoteResultPremiumCoverage:
      type: object
      required:
        - branch
        - code
        - premiumAmount
      properties:
        branch:
          description: Grupo e ramo da cobertura
          type: string
          maxLength: 4
          example: "0111"
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
          description: Descrição / Nome da Cobertura (Caso Código da Cobertura for "OUTRAS")
          type: string
          maxLength: 500
        internalCode:
          description: "Código interno da cobertura da seguradora"
          type: string
          maxLength: 500
        premiumAmount:
          description: Valor de Prêmio da Cobertura
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
    QuoteResultPayment:
      type: object
      required:
        - amount
        - paymentType
      properties:
        amount:
          description: Valor da parcela
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
        paymentType:
          description: "Meio de Pagamento Obs: Obrigatório caso Tipo de Movimento for  LIQUIDACAO_DE_PREMIO e LIQUIDACAO_DE_CUSTO_DE_AQUISICAO"
          type: string
          example: BOLETO
          enum: [BOLETO,
                TED,
                TEF,
                CARTAO,
                DOC,
                CHEQUE,
                DESCONTO_EM_FOLHA,  
                PIX,
                DINHEIRO_EM_ESPECIE,
                OUTROS]


    # Schemas fase2 -------------------------------------

    PersonalInfo:
      type: object
      required:
        - identification
        - identificationType
        - name
        - birthDate
        - postCode
        - city
        - state
        - country
        - address
      properties:
        identification:
          description: Documento de Identificação do segurado
          type: string
          maxLength: 60
          example: "12345678900"
        identificationType:
          description: Tipo de Documento do segurado
          type: string
          enum: [
            CPF,
            CNPJ,
            OUTROS
          ]
          example: CPF
        identificationTypeOthers:
          description: Campo de detalhamento para quando a opcao do tipo de documento do segurado for OUTROS
          type: string
          maxLength: 100
          example: RNE
        name:
          description: Nome ou Razão Social do segurado
          type: string
          maxLength: 60
          example: Nome Sobrenome
        birthDate:
          description: Data de nascimento do segurado
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '1990-06-12'
        postCode:
          description: Código Postal do segurado
          type: string
          maxLength: 60
          example: "10000000"
        email:
          description: E-mail do segurado (caso possua)
          type: string
          pattern: '^\S+@\S+\.\S+$'
          maxLength: 256
        city:
          description: Cidade do segurado (por extenso)
          type: string
          maxLength: 60
        state:
          description: Estado do segurado (por extenso)
          type: string 
          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', 'XX']
          example: 'AC'
        country:
          description: País do segurado (de acordo com o código "alpha3" do ISO-3166)
          type: string
          enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,
                BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,
                DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,
                GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,
                LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,
                NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,
                VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,
                TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
          example: BRA 
        address:
          description: Endereço do segurado (restante do endereço, excluindo cidade, estado e país)
          type: string
          maxLength: 60
    Principals: 
      type: object
      required:
        - identification
        - identificationType
        - name
        - postCode
        - city
        - state
        - country
        - address
      properties:
        identification:
          description: Documento de Identificação do Tomador/Garantidor
          type: string
          maxLength: 60
          example: "12345678900"
        identificationType:
          description: Tipo de Documento do Tomador/Garantidor
          type: string
          enum: [
            CPF,
            CNPJ,
            OUTROS
          ]
          example: CPF
        identificationTypeOthers:
          description: Campo de detalhamento para quando a opcao do tipo de documento do Tomador/Garantidor for OUTROS
          type: string
          maxLength: 100
          example: RNE
        name:
          description: Nome ou Razão Social do Tomador/Garantidor
          type: string
          maxLength: 60
          example: Nome Sobrenome
        postCode:
          description: Código Postal do Tomador/Garantidor
          type: string
          maxLength: 60
          example: "10000000"
        email:
          description: E-mail do Tomador/Garantidor (caso possua)
          type: string
          pattern: '^\S+@\S+\.\S+$'
          maxLength: 256
        city:
          description: Cidade do Tomador/Garantidor (por extenso)
          type: string
          maxLength: 60
        state:
          description: Estado do Tomador/Garantidor (por extenso)
          type: string 
          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', 'XX']
          example: 'AC'
        country:
          description: País do Tomador/Garantidor (de acordo com o código "alpha3" do ISO-3166)
          type: string
          enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,
                BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,
                DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,
                GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,
                LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,
                NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,
                VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,
                TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
          example: BRA 
        address:
          description: Endereço do Tomador/Garantidor (restante do endereço, excluindo cidade, estado e país)
          type: string
          maxLength: 60
        addressAditionalInfo:
          description: Endereço do Tomador/Garantidor (restante do endereço, excluindo cidade, estado e país)
          type: string
    BeneficiaryInfo:
      type: object
      required:
        - identification
        - identificationType
        - name
      properties:
        identification:
          description: Documento de Identificação do beneficiário
          type: string
          maxLength: 60
          example: "12345678900"
        identificationType:
          description: Tipo de Documento do beneficiário
          type: string
          enum: [
            CPF,
            CNPJ,
            OUTROS
          ]
          example: CPF
        identificationTypeOthers:
          description: Campo de detalhamento para quando a opcao do tipo de documento do beneficiário for OUTROS
          type: string
          maxLength: 100
          example: RNE
        name:
          description: Nome ou Razão Social do beneficiário
          type: string
          maxLength: 60
          example: Nome Sobrenome
    Intermediary:
      type: object
      required:
        - type
        - name
      properties:
        type:
          description: Tipo do Intermediador
          type: string
          enum: [ 
            CORRETOR,
            REPRESENTANTE,
            ESTIPULANTE_AVERBADOR_INSTITUIDOR,
            CORRESPONDENTE,
            AGENTE_DE_MICROSSEGUROS,
            OUTROS
          ]
          example: REPRESENTANTE
        typeOthers:
          description: Descricao do Tipo do Intermediador quando for informada a opcao OUTROS
          type: string
          maxLength: 100
        identification:
          description: Documento de Identificação do Intermediador(a) (Caso Tipo de Intermediador não seja CORRETOR ou quando for CORRETOR, porém o identificador do intermediador não seja informado)
          type: string
          maxLength: 60
          pattern: '^\d{1,60}$'
          example: "12345678900"
        brokerId:
          description: Identificador do intermediador da apólice - código Susep do corretor(a) (Caso Tipo de Intermediador for CORRETOR)
          type: string
          pattern: '^\d{9}$'
        identificationType:
          description: Tipo de Documento do Intermediador(a) (Caso Tipo de Intermediador não seja CORRETOR ou quando for CORRETOR, porém o identificador do intermediador não seja informado)
          type: string
          enum: [
            CPF,
            CNPJ,
            OUTROS
          ]
          example: CPF
        identificationTypeOthers:
          description: Campo de detalhamento para quando a opcao do tipo de documento do intermediador(a) for OUTROS
          type: string
          maxLength: 100
          example: RNE
        name:
          description: Nome ou Razão Social da Intermediador
          type: string
          maxLength: 60
          example: Nome Sobrenome
        postCode:
          description: Código Postal da Intermediador (Caso Tipo de Intermediador for ESTIPULANTE) 
          type: string
          maxLength: 60
          example: "10000000"
        city:
          description: Cidade da Intermediador (por extenso; Caso Tipo de Intermediador for ESTIPULANTE)
          type: string
          maxLength: 60
        state:
          description: Estado da Intermediador (por extenso; Caso Tipo de Intermediador for ESTIPULANTE)
          type: string
          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', 'XX']
          example: 'AC'
        country:
          description: País da Intermediador (de acordo com o código "alpha3" do ISO-3166; Caso Tipo de Intermediador for ESTIPULANTE)
          type: string
          enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,
                BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,
                DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,
                GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,
                LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,
                NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,
                VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,
                TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
          example: BRA 
        address:
          description: Endereço da Intermediador (restante do do endereço, excluindo cidade, estado e país; Caso Tipo de Intermediador for ESTIPULANTE)
          type: string
          maxLength: 60
    InsuranceAutoInsuredObject:
      type: object
      required:
        - identification
        - type
        - description
        - coverages
      properties:
        identification:
          type: string
          maxLength: 100
          description: "Identificador do objeto segurado"
        type:
          type: string
          description: Tipo do objeto segurado
          example: AUTOMOVEL
          enum: [AUTOMOVEL,
                CONDUTOR,
                FROTA]
        typeAdditionalInfo:
          type: string
          maxLength: 100
          description: "Descrição do tipo do objeto segurado(caso tipo de objeto segurado for outros)."
        description: 
          type: string
          maxLength: 1024
          description: Descrição do objeto segurado 
        hasExactVehicleIdentification:
          description: Identificação exata do veículo (Casco, RCF-A, APP, Assistência e Outras Coberturas)
          type: boolean
        modality:
          description: Modalidade de cobertura (para cobertura Casco)
          type: string
          example: VALOR_DETERMINADO
          enum: [
            VALOR_DE_MERCADO_REFERENCIADO,
            VALOR_DETERMINADO,
            CRITERIO_DIVERSO,
            OUTROS
          ]
        modalityOthers:
          description: Campo de detalhamento para quando a opcao da Modalidade de cobertura for OUTROS
          type: string
          maxLength: 100
        amountReferenceTable:
          description: Tabela de referência adotada no plano (Casco, RCF-A, APP, Assistência e Outras Coberturas)
          type: string
          example: MOLICAR
          enum: [
            MOLICAR,
            FIPE,
            JORNAL_DO_CARRO,
            VD,
            OUTRAS
          ]
        amountReferenceTableOthers:
          description: Campo de detalhamento para quando a opcao da Tabela de referencia adotada no plano for OUTRAS
          type: string
          maxLength: 100
        model:
          description: Código do modelo (caso aplicável)
          type: string
          maxLength: 8
        year:
          description: Ano do modelo (caso aplicável)
          type: string
          example: '2024'
          pattern: '^\d{4}$' 
        fareCategory:
          description: Categoria tarifária (Casco, RCF-A, APP, Assistência e Outras Coberturas; caso aplicável) - Conforme definido na tabela 9.9 do Manual de  Orientação para Envio de Dados, Circular Susep nº 522
          type: string
          example: '10'
          enum:
            - "10"
            - "11"
            - "14A"
            - "14B"
            - "14C"
            - "15"
            - "16"
            - "17"
            - "18"
            - "19"
            - "20"
            - "21"
            - "22"
            - "23"
            - "30"
            - "31"
            - "40"
            - "41"
            - "42"
            - "43"
            - "50"
            - "51"
            - "52"
            - "53"
            - "58"
            - "59"
            - "60"
            - "61"
            - "62"
            - "63"
            - "68"
            - "69"
            - "70"
            - "71"
            - "72"
            - "73"
            - "80"
            - "81"
            - "82"
            - "83"
            - "84"
            - "85"
            - "86"
            - "87"
            - "88"
            - "89"
            - "90"
            - "91"
            - "92"
            - "93"
            - "94"
            - "95"
            - "96"
            - "97"      
        riskPostCode:
          description: CEP de risco (caso aplicável)
          type: string
          maxLength: 60
          example: "10000000"
        vehicleUsage:
          description: Código de utilização do veículo (Casco, RCF-A, APP, Assistência e Outras Coberturas; caso aplicável)
          type: string
          example: LAZER
          enum: [
            LAZER,
            LOCOMOCAO_DIARIA,     
            EXERCICIO_DO_TRABALHO,
            OUTROS
          ]
        vehicleUsageOthers:
          description: Campo de detalhamento para quando a opcao do Codigo de utilizacao do veiculo for OUTROS
          type: string
          maxLength: 100
        frequentDestinationPostCode:
          description: CEP da localidade de destino frequente do veículo (caso aplicável)
          type: string
          maxLength: 60
          example: "10000000"
        overnightPostCode:
          description: CEP da localidade de pernoite do veículo (caso aplicável)
          type: string
          maxLength: 60
          example: "10000000"
        coverages:
          type: array
          description: Lista que agrupa os dados de coberturas.
          items:
            $ref: '#/components/schemas/InsuranceAutoInsuredObjectCoverage'
    InsuranceAutoInsuredObjectCoverage:
      type: object
      required:
        - branch
        - code
        - susepProcessNumber
        - LMI
        - termStartDate
        - termEndDate
        - isMainCoverage
        - feature
        - type
        - premiumAmount
        - premiumPeriodicity
      properties:
        branch:
          type: string
          maxLength: 4
          example: '0111'
          description: Grupo e Ramo da Cobertura (Conforme regulamentação Susep vigente)
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
          type: string
          maxLength: 500
          description: "Descrição / Nome da Cobertura (Obrigatório quando o campo 'Codigo' for preenchido com 'Outras')"
        internalCode:
          type: string
          maxLength: 500
          description: "Código interno da cobertura da seguradora(obrigatório se houver)"
        susepProcessNumber:
            type: string
            maxLength: 50
        LMI:          
          $ref: '#/components/schemas/AmountDetails'
        termStartDate: 
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
          description: "Data de início de vigência da cobertura"
        termEndDate:  
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
          description: "Data de fim de vigência da cobertura"
        isMainCoverage:
          type: boolean
          description: "Cobertura Principal"
        feature:
          type: string
          description: "Característica da cobertura"
          example: MASSIFICADOS
          enum: [MASSIFICADOS,
                MASSIFICADOS_MICROSEGUROS,
                GRANDES_RISCOS]
        type:    
          type: string
          description: "Tipo de cobertura"
          example: PARAMETRICO
          enum: [PARAMETRICO,
                INTERMITENTE,
                REGULAR_COMUM,
                CAPITAL_GLOBAL,
                PARAMETRICO_E_INTERMITENTE]    
        gracePeriod:
          type: integer
          maxLength: 5
          description: "Período de carência. OBS: Obrigatório, se houver"       
        gracePeriodicity:
          type: string
          description: "Periodicidade da carência. OBS: Obrigatório, se houver"
          example: DIA
          enum: [DIA,
                MES,
                ANO]     
        gracePeriodCountingMethod:   
          type: string
          description: "Indicador de dias úteis ou corridos da carência. OBS: Obrigatório, se houver"
          example: DIAS_UTEIS
          enum: [DIAS_UTEIS,
                DIAS_CORRIDOS] 
        gracePeriodStartDate:            
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
          description: "Data de início da carência. OBS: Obrigatório, se houver"
        gracePeriodEndDate:            
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
          description: "Data de fim da carência. OBS: Obrigatório, se houver"
        adjustmentRate:
          description: Percentual de ajuste aplicado à tabela de referência (caso aplicável)
          type: string
          pattern: '^100\.0{1,9}$|^\d{1,2}\.\d{1,9}$'
          example: '10.00'
        premiumAmount:
          $ref: '#/components/schemas/AmountDetails'
        premiumPeriodicity:
          description: Periodicidade de pagamento do premio
          type: string
          enum: [MENSAL,
                BIMESTRAL,
                TRIMESTRAL,
                QUADRIMESTRAL,
                SEMESTRAL,
                ANUAL,
                ESPORADICA,
                PAGAMENTO_UNICO,
                OUTROS]
        premiumPeriodicityOthers:
          description: Descricao da Periodicidade de pagamento do premio quando for informada a opcao OUTROS
          type: string
          maxLength: 100
        compensationType:
          description: Tipo de indenização por cobertura contratada (caso aplicável)
          type: string
          enum: [
            INTEGRAL,
            PARCIAL,
            OUTROS
          ]
          example: PARCIAL
        compensationTypeOthers:
          description: Campo de detalhamento para quando a opcao do tipo de indenizacao por cobertura contratada for OUTROS
          type: string
          maxLength: 100
        partialCompensationPercentage:
          description: Percentual por indenização parcial (caso aplicável)
          type: string
          pattern: '^100\.0{1,9}$|^\d{1,2}\.\d{1,9}$'
          example: '10.00'
        percentageOverLMI:
          description: Percentual aplicado sobre o limite máximo de indenização (caso aplicável)
          type: string
          pattern: '^100\.0{1,9}$|^\d{1,2}\.\d{1,9}$'
          example: '10.00'
        daysForTotalCompensation:
          description: Número de dias de cobertura para direito à indenização (caso aplicável)
          type: integer
          maxLength: 4
        boundCoverage:
          description: Cobertura vinculada (RCF-A, APP, Assistência e Outras Coberturas; caso aplicável)
          type: string
          enum: [
            VEICULO,
            CONDUTOR,
            OUTROS
          ]
          example: VEICULO
        boundCoverageOthers:
          description: Campo de detalhamento para quando a opcao da Cobertura vinculada for OUTROS
          type: string
          maxLength: 100
    InsuranceAutoCoverage:
      type: object
      required:
        - branch
        - code
      minProperties: 3
      properties:
        branch:
          description: Grupo e ramo da cobertura
          type: string
          maxLength: 4
          example: '0111'
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
          description: Descrição / Nome da Cobertura (Caso Código da Cobertura for "OUTRAS")
          type: string
          maxLength: 500
        deductible:
          $ref: '#/components/schemas/InsuranceAutoDeductible'
        POS:
          $ref: '#/components/schemas/InsuranceAutoPOS'
    InsuranceAutoDeductible:
      type: object
      description: Informações de franquia
      required:
        - type
      properties:
        type:
          description: Tipo de Franquia
          type: string
          enum: [
            REDUZIDA,
            NORMAL,
            MAJORADA,
            ISENTA,
            FLEXIVEL,
            OUTROS
          ]
          example: REDUZIDA
        typeAdditionalInfo:
          description: Descriçao do Tipo de Franquia (Caso Tipo de Franquia for "OUTROS")
          type: string
          maxLength: 500
        amount:
          $ref: '#/components/schemas/AmountDetails'
        period:
          description: Prazo da Franquia (caso aplicável)
          type: integer
          maxLength: 5
          example: 10
        periodicity:
          description: Periodicidade da Franquia (caso aplicável)
          type: string
          enum: [
            DIA,
            MES,
            ANO
          ]
          example: DIA
        periodCountingMethod:
          description: Indicador de Dias Úteis ou Corridos (caso aplicável)
          type: string
          enum: [
            DIAS_UTEIS,
            DIAS_CORRIDOS
          ]
          example: DIAS_UTEIS
        periodStartDate:
          description: Data de Início da Franquia (caso aplicável)
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-05-16'
        periodEndDate:
          description: Data de Fim da Franquia (caso aplicável)
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-05-17'
        description:
          description: Descrição da Franquia (caso aplicável)
          type: string
          maxLength: 60
          example: Franquia de exemplo
        hasDeductibleOverTotalCompensation:
          description: Indicador de Franquia sobre indenização integral (caso aplicável)
          type: boolean
    InsuranceAutoPOS:
      type: object
      description: Informações de franquia
      required:
        - applicationType
      properties:
        applicationType:
          description: Forma de Aplicação do POS
          type: string
          enum: [
            VALOR,
            PERCENTUAL,
            OUTROS
          ]
          example: VALOR
        description:
          description: Descrição do POS (caso Forma de aplicação do POS for Outros)
          type: string
          maxLength: 60
          example: "Descrição de exemplo"
        minValue:
          $ref: '#/components/schemas/AmountDetails'
        maxValue:
          $ref: '#/components/schemas/AmountDetails'
        percentage:
          $ref: '#/components/schemas/AmountDetails'
        valueOthers: 
          $ref: '#/components/schemas/AmountDetails'
    Coinsurer:
      type: object
      required:
        - identification
        - cededPercentage
      properties:
        identification:
          description: "Identificação da congênere, cessionário do cosseguro. Obs: Obrigatório quando há cosseguro"
          type: string
          maxLength: 60
        cededPercentage:
          description: "Percentual cedido para a congênere para contratos de cosseguro cedido. Obs: Obrigatório quando há cosseguro"
          type: string
          pattern: '^100\.0{1,9}$|^\d{1,2}\.\d{1,9}$'
          example: '10.00'
    InsuranceAutoPremiumCoverage:
      type: object
      required:
        - branch
        - code
        - premiumAmount
      properties:
        branch:
          description: Grupo e ramo da cobertura
          type: string
          maxLength: 4
          example: '0111'
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
          description: Descrição / Nome da Cobertura (Caso Código da Cobertura for "OUTRAS")
          type: string
          maxLength: 500
        premiumAmount:
          description: Valor de premio da cobertura
          allOf:
            - $ref: '#/components/schemas/AmountDetails'
    Payment:
      type: object
      required:
        - movementDate
        - movementType
        - movementPaymentsNumber
        - amount
        - maturityDate
      properties:
        movementDate:
          description: Data do movimento de prêmio
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        movementType:
          description: Tipo do Movimento
          type: string
          enum: [LIQUIDACAO_DE_PREMIO,
                LIQUIDACAO_DE_RESTITUICAO_DE_PREMIO,
                LIQUIDACAO_DE_CUSTO_DE_AQUISICAO,
                LIQUIDACAO_DE_RESTITUICAO_DE_CUSTO_DE_AQUISICAO,
                ESTORNO_DE_PREMIO,
                ESTORNO_DE_RESTITUICAO_DE_PREMIO,
                ESTORNO_DE_CUSTO_DE_AQUISICAO,
                EMISSAO_DE_PREMIO_SEM_ENDOSSO,
                CANCELAMENTO_DE_PARCELA,
                EMISSAO_DE_RESTITUICAO_DE_PREMIO_SEM_ENDOSSO,
                REABERTURA_DE_PARCELA,
                BAIXA_POR_PERDA,
                CANCELAMENTO_DE_PREMIO_E_PARCELA_SEM_ENDOSSO,
                COMPENSACAO_FINANCEIRA]
          example: LIQUIDACAO_DE_PREMIO
        movementOrigin:
          description: "Origem do Movimento. Obs: Obrigatório caso Tipo de Movimento for LIQUIDACAO_DE_PREMIO e ESTORNO_DE_PREMIO"
          type: string
          enum: [EMISSAO_DIRETA,
            EMISSAO_ACEITA_DE_COSSEGURO,
            EMISSAO_CEDIDA_DE_COSSEGURO]
          example: EMISSAO_DIRETA
        movementPaymentsNumber:
          description: Identificador da parcela do movimento
          type: string
          maxLength: 3
        amount:
          $ref: '#/components/schemas/AmountDetails'
        maturityDate:
          description: Data de Vencimento da Parcela
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          maxLength: 10
          example: '2022-12-31'
        tellerId:
          description: "Documento do Pagador/Recebedor Obs: Obrigatório caso Tipo de Movimento for  LIQUIDACAO_DE_PREMIO e LIQUIDACAO_DE_CUSTO_DE_AQUISICAO"
          type: string
          maxLength: 1024
        tellerIdType:
          description: "Tipo do Documento do Pagador/Recebedor Obs: Obrigatório caso Tipo de Movimento for  LIQUIDACAO_DE_PREMIO e LIQUIDACAO_DE_CUSTO_DE_AQUISICAO"
          type: string
          enum: [CPF,
            CNPJ,
            OUTROS]
          example: CPF
        tellerIdOthers:
          description: Descricao do campo de tipo do documento do pagador/recebedor quando a opcao escolhida for OUTROS
          type: string
          maxLength: 100
          example: RNE
        tellerName:
          description: "Nome ou Razão Social do Pagador/Recebedor Obs: Obrigatório caso Tipo de Movimento for  LIQUIDACAO_DE_PREMIO e LIQUIDACAO_DE_CUSTO_DE_AQUISICAO"
          type: string
          maxLength: 100
        financialInstitutionCode:
          description: "Código da Instituição Financeiro do Pagamento Obs: Obrigatório caso Tipo de Movimento for  LIQUIDACAO_DE_PREMIO e LIQUIDACAO_DE_CUSTO_DE_AQUISICAO"
          type: string
          maxLength: 100
        paymentType:
          description: "Meio de Pagamento Obs: Obrigatório caso Tipo de Movimento for  LIQUIDACAO_DE_PREMIO e LIQUIDACAO_DE_CUSTO_DE_AQUISICAO"
          type: string
          enum: [BOLETO,
                TED,
                TEF,
                CARTAO,
                DOC,
                CHEQUE,
                DESCONTO_EM_FOLHA,  
                PIX,
                DINHEIRO_EM_ESPECIE,
                OUTROS]
          example: BOLETO
        paymentTypeOthers:
          description: Campo de detalhamento para quando a opcao do meio de pagamento for OUTROS
          type: string
          maxLength: 100
    InsuranceAutoClaimCoverage:
      type: object
      required:
        - branch
        - code
      properties:
        insuredObjectId:
          description: Identificador do Objeto Segurado (Caso aplicável)
          type: string
          maxLength: 100
        branch:
          description: Grupo e ramo da cobertura
          type: string
          maxLength: 4
          example: '0111'
        code:
            type: string
            description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
            example: CASCO_COMPREENSIVA
            enum: [
              CASCO_COMPREENSIVA,
              CASCO_INCENDIO_ROUBO_E_FURTO,
              CASCO_ROUBO_E_FURTO,
              CASCO_INCENDIO,
              CASCO_ALAGAMENTO,
              CASCO_COLISAO_INDENIZACAO_PARCIAL,
              CASCO_COLISAO_INDENIZACAO_INTEGRAL,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
              RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
              ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
              VIDROS,
              DIARIA_POR_INDISPONIBILIDADE,
              LFR_LANTERNAS_FAROIS_E_RETROVISORES,
              ACESSORIOS_E_EQUIPAMENTOS,
              CARRO_RESERVA,
              PEQUENOS_REPAROS,
              RESPONSABILIDADE_CIVIL_CARTA_VERDE,
              RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
              OUTRAS
            ]
        description:
          description: Descrição / Nome da Cobertura (Caso Código da Cobertura for "OUTRAS")
          type: string
          maxLength: 500
        warningDate:
          description: Data de Aviso do Sinistro por Cobertura (Caso aplicável)
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        thirdPartyClaimDate:
          description: Data de Reclamação do Terceiro por Cobertura (Caso aplicável)
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
    InsuranceAutoSpecificClaim:
      description: Informações do Anexo Específico
      type: object
      properties:
        covenantNumber:
          description: Número do convênio (Caso Responsabilidade Civil - Carta Verde)
          type: string
          maxLength: 60
        occurrenceCause:
          description: Causa do Sinistro (Caso aplicável)
          type: string
          example: ROUBO_OU_FURTO
          enum: [
            ROUBO_OU_FURTO,
            ROUBO,
            FURTO,
            COLISAO_PARCIAL,
            COLISAO_INDENIZACAO_INTEGRAL,
            INCENDIO,
            ASSISTENCIA_HORAS,
            OUTROS
          ]
        occurrenceCauseOthers:
          description: Campo de detalhamento para quando a opcao da causa do sinistro for OUTROS
          type: string
          maxLength: 100
        driverAtOccurrenceSex:
          description: Sexo do condutor do veículo no momento do sinistro (Caso aplicável)
          type: string
          example: FEMININO
          enum: [
            MASCULINO,
            FEMININO,
            NAO_DECLARADO,
            OUTROS
          ]
        driverAtOccurrenceSexOthers:
          description: Campo de detalhamento para quando a opcao do sexo do condutor for OUTROS
          type: string
          maxLength: 100
        driverAtOccurrenceBirthDate:
          description: Data de nascimento do condutor do veículo no momento do sinistro (Caso aplicável)
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        occurrenceCountry:
          description: País de ocorrência do sinistro (Caso Responsabilidade Civil - Carta Verde)
          type: string
          maxLength: 3
          enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
          example: BRA 
        occurrencePostCode:
          description: CEP da localidade de ocorrência do sinistro (Caso aplicável)
          type: string
          pattern: '^\d{8}$'
          example: "10000000"
    Driver:
      type: object
      description: Condutores (Caso tipo de objeto for AUTOMOVEL ou CONDUTOR)
      properties:
        identification:
          description: Documento de Identificação do Condutor
          type: string
          maxLength: 60
          example: "12345678900"
        sex:
          description: Sexo do condutor utilizado para a taxação (caso aplicável)
          type: string
          example: FEMININO
          enum: [
            MASCULINO,
            FEMININO,
            NAO_DECLARADO,
            OUTROS
          ]
        sexOthers:
          description: Campo de detalhamento para quando a opcao do sexo do condutor for OUTROS
          type: string
          maxLength: 100
        birthDate:
          description: Data de nascimento do condutor (caso aplicável)
          type: string
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2022-12-31'
        licensedExperience:
          description: Tempo de habilitação do condutor utilizado para taxação (caso aplicável)
          type: integer
          maxLength: 3
          example: 4
    
    HistoricalPersonalComplimentaryInformationData:
      $ref: "#/components/schemas/PersonalComplimentaryInformationData"
    HistoricalPersonalIdentificationData:
      $ref: "#/components/schemas/PersonalIdentificationData"
    PersonalProcurator:
      type: object
      required:
        - nature
      properties:
        nature:
          $ref: '#/components/schemas/EnumProcuratorsNaturePersonal'
        cpfNumber:
          type: string
          maxLength: 11
          pattern: '^\d{11}$'
          example: '73677831148'
          description: '(Caso Natureza dos poderes vigentes de representante for “Representante legal” ou “Procurador”) CPF do representante'
        civilName:
          type: string
          maxLength: 70
          pattern: '^[A-Za-z\sáâãéêíïóôõúçÁÂÃÉÍÏÓÔÕÚÇ]+$'
          example: Elza Milena Stefany Teixeira
          description: '(Caso Natureza dos poderes vigentes de representante for “Representante legal” ou “Procurador”) Nome ou razão social do representante'
        socialName:
          type: string
          maxLength: 70
          pattern: '^[A-Za-z\sáâãéêíïóôõúçÁÂÃÉÍÏÓÔÕÚÇ]+$'
          example: 'string'
          description: '(Caso Natureza dos poderes vigentes de representante for “Representante legal” ou “Procurador”) Nome social do representante'
      additionalProperties: false
    HistoricalPersonalQualificationData:
      $ref: "#/components/schemas/PersonalQualificationData"
    
    HistoricalBusinessComplimentaryInformationData:
      $ref: "#/components/schemas/BusinessComplimentaryInformationData"
    HistoricalBusinessIdentificationData:
      $ref: "#/components/schemas/BusinessIdentificationData"
    BusinessProcurator:
      type: object
      required:
        - nature
      properties:
        nature:
          $ref: '#/components/schemas/EnumProcuratorsNatureBusiness'
        cnpjCpfNumber:
          type: string
          maxLength: 14
          pattern: '^\d{11}$|^\d{14}$'
          example: '73677831148'
          description: '(Caso Natureza dos poderes vigentes de representante for “Representante legal” ou “Procurador”) CPF ou CNPJ do representante'
        civilName:
          type: string
          maxLength: 70
          pattern: '^[A-Za-z\sáâãéêíïóôõúçÁÂÃÉÍÏÓÔÕÚÇ]+$'
          example: Elza Milena Stefany Teixeira
          description: '(Caso Natureza dos poderes vigentes de representante for “Representante legal” ou “Procurador”) Nome ou razão social do representante'
        socialName:
          type: string
          maxLength: 70
          pattern: '^[A-Za-z\sáâãéêíïóôõúçÁÂÃÉÍÏÓÔÕÚÇ]+$'
          example: 'string'
          description: '(Caso Natureza dos poderes vigentes de representante for “Representante legal” ou “Procurador”) Nome social do representante'  
      additionalProperties: false
    HistoricalBusinessQualificationData:
      $ref: "#/components/schemas/BusinessQualificationData"
    
    BusinessComplimentaryInformationData:
      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:
        - startDate
        - updateDateTime
        - productsServices
      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 do bloco de Relacionamento, conforme especificação RFC-3339, formato UTC.'
        startDate:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2014-05-21'
          description: Data mais antiga de início de relacionamento, considerando todos os contratos (vigentes e não vigentes). Os contratos não vigentes considerados devem contemplar, no mínimo o período indicado na Tabela 4.1.
        relationshipBeginning:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2014-05-21'
          description: Campo deve ser preenchido com a data da apólice/contrato vigente mais antiga. (caso haja contrato vigente)
        productsServices:
          type: array
          minItems: 1
          items:
            type: object
            description: Lista de todos os contratos vigentes e não vigentes.
            required: 
              - contract
              - type
            properties:
              contract:
                type: string
                maxLength: 60
                description: Campo deve conter todos os contratos do cliente nos últimos 12 meses (número da apólice individual ou contrato ou certificado ou bilhete)
              type:
                $ref: '#/components/schemas/EnumProductServiceType'
              insuranceLineCode:
                type: string
                maxLength: 4
                example: '6272'
                description: Indicar para cada contrato, caso aplicável, o código do ramo, conforme listagem de códigos definida em regulamentação específica sobre contabilização em ramos. - Caso tipo de produto do contrato for “Seguros de Danos.  
              procurators:
                type: array
                items:
                  $ref: '#/components/schemas/BusinessProcurator'
                minItems: 1
                description: Lista dos representantes. De preenchimento obrigatório se houver representante.
          additionalProperties: false
      additionalProperties: false
    BusinessIdentificationData:
      type: object
      description: Conjunto de informações relativas a Identificação ou seja a ação e o efeito de identificar de forma única a pessoa jurídica através de seus dados cadastrais
      required:
        - updateDateTime
        - brandName
        - companyInfo
        - businessName
        - document
        - contact
      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 do bloco, conforme especificação RFC-3339'
        businessId:
          type: string
          maxLength: 100
          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 dentro da transmissora. 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 do Open Insurance. 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
        companyInfo:  
          type: object
          description: Informações referente a sociedade a qual a marca pertence.
          required:
          - name
          - cnpjNumber
          properties:
              cnpjNumber:
                  type: string
                  pattern: '\d{14}|^NA$'
                  maxLength: 14
                  example: '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
              name:
                  type: string
                  maxLength: 70
                  pattern: '[\w\W\s]*'
                  example: Empresa da Organização A
                  description: Nome da Instituição, pertencente à Marca, responsável pela Dependência
        businessName:
          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
        businessTradeName:
          type: string
          maxLength: 70
          pattern: '[\w\W\s]*'
          example: Organização B
          description: Nome fantasia - Se Aplicável
        incorporationDate:
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2012-05-21'
          description: 'Data de constituição, conforme especificação RFC-3339' 
        document:
          $ref: '#/components/schemas/BusinessDocument'
        type:
          type: string
          example: PRIVADO
          enum: 
            - PRIVADO 
            - PUBLICO 
          description: Campo deve ser preenchido com o Tipo Pessoa Jurídica
        contact:
          $ref: '#/components/schemas/BusinessContact'
        parties:
          $ref: '#/components/schemas/BusinessParties'
    BusinessQualificationData:
      type: object
      description: 'Objeto que reúne as informações relativas ao processo de qualificação.'
      required:
        - updateDateTime
      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 do bloco, conforme especificação RFC-3339'
        mainBranch:
          type: string
          maxLength: 20
          description: 'Código do ramo da atividade da empresa consultada, segundo padrão CNAE (Classificação Nacional de Atividades Econômicas).'
        secondaryBranch:
          type: string
          maxLength: 200
          description: Códigos relativos às demais atividades econômicas da empresa, segundo padrão CNAE (Classificação Nacional de Atividades Econômicas). Se disponível.
        informedRevenue:
          type: object
          description: Objeto que agrupa dados de receita informada.
          properties:
            incomeFrequency:
              $ref: '#/components/schemas/EnumIncomeFrequency'
            currency:
              type: string
              maxLength: 3
              example: BRL
              description: 'Moeda referente ao valor do faturamento, segundo modelo ISO-4217.'
              enum: [AFN,AFA,ALL,ALK,DZD,USD,EUR,ADP,ESP,FRF,AOA,AOK,AON,AOR,XCD,ARS,ARA,ARP,ARY,AMD,RUR,AWG,AUD,ATS,AZN,AYM,AZM,BSD,BHD,BDT,BBD,BYN,BYB,BYR,BEC,BEF,BEL,BZD,XOF,BMD,INR,BTN,BOP,BOB,BOV,BAM,BAD,BWP,NOK,BRL,BRB,BRC,BRE,BRN,BRR,BND,BGN,BGJ,BGK,BGL,BUK,BIF,CVE,KHR,XAF,CAD,KYD,CLP,CLF,CNY,COP,COU,KMF,CDF,NZD,CRC,HRK,HRD,CUP,CUC,ANG,CYP,CZK,CSJ,CSK,DKK,DJF,DOP,ECS,ECV,EGP,SVC,GQE,ERN,EEK,SZL,ETB,XEU,FKP,FJD,FIM,XPF,GMD,GEL,GEK,DDM,DEM,GHS,GHC,GHP,GIP,GRD,GTQ,GBP,GNF,GNE,GNS,GWE,GWP,GYD,HTG,ITL,HNL,HKD,HUF,ISK,ISJ,IDR,XDR,IRR,IQD,IEP,ILS,ILP,ILR,JMD,JPY,JOD,KZT,KES,KPW,KRW,KWD,KGS,LAJ,LAK,LVL,LVR,LBP,LSL,ZAR,LSM,ZAL,LRD,LYD,CHF,LTL,LTT,LUC,LUF,LUL,MOP,MGA,MGF,MWK,MYR,MVR,MVQ,MLF,MTL,MTP,MRU,MRO,MUR,XUA,MXN,MXV,MXP,MDL,MNT,MAD,MZN,MZE,MZM,MMK,NAD,NPR,NLG,NIO,NIC,NGN,MKD,OMR,PKR,PAB,PGK,PYG,PEN,PEH,PEI,PES,PHP,PLN,PLZ,PTE,QAR,RON,ROK,ROL,RUB,RWF,SHP,WST,STN,STD,SAR,RSD,CSD,SCR,SLL,SGD,XSU,SKK,SIT,SBD,SOS,SSP,SDG,RHD,ESA,ESB,LKR,SDD,SDP,SRD,SRG,SEK,CHE,CHW,CHC,SYP,TWD,TJS,TJR,TZS,THB,TPE,TOP,TTD,TND,TRY,TRL,TMT,TMM,UGX,UGS,UGW,UAH,UAK,SUR,AED,USS,USN,UYU,UYI,UYW,UYN,UYP,UZS,VUV,VEB,VEF,VES,VND,VNC,YER,YDD,YUD,YUM,YUN,ZRN,ZRZ,ZMW,ZMK,ZWL,ZWC,ZWD,ZWN,ZWR,XBA,XFO,XBB,XRE,XBC,XBD,XFU,XTS,XXX,XAU,XPD,XPT,XAG]
            amount:
              type: string
              nullable: true
              pattern: '^-?\d{1,15}\.\d{2,4}$'
              example: '100000.04'
              description: |
                Valor do faturamento
            year:
              type: string
              maxLength: 4
              format: date-fullyear
              example: '2010'
              description: 'Ano de referência do faturamento, conforme especificação RFC-3339.' 
          additionalProperties: false
        informedPatrimony:
          type: object
          description: Objeto que agrupa dados de informações de patrimônio.
          properties:
            currency:
              type: string
              maxLength: 3
              example: BRL
              description: 'Moeda referente ao valor do patrimônio, segundo modelo ISO-4217.'
              enum: [AFN,AFA,ALL,ALK,DZD,USD,EUR,ADP,ESP,FRF,AOA,AOK,AON,AOR,XCD,ARS,ARA,ARP,ARY,AMD,RUR,AWG,AUD,ATS,AZN,AYM,AZM,BSD,BHD,BDT,BBD,BYN,BYB,BYR,BEC,BEF,BEL,BZD,XOF,BMD,INR,BTN,BOP,BOB,BOV,BAM,BAD,BWP,NOK,BRL,BRB,BRC,BRE,BRN,BRR,BND,BGN,BGJ,BGK,BGL,BUK,BIF,CVE,KHR,XAF,CAD,KYD,CLP,CLF,CNY,COP,COU,KMF,CDF,NZD,CRC,HRK,HRD,CUP,CUC,ANG,CYP,CZK,CSJ,CSK,DKK,DJF,DOP,ECS,ECV,EGP,SVC,GQE,ERN,EEK,SZL,ETB,XEU,FKP,FJD,FIM,XPF,GMD,GEL,GEK,DDM,DEM,GHS,GHC,GHP,GIP,GRD,GTQ,GBP,GNF,GNE,GNS,GWE,GWP,GYD,HTG,ITL,HNL,HKD,HUF,ISK,ISJ,IDR,XDR,IRR,IQD,IEP,ILS,ILP,ILR,JMD,JPY,JOD,KZT,KES,KPW,KRW,KWD,KGS,LAJ,LAK,LVL,LVR,LBP,LSL,ZAR,LSM,ZAL,LRD,LYD,CHF,LTL,LTT,LUC,LUF,LUL,MOP,MGA,MGF,MWK,MYR,MVR,MVQ,MLF,MTL,MTP,MRU,MRO,MUR,XUA,MXN,MXV,MXP,MDL,MNT,MAD,MZN,MZE,MZM,MMK,NAD,NPR,NLG,NIO,NIC,NGN,MKD,OMR,PKR,PAB,PGK,PYG,PEN,PEH,PEI,PES,PHP,PLN,PLZ,PTE,QAR,RON,ROK,ROL,RUB,RWF,SHP,WST,STN,STD,SAR,RSD,CSD,SCR,SLL,SGD,XSU,SKK,SIT,SBD,SOS,SSP,SDG,RHD,ESA,ESB,LKR,SDD,SDP,SRD,SRG,SEK,CHE,CHW,CHC,SYP,TWD,TJS,TJR,TZS,THB,TPE,TOP,TTD,TND,TRY,TRL,TMT,TMM,UGX,UGS,UGW,UAH,UAK,SUR,AED,USS,USN,UYU,UYI,UYW,UYN,UYP,UZS,VUV,VEB,VEF,VES,VND,VNC,YER,YDD,YUD,YUM,YUN,ZRN,ZRZ,ZMW,ZMK,ZWL,ZWC,ZWD,ZWN,ZWR,XBA,XFO,XBB,XRE,XBC,XBD,XFU,XTS,XXX,XAU,XPD,XPT,XAG]
            amount:
              type: string
              nullable: true
              pattern: '^-?\d{1,15}\.\d{2,4}$'
              example: '100000.04'
              description: |
                Valor do patrimônio
            date:
              type: string
              maxLength: 10
              format: date
              pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
              example: '2012-05-21'
              description: 'Data de referência do patrimônio, conforme especificação RFC-3339.' 
          additionalProperties: false
      additionalProperties: false
    
    PersonalComplimentaryInformationData:
      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
        - productsServices
        - startDate
      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 do bloco de Relacionamento, conforme especificação RFC-3339, formato UTC.'
        startDate:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2014-05-21'
          description: Data mais antiga de início de relacionamento, considerando todos os contratos (vigentes e não vigentes). Os contratos não vigentes considerados devem contemplar, no mínimo o período indicado na Tabela 4.1.
        relationshipBeginning:
          type: string
          format: date
          maxLength: 10
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2014-05-21'
          description: Campo deve ser preenchido com a data da apólice/contrato vigente mais antiga (caso haja contrato vigente)
        productsServices:
          type: array
          minItems: 1
          items:
            type: object
            description: Lista de todos os contratos vigentes e não vigentes.
            required: 
              - contract
              - type
            properties:
              contract:
                type: string
                maxLength: 60
                description: Campo deve conter todos os contratos do cliente nos últimos 12 meses (número da apólice individual ou contrato ou certificado ou bilhete)
              type:
                $ref: '#/components/schemas/EnumProductServiceType'
              insuranceLineCode:
                type: string
                maxLength: 4
                example: '6272'
                description: Indicar para cada contrato, caso aplicável, o código do ramo, conforme listagem de códigos definida em regulamentação específica sobre contabilização em ramos. Obs - Caso tipo de produto do contrato for “Seguros de Danos”     
              procurators:
                type: array
                items:
                  $ref: '#/components/schemas/PersonalProcurator'
                minItems: 1
                description: Lista dos representantes. De preenchimento obrigatório se houver representante.
          additionalProperties: false 
      additionalProperties: false
    PersonalIdentificationData:
      type: object
      description: Conjunto de informações relativas a Identificação ou seja a ação e o efeito de identificar de forma única a pessoa natural através de seus dados cadastrais.
      required:
        - updateDateTime
        - brandName
        - companyInfo
        - civilName
        - hasBrazilianNationality
        - contact
        - cpfNumber
      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 do bloco, conforme especificação RFC-3339'
        personalId:
          type: string
          pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
          maxLength: 100
          description: Um identificador único e imutável usado para identificar o recurso cliente pessoa natural dentro da transmissora. 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]*'
          description: Nome da Marca reportada pelo participante do Open Insurance. O conceito a que se refere a marca é em essência uma promessa da empresa em fornecer uma série específica de atributos, benefícios e serviços uniformes aos clientes
          example: Organização A
        civilName:
          type: string
          maxLength: 70
          pattern: '^[A-Za-z\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)'
        socialName:
          type: string
          maxLength: 70
          pattern: '^[A-Za-z\sáâãéêíïóôõúçÁÂÃÉÍÏÓÔÕÚÇ]+$'
          example: 'string'
          description: |
            Nome social da pessoa natural, se houver. 
            (aquele pelo qual travestis e transexuais se reconhecem, 
            bem como são identificados por sua comunidade e em seu meio social, conforme Decreto Local). 
        cpfNumber:
          type: string
          maxLength: 11
          pattern: '^\d{11}$|^NA$'
          description: |
            Número completo do CPF. Atributo que corresponde às informações mínimas exigidas pela Regulamentação em vigor. O CPF é o Cadastro de Pessoa natural.  Ele é um documento feito pela Receita Federal e serve para identificar os contribuintes. O CPF é uma numeração com 11 dígitos, que só mudam por decisão judicial. O documento é emitido pela receita federal
            Condicional a seleção de true em hasBrazilianNationality
        companyInfo:  
          type: object
          description: Informações referente a sociedade a qual a marca pertence.
          required:
            - name
            - cnpjNumber
          properties:
              cnpjNumber:
                  type: string
                  pattern: '\d{14}|^NA$'
                  maxLength: 14
                  example: '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
              name:
                  type: string
                  maxLength: 70
                  pattern: '[\w\W\s]*'
                  example: Empresa da Organização A
                  description: Nome da Instituição, pertencente à Marca, responsável pela Dependência
        documents:
          $ref: '#/components/schemas/PersonalDocuments'
        hasBrazilianNationality:
          type: boolean
          nullable: true
          example: false
          description: Informa se o Cliente tem nacionalidade brasileira.
        otherNationalitiesInfo:
          type: string
          maxLength: 3
          example: CAN
          description: Código do pais de acordo com o código “alpha3” do ISO-3166
        otherDocuments:
          $ref: '#/components/schemas/OtherPersonalDocuments'
        contact:
          $ref: '#/components/schemas/PersonalContact'
        civilStatusCode:
          $ref: '#/components/schemas/EnumCivilStatusCode'
        sex:
          type: string
          maxLength: 20
          example: FEMININO  
        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: '2021-05-21'
          description: 'Data de nascimento, conforme especificação RFC-3339'  
        filiation:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/EnumFiliationType'
            civilName:
              type: string
              maxLength: 70
              pattern: '^[A-Za-z\sáâãéêíïóôõúçÁÂÃÉÍÏÓÔÕÚÇ]+$'
              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).
        identificationDetails:
          type: object
          description: Informações referente ao cônjuge.
          properties: 
            civilName:
              type: string
              maxLength: 70
              pattern: '^[A-Za-z\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)'
            cpfNumber:
              type: string
              maxLength: 11
              pattern: '^\d{11}$|^NA$'
              description: |
                Número completo do CPF. Atributo que corresponde às informações mínimas exigidas pela Regulamentação em vigor. O CPF é o Cadastro de Pessoa natural.  Ele é um documento feito pela Receita Federal e serve para identificar os contribuintes. O CPF é uma numeração com 11 dígitos, que só mudam por decisão judicial. O documento é emitido pela receita federal
                Condicional a seleção de true em hasBrazilianNationality
      additionalProperties: false
    PersonalQualificationData:
      type: object
      description: 'Conjunto de informações relativas ao processo de qualificação.'
      required:
        - pepIdentification
        - updateDateTime
        - lifePensionPlans
      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 do bloco, conforme especificação RFC-3339' 
        pepIdentification:
          type: string
          description: 'Campo deve ser preenchido com a exposição política do segurado:'
          example: NAO_EXPOSTO
          enum: 
            - NAO_EXPOSTO 
            - PESSOA_POLITICAMENTE_EXPOSTA_PPE
            - PESSOA_PROXIMA_A_PESSOA_POLITICAMENTE_EXPOSTA_PPEE
            - SEM_INFORMACAO
        occupation:
          type: array
          minItems: 1
          items:
            type: object
            description: Objeto agrupador de informações relativas ocupação da pessoa natural
            properties:
              details:
                type: string
                maxLength: 100
                description: 'Ocupação'
              occupationCode:
                type: string
                maxLength: 100
                example: 'RECEITA_FEDERAL'
                description: 'Código da ocupação'
              occupationCodeType:
                type: string
                example: RFB
                enum: 
                  - RFB 
                  - CBO 
                  - OUTROS
                description: 'Tipo de código da ocupação'
        lifePensionPlans:
          type: string
          description: Condição de proponente qualificado, aplicável à contratação de planos de previdência e vida por sobrevivência
          example: SIM
          enum: 
            - SIM 
            - NAO 
            - NAO_SE_APLICA
        informedRevenue:
          type: object
          description: Objeto que agrupa dados de receita informada
          properties:
            incomeFrequency:
              $ref: '#/components/schemas/EnumIncomeFrequency'
            currency:
              type: string
              maxLength: 3
              example: BRL
              description: 'Moeda referente ao valor da renda, segundo modelo ISO-4217.'
              enum: [AFN,AFA,ALL,ALK,DZD,USD,EUR,ADP,ESP,FRF,AOA,AOK,AON,AOR,XCD,ARS,ARA,ARP,ARY,AMD,RUR,AWG,AUD,ATS,AZN,AYM,AZM,BSD,BHD,BDT,BBD,BYN,BYB,BYR,BEC,BEF,BEL,BZD,XOF,BMD,INR,BTN,BOP,BOB,BOV,BAM,BAD,BWP,NOK,BRL,BRB,BRC,BRE,BRN,BRR,BND,BGN,BGJ,BGK,BGL,BUK,BIF,CVE,KHR,XAF,CAD,KYD,CLP,CLF,CNY,COP,COU,KMF,CDF,NZD,CRC,HRK,HRD,CUP,CUC,ANG,CYP,CZK,CSJ,CSK,DKK,DJF,DOP,ECS,ECV,EGP,SVC,GQE,ERN,EEK,SZL,ETB,XEU,FKP,FJD,FIM,XPF,GMD,GEL,GEK,DDM,DEM,GHS,GHC,GHP,GIP,GRD,GTQ,GBP,GNF,GNE,GNS,GWE,GWP,GYD,HTG,ITL,HNL,HKD,HUF,ISK,ISJ,IDR,XDR,IRR,IQD,IEP,ILS,ILP,ILR,JMD,JPY,JOD,KZT,KES,KPW,KRW,KWD,KGS,LAJ,LAK,LVL,LVR,LBP,LSL,ZAR,LSM,ZAL,LRD,LYD,CHF,LTL,LTT,LUC,LUF,LUL,MOP,MGA,MGF,MWK,MYR,MVR,MVQ,MLF,MTL,MTP,MRU,MRO,MUR,XUA,MXN,MXV,MXP,MDL,MNT,MAD,MZN,MZE,MZM,MMK,NAD,NPR,NLG,NIO,NIC,NGN,MKD,OMR,PKR,PAB,PGK,PYG,PEN,PEH,PEI,PES,PHP,PLN,PLZ,PTE,QAR,RON,ROK,ROL,RUB,RWF,SHP,WST,STN,STD,SAR,RSD,CSD,SCR,SLL,SGD,XSU,SKK,SIT,SBD,SOS,SSP,SDG,RHD,ESA,ESB,LKR,SDD,SDP,SRD,SRG,SEK,CHE,CHW,CHC,SYP,TWD,TJS,TJR,TZS,THB,TPE,TOP,TTD,TND,TRY,TRL,TMT,TMM,UGX,UGS,UGW,UAH,UAK,SUR,AED,USS,USN,UYU,UYI,UYW,UYN,UYP,UZS,VUV,VEB,VEF,VES,VND,VNC,YER,YDD,YUD,YUM,YUN,ZRN,ZRZ,ZMW,ZMK,ZWL,ZWC,ZWD,ZWN,ZWR,XBA,XFO,XBB,XRE,XBC,XBD,XFU,XTS,XXX,XAU,XPD,XPT,XAG]
            amount:
              type: string
              nullable: true
              pattern: '^-?\d{1,15}\.\d{2,4}$'
              example: '100000.04'
              description: |
                Valor do rendimento
            date:
              type: string
              maxLength: 10
              format: date
              pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
              example: '2012-05-21'
              description: 'Data de referência da renda, conforme especificação RFC-3339.' 
          additionalProperties: false
        informedPatrimony:
          type: object
          description: Objeto que agrupa dados de informações de patrimônio.
          properties:
            currency:
              type: string
              maxLength: 3
              example: BRL
              description: 'Moeda referente ao valor do patrimônio, segundo modelo ISO-4217.'
              enum: [AFN,AFA,ALL,ALK,DZD,USD,EUR,ADP,ESP,FRF,AOA,AOK,AON,AOR,XCD,ARS,ARA,ARP,ARY,AMD,RUR,AWG,AUD,ATS,AZN,AYM,AZM,BSD,BHD,BDT,BBD,BYN,BYB,BYR,BEC,BEF,BEL,BZD,XOF,BMD,INR,BTN,BOP,BOB,BOV,BAM,BAD,BWP,NOK,BRL,BRB,BRC,BRE,BRN,BRR,BND,BGN,BGJ,BGK,BGL,BUK,BIF,CVE,KHR,XAF,CAD,KYD,CLP,CLF,CNY,COP,COU,KMF,CDF,NZD,CRC,HRK,HRD,CUP,CUC,ANG,CYP,CZK,CSJ,CSK,DKK,DJF,DOP,ECS,ECV,EGP,SVC,GQE,ERN,EEK,SZL,ETB,XEU,FKP,FJD,FIM,XPF,GMD,GEL,GEK,DDM,DEM,GHS,GHC,GHP,GIP,GRD,GTQ,GBP,GNF,GNE,GNS,GWE,GWP,GYD,HTG,ITL,HNL,HKD,HUF,ISK,ISJ,IDR,XDR,IRR,IQD,IEP,ILS,ILP,ILR,JMD,JPY,JOD,KZT,KES,KPW,KRW,KWD,KGS,LAJ,LAK,LVL,LVR,LBP,LSL,ZAR,LSM,ZAL,LRD,LYD,CHF,LTL,LTT,LUC,LUF,LUL,MOP,MGA,MGF,MWK,MYR,MVR,MVQ,MLF,MTL,MTP,MRU,MRO,MUR,XUA,MXN,MXV,MXP,MDL,MNT,MAD,MZN,MZE,MZM,MMK,NAD,NPR,NLG,NIO,NIC,NGN,MKD,OMR,PKR,PAB,PGK,PYG,PEN,PEH,PEI,PES,PHP,PLN,PLZ,PTE,QAR,RON,ROK,ROL,RUB,RWF,SHP,WST,STN,STD,SAR,RSD,CSD,SCR,SLL,SGD,XSU,SKK,SIT,SBD,SOS,SSP,SDG,RHD,ESA,ESB,LKR,SDD,SDP,SRD,SRG,SEK,CHE,CHW,CHC,SYP,TWD,TJS,TJR,TZS,THB,TPE,TOP,TTD,TND,TRY,TRL,TMT,TMM,UGX,UGS,UGW,UAH,UAK,SUR,AED,USS,USN,UYU,UYI,UYW,UYN,UYP,UZS,VUV,VEB,VEF,VES,VND,VNC,YER,YDD,YUD,YUM,YUN,ZRN,ZRZ,ZMW,ZMK,ZWL,ZWC,ZWD,ZWN,ZWR,XBA,XFO,XBB,XRE,XBC,XBD,XFU,XTS,XXX,XAU,XPD,XPT,XAG]
            amount:
              type: string
              nullable: true
              pattern: '^-?\d{1,15}\.\d{2,4}$'
              example: '100000.04'
              description: |
                Valor do patrimônio
            year:
              type: string
              maxLength: 4
              format: date-fullyear
              pattern: '^\d{4}$'
              example: '2010'
              description: 'Ano de referência do patrimônio, conforme especificação RFC-3339.' 
          additionalProperties: false  
      additionalProperties: false
    
    QuoteStatus:
      type: object
      required:
        - status
        - statusUpdateDateTime
      properties:
        status:
          description: Status da cotação.
          type: string
          example: RCVD
          enum: [RCVD,
                EVAL,
                ACPT,
                RJCT,
                ACKN,
                CANC]
        rejectionReason:
              description: Campo condicionado ao status "RJCT", que deve apresentar a justificativa a recusa ao risco.
              type: string
              maxLength: 1024
        statusUpdateDateTime:
          type: string
          description: Data e hora da atualização do status.
          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'
                  
    PersonalDocuments:
      type: array
      description: Objeto agrupador de informações relativas a Documentos da pessoa natural
      items:
        type: object
        properties:
          type:
            $ref: '#/components/schemas/EnumPersonalDocumentType'
          number:
            type: string
            maxLength: 20
            description: Número/código do(s) documento(s) de identificação - Se aplicável.
            example: '15291908'
          expirationDate:
            type: string
            maxLength: 10
            format: date
            pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
            example: '2023-05-21'
            description: Data de validade do(s) documento(s) de identificação - Se aplicável.
          issueLocation: 
            type: string
            maxLength: 40
            description: Local de emissão - Se aplicável.
      additionalProperties: false
    OtherPersonalDocuments:
      type: object
      description: Objeto que agrupa dados de outros documentos.
      properties:
        type:
          type: string
          maxLength: 40
          description: Tipo do(s) documento(s) estrangeiro(s) de identificação
          example: 'SOCIAL SEC'
        number:
          type: string
          maxLength: 20
          description: Número/código do(s) documento(s) de identificação.
          example: '15291908'
        country: 
          type: string
          maxLength: 40
          description: País do(s) documento(s) estrangeiro(s) de identificação.
        expirationDate:
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2023-05-21'
          description: Data de vigência do documento de registro - conforme especificação RFC-3339.
      additionalProperties: false
    BusinessDocument:
      type: object
      required:
        - businesscnpjNumber
      description: Objeto agrupador de informações relativas a Documentos da pessoa natural
      properties:
        businesscnpjNumber:
          type: string
          maxLength: 14
          pattern: '\d{14}|^NA$'
          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
            Condicional ao Brasil no (BRA) campo País de emissão do documento de registro
        businessRegisterNumberOriginCountry:
          type: string
          maxLength: 20
          description: | 
            Aplicável somente as pessoas jurídicas com domicílio ou sede no exterior desobrigadas de inscrição no CNPJ.
        country:
          type: string
          maxLength: 3
          example: BRA
          description: Código do pais de acordo com o código “alpha3” do ISO-3166.
          enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
        expirationDate:
          type: string
          maxLength: 10
          format: date
          pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
          example: '2023-05-21'
          description: 'Data de vigência do documento de registro - conforme especificação RFC-3339.'
      additionalProperties: false
    AmountDetails:
        type: object
        description: Detalhes de valores/limites
        required:
          - amount
          - unitType
        properties:
          amount:
            type: string
            pattern: '^(^(100\.\00|\d{1,2}\.\d{2})$|^(\d{1,6})$|^(\d{1,15}\.\d{2})$)$'
            description: |
              Valor.
              Exemplos de preenchimento do campo:

              PORCENTAGEM: 90.85
                              
              MONETARIO: 62500.67

              OUTROS: 1000 (Exemplo de outro tipo: horas)
          unitType:
            description: "Tipo da unidade referente ao valor inserido no campo Amount"
            type: string
            enum: [PORCENTAGEM, MONETARIO, OUTROS]
          unitTypeOthers:
            description: Caso o tipo do valor informado for "Outros", esse campo deve ser preenchido com o tipo do valor, obrigatoriamente.
            type: string
            example: Horas
          unit:
            description: Preenchimento obrigatório em caso de valor "MONETARIO" ser informado no campo "unitType"
            type: object
            required:
              - code
              - description
            properties:
              code:
                type: string
                enum: [ د.إ , Af, L,  Դ,  Kz, $,  ƒ,  ман,  КМ, ৳,  лв, ب.د,  ₣,  Bs.,  R$, P,  Br, ¥,  ₡,  Kč, kr, د.ج,  £,  
                        Nfk,  N/A,  €,  ლ,  ₵,  D,  Q,  Kn, G,  Ft, Rp, ₪,  ₹,  ع.د,  ﷼,  Sh, ៛,  ₩,  د.ك,  〒,  ₭,  ل.ل,  Rs,
                        ل.د,  د.م., ден,  K,  ₮,  UM, ₨,  ރ., MK, RM, MTn,  ₦,  C$, ر.ع., B/.,  S/.,  ₱,  zł, ₲,  ر.ق,  din,  
                        р., ر.س,  Le, Db, ل.س,  ฿,  ЅМ, m,  د.ت,  T$, ₤,  ₴,  Bs F, ₫,  Vt, T,  R,  ZK ]
                example: R$
              description:
                type: string
                description: Moeda da Parcela, de acordo com ISO-4217.
                example: BRL
                enum: [ AFN,AFA,ALL,ALK,DZD,USD,EUR,ADP,ESP,FRF,AOA,AOK,AON,AOR,XCD,ARS,ARA,ARP,ARY,AMD,RUR,AWG,AUD,ATS,AZN,AYM,AZM,BSD,BHD,BDT,BBD,BYN,BYB,BYR,BEC,BEF,BEL,BZD,XOF,BMD,INR,BTN,BOP,BOB,BOV,BAM,BAD,BWP,NOK,BRL,BRB,BRC,BRE,BRN,BRR,BND,BGN,BGJ,BGK,BGL,BUK,BIF,CVE,KHR,XAF,CAD,KYD,CLP,CLF,CNY,COP,COU,KMF,CDF,NZD,CRC,HRK,HRD,CUP,CUC,ANG,CYP,CZK,CSJ,CSK,DKK,DJF,DOP,ECS,ECV,EGP,SVC,GQE,ERN,EEK,SZL,ETB,XEU,FKP,FJD,FIM,XPF,GMD,GEL,GEK,DDM,DEM,GHS,GHC,GHP,GIP,GRD,GTQ,GBP,GNF,GNE,GNS,GWE,GWP,GYD,HTG,ITL,HNL,HKD,HUF,ISK,ISJ,IDR,XDR,IRR,IQD,IEP,ILS,ILP,ILR,JMD,JPY,JOD,KZT,KES,KPW,KRW,KWD,KGS,LAJ,LAK,LVL,LVR,LBP,LSL,ZAR,LSM,ZAL,LRD,LYD,CHF,LTL,LTT,LUC,LUF,LUL,MOP,MGA,MGF,MWK,MYR,MVR,MVQ,MLF,MTL,MTP,MRU,MRO,MUR,XUA,MXN,MXV,MXP,MDL,MNT,MAD,MZN,MZE,MZM,MMK,NAD,NPR,NLG,NIO,NIC,NGN,MKD,OMR,PKR,PAB,PGK,PYG,PEN,PEH,PEI,PES,PHP,PLN,PLZ,PTE,QAR,RON,ROK,ROL,RUB,RWF,SHP,WST,STN,STD,SAR,RSD,CSD,SCR,SLL,SGD,XSU,SKK,SIT,SBD,SOS,SSP,SDG,RHD,ESA,ESB,LKR,SDD,SDP,SRD,SRG,SEK,CHE,CHW,CHC,SYP,TWD,TJS,TJR,TZS,THB,TPE,TOP,TTD,TND,TRY,TRL,TMT,TMM,UGX,UGS,UGW,UAH,UAK,SUR,AED,USS,USN,UYU,UYI,UYW,UYN,UYP,UZS,VUV,VEB,VEF,VES,VND,VNC,YER,YDD,YUD,YUM,YUN,ZRN,ZRZ,ZMW,ZMK,ZWL,ZWC,ZWD,ZWN,ZWR,XBA,XFO,XBB,XRE,XBC,XBD,XFU,XTS,XXX,XAU,XPD,XPT,XAG ]
       
    QuoteCustomData:
      type: object
      description: Objeto que agrupa as categorias de dados customizáveis em listas.
      properties:
        customerIdentification:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        customerQualification:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        customerComplimentaryInfo:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        generalQuoteInfo:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        riskLocationInfo:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        insuredObjects:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        beneficiaries:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        coverages:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
        generalClaimInfo:
          type: array
          items:
            $ref: '#/components/schemas/CustomInfoData'
    
    CustomInfoData:
      type: object
      description: Objeto para identificação dos campos e valores de dados customizáveis.
      required:
        - fieldId
        - value
      properties:
        fieldId:
          type: string
          pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
          maxLength: 100
          description: Um identificador único usado para identificar o valor transmitido.
          example: "578-psd-71md6971kjh-2d414"
        value:
          description: Valor do campo identificado acima, esse campo pode ser implementado como qualquer tipo de dado (objeto, texto, número, booleano, etc.)
      additionalProperties: false    
    EnumProductServiceType:
      type: string
      enum:
        - MICROSSEGUROS
        - TITULOS_DE_CAPITALIZACAO
        - SEGUROS_DE_PESSOAS
        - PLANOS_DE_PREVIDENCIA_COMPLEMENTAR
        - SEGUROS_DE_DANOS
      example: MICROSSEGUROS
      description: Tipos de produtos.
    PersonalContact:
      type: object
      description: Conjunto de informações referentes às formas para contatar o cliente.
      required:
        - postalAddresses
      properties:
        postalAddresses:
          type: array
          items:
            $ref: '#/components/schemas/PersonalPostalAddress'
          minItems: 1
          description: Lista de endereços da pessoa natural
        phones:
          type: array
          items:
            $ref: '#/components/schemas/CustomerPhone'
          minItems: 1
          description: Lista com telefones de contato da pessoa natural
        emails:
          type: array
          items:
            $ref: '#/components/schemas/CustomerEmail'
          minItems: 1
          description: Lista e-mails de contato
      additionalProperties: false
    CustomerEmail:
      type: object
      properties:
        email:
          type: string
          description: Endereço de email
          maxLength: 320
          pattern: '^\S+@\S+\.\S+$'
          example: nome@br.net
      additionalProperties: false
    CustomerPhone:
      type: object
      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 Cliente - se aplicável
        areaCode:
          $ref: '#/components/schemas/EnumAreaCode'
        number:
          type: string
          maxLength: 11
          pattern: '^([0-9]{8,11})|^NA$'
          example: '29875132'
          description: Número de telefone do cliente
        phoneExtension:
          type: string
          maxLength: 5
          pattern: '^\d{1,5}$|^NA$'
          description: Número do ramal. De preenchimento obrigatório se fizer parte da identificação do número do telefone informado
          example: '932'
      additionalProperties: false
    PersonalPostalAddress:
      type: object
      required:
        - address
        - townName
        - countrySubDivision
        - postCode
        - country
      properties:
        address:
          type: string
          maxLength: 200
          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.
        townName:
          type: string
          maxLength: 50
          pattern: '^[A-Za-z\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.
        countrySubDivision:
          $ref: '#/components/schemas/EnumCountrySubDivision'
        postCode:
          type: string
          pattern: '\d{8}|^NA$'
          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: 3
          example: BRA
          description: Código do pais de acordo com o código “alpha3” do ISO-3166.
          enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
      additionalProperties: false
    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
    EnumCivilStatusCode:
      type: string
      enum:
        - SOLTEIRO
        - CASADO
        - VIUVO
        - SEPARADO_JUDICIALMENTE
        - DIVORCIADO
        - UNIAO_ESTAVEL
        - OUTROS
      example: SOLTEIRO
      description: |
        Estado civil do cliente. 
    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'
        - NA
    EnumIncomeFrequency:
      type: string
      enum:
        - DIARIA
        - SEMANAL
        - QUINZENAL
        - MENSAL
        - BIMESTRAL
        - TRIMESTRAL
        - SEMESTRAL
        - ANUAL
      description: |
        Frequência da renda informada.
    EnumPersonalDocumentType:
      type: string
      enum:
        - CNH
        - RG
        - NIF
        - RNE
        - OUTROS
        - SEM_OUTROS_DOCUMENTOS
      example: CNH
      description: |
        Tipo do(s) documento(s) de identificação. 
    EnumFiliationType:
      type: string
      enum:
        - MAE
        - PAI
        - SEM_FILIACAO
      description: Tipo de filiação.    
    EnumProcuratorsNaturePersonal:
      type: string
      enum:
        - REPRESENTANTE_LEGAL
        - PROCURADOR
        - NAO_SE_APLICA
      example: PROCURADOR
      description: |
        Natureza dos poderes vigentes de representante
    EnumProcuratorsNatureBusiness:
      type: string
      enum:
        - REPRESENTANTE_LEGAL
        - PROCURADOR
        - NAO_SE_APLICA
      example: PROCURADOR
      description: |
        Natureza dos poderes vigentes de representante
    BusinessParties:
      type: array
      description: Conjunto de informações referentes ao vínculo com uma pessoa.
      items:
        type: object
        properties:
          type: 
            type: string
            maxLength: 13
            example: SOCIO
            description: Tipo de vínculo com a pessoa jurídica
            enum:
              - SOCIO
              - ADMINISTRADOR
          civilName:
            type: string
            maxLength: 70
            pattern: '^[A-Za-z\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)' 
          socialName:
            type: string
            maxLength: 70
            pattern: '^[A-Za-z\sáâãéêíïóôõúçÁÂÃÉÍÏÓÔÕÚÇ]+$'
            example: 'string'
            description: |
              Nome social da pessoa natural, se houver. 
              (aquele pelo qual travestis e transexuais se reconhecem, 
              bem como são identificados por sua comunidade e em seu meio social, conforme Decreto Local).  
          startDate:
            type: string
            format: date
            maxLength: 10
            pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$'
            example: '2014-05-21'
            description: 'Data de início da participação, conforme especificação RFC-3339.'
          shareholding:
            type: string
            format: double
            maxLength: 8
            minLength: 8
            pattern: '^100\.0{1,9}$|^\d{1,2}\.\d{1,9}$'
            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%.
          documentType:
            type: string
            maxLength: 15
            example: CPF
            description: 'Tipo de documento de identificação do sócio ou administrador'
          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
          documentCountry:
            type: string
            maxLength: 3
            enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
            example: BRA
            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.'
      additionalProperties: false
    BusinessContact:
      type: object
      description: Conjunto de informações referentes às formas para contatar o cliente.
      required:
        - postalAddresses
      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: 1
          description: Lista com telefones de contato da pessoa jurídica
        emails:
          type: array
          items:
            $ref: '#/components/schemas/CustomerEmail'
          minItems: 1
          description: Lista e-mails de contato
      additionalProperties: false
    BusinessPostalAddress:
      type: object
      required:
        - address
        - townName
        - countrySubDivision
        - postCode
        - country
      properties:
        address:
          type: string
          maxLength: 200
          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.
        townName:
          type: string
          maxLength: 50
          pattern: '^[A-Za-z\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.
        countrySubDivision:
          $ref: '#/components/schemas/EnumCountrySubDivision'
        postCode:
          type: string
          pattern: '\d{8}|^NA$'
          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'.
        ibgeTownCode:
          type: string
          pattern: '\d{8}|^NA$'
          maxLength: 8
          example: '17500000'
          description: |
            Código IBGE do município
        country:
          type: string
          maxLength: 60
          example: Brasil
        countryCode:
          type: string
          maxLength: 3
          example: BRA
          description: Código do pais de acordo com o código “alpha3” do ISO-3166.
          enum: [AFG,ALA,ALB,DZA,ASM,AND,AGO,AIA,ATA,ATG,ARG,ARM,ABW,AUS,AUT,AZE,BHS,BHR,BGD,BRB,BLR,BEL,BLZ,BEN,BMU,BTN,BOL,BES,BIH,BWA,BVT,BRA,IOT,BRN,BGR,BFA,BDI,CPV,KHM,CMR,CAN,CYM,CAF,TCD,CHL,CHN,CXR,CCK,COL,COM,COG,COD,COK,CRI,CIV,HRV,CUB,CUW,CYP,CZE,DNK,DJI,DMA,DOM,ECU,EGY,SLV,GNQ,ERI,EST,SWZ,ETH,FLK,FRO,FJI,FIN,FRA,GUF,PYF,ATF,GAB,GMB,GEO,DEU,GHA,GIB,GRC,GRL,GRD,GLP,GUM,GTM,GGY,GIN,GNB,GUY,HTI,HMD,VAT,HND,HKG,HUN,ISL,IND,IDN,IRN,IRQ,IRL,IMN,ISR,ITA,JAM,JPN,JEY,JOR,KAZ,KEN,KIR,PRK,KOR,KWT,KGZ,LAO,LVA,LBN,LSO,LBR,LBY,LIE,LTU,LUX,MAC,MDG,MWI,MYS,MDV,MLI,MLT,MHL,MTQ,MRT,MUS,MYT,MEX,FSM,MDA,MCO,MNG,MNE,MSR,MAR,MOZ,MMR,NAM,NRU,NPL,NLD,NCL,NZL,NIC,NER,NGA,NIU,NFK,MKD,MNP,NOR,OMN,PAK,PLW,PSE,PAN,PNG,PRY,PER,PHL,PCN,POL,PRT,PRI,QAT,REU,ROU,RUS,RWA,BLM,SHN,KNA,LCA,MAF,SPM,VCT,WSM,SMR,STP,SAU,SEN,SRB,SYC,SLE,SGP,SXM,SVK,SVN,SLB,SOM,ZAF,SGS,SSD,ESP,LKA,SDN,SUR,SJM,SWE,CHE,SYR,TWN,TJK,TZA,THA,TLS,TGO,TKL,TON,TTO,TUN,TUR,TKM,TCA,TUV,UGA,UKR,ARE,GBR,USA,UMI,URY,UZB,VUT,VEN,VNM,VGB,VIR,WLF,ESH,YEM,ZMB,ZWE]
        geographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
      additionalProperties: false
    GeographicCoordinates:
      type: object
      description: 'Conjunto de informações, que correspondem aos valores das coordenadas geográficas em graus decimais, no Sistema de referência WGS84'
      properties:
        latitude:
          description: |
            Informação da Latitude referente a geolocalização informada. Entre -90 e 90.p.ex. '-23.5475000'. (2 casas antes da vírgula, 11 posições)
          type: string
          pattern: '^-?(90\.0{1,9}|[0-8][0-9]\.\d{1,9})$'
          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: '^-?(180\.0{1,9}|1[0-7]\d{1}\.\d{1,9}|\d{1,2}\.\d{1,9})$'
          example: '-46.6361100'
      additionalProperties: false      
    
    RevokePatchPayload:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Revogação de LEAD.
          required:
            - author
          properties:
            author:
              type: object
              required:
                - identificationType
                - identificationNumber
              properties:
                identificationType:
                  type: string
                  description: Tipo identificação (CPF ou CNPJ) do solicitante do cancelamento/revogação.
                  enum: [CPF,CNPJ]
                  example: CPF
                identificationNumber:
                  type: string
                  description: Número de identificação (CPF ou CNPJ) do solicitante do cancelamento/revogação.
                  maxLength: 20
                  pattern: '[\w\W\s]*'
                  example: '73677831148'
    
    ResponseRevokePatch:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto contendo informações da atualização.
          required:
            - status
          properties:
            status:
              description: Status da cotação.
              type: string
              example: CANC
              enum: [CANC]
    PatchPayload:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          required:
            - status
            - author
          properties:
            status:
              description: Status da cotação.
              type: string
              example: ACKN
              enum: [ACKN,CANC]
            insurerQuoteId:
              type: string
              description: |
                Id da proposta da segurada 
                Esse ID é utilizado em jornadas de cotação completa/firme e leva o número identificador da proposta aceita (ACKN) pelo cliente.
                Condicional ao status de ACKN.
            author:
              type: object
              required:
                - identificationType
                - identificationNumber
              properties:
                identificationType:
                  type: string
                  description: Tipo identificação (CPF ou CNPJ) do solicitante do cancelamento/revogação.
                  enum: [CPF,CNPJ]
                  example: CPF
                identificationNumber:
                  type: string
                  description: Número de identificação (CPF ou CNPJ) do solicitante do cancelamento/revogação.
                  maxLength: 20
                  pattern: '[\w\W\s]*'
                  example: '73677831148'

    ResponsePatch:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto contendo informações da atualização.
          required:
            - status
          properties:
            status:
              description: Status da cotação.
              type: string
              example: ACKN
              enum: [ACKN,CANC]
            insurerQuoteId:
              type: string
              description: |
                Id da proposta da segurada 
                Esse ID é utilizado em jornadas de cotação completa/firme e leva o número identificador da proposta aceita (ACKN) pelo cliente.
                Condicional ao status de ACKN.
            protocolNumber:
              description: Protocolo referente a cotação aceita. Condicional ao status de ACKN.
              type: string
              maxLength: 60
            protocolDateTime:
              description: Data e hora do protocolamento da cotação, conforme especificação RFC-3339, formato UTC. Condicional ao status de ACKN.
              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-08-20T08:30:00Z'
            links:
              description: Condicional ao status de ACKN.
              type: object
              required:
                - redirect
              properties:
                redirect: 
                  type: string
                  example: http://www.abcseguros.com/propostas_cotacao?propID=003
                  description: Link interno da seguradora, onde o cliente é redirecionado para conclusão da contratação
    Links:
      type: object
      properties:
        self:
          type: string
          description: URL da página atualmente requisitada
          example: 'https://api.organizacao.com.br/open-insurance/quote-auto/v1'
        first:
          type: string
          description: URL da primeira página de registros
          example: 'https://api.organizacao.com.br/open-insurance/quote-auto/v1'
        prev:
          type: string
          description: URL da página anterior de registros
          example: 'https://api.organizacao.com.br/open-insurance/quote-auto/v1'
        next:
          type: string
          description: URL da próxima página de registros
          example: 'https://api.organizacao.com.br/open-insurance/quote-auto/v1'
        last:
          type: string
          description: URL da última página de registros
          example: 'https://api.organizacao.com.br/open-insurance/quote-auto/v1'
    Meta:
      type: object
      properties:
        totalRecords:
          type: integer
          description: Total de registros encontrados
          example: 10
        totalPages:
          type: integer
          description: Total de páginas para os registros encontrados
          example: 1
      required:
        - totalRecords
        - totalPages
    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
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                maxLength: 2048
              requestDateTime:
                description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.'
                type: string
                maxLength: 20
                format: date-time
                pattern: '^(\d{4})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
                example: '2021-08-20T08:30:00Z'
            additionalProperties: false
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    422ResponseErrorCreateQuote:
        type: object
        required:
          - errors
        properties:
          errors:
            type: object
            minItems: 1
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - ERRO_IDEMPOTENCIA
                  - NAO_INFORMADO
                example: 'ERRO_IDEMPOTENCIA'
                description: 'Código do erro 422 de Entidade não processada.'
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s*]'
                example: 'Tentativa de alteração de requisição já processada'
                description: |
                  - ERRO_ IDEMPOTENCIA: Tentativa de alteração de requisição já processada
                  - NÃO_INFORMADO: Não informada pelo servidor
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s*]'
                example: 'Tentativa de alteração de requisição já processada'
                description: |
                  - ERRO_ IDEMPOTENCIA: Tentativa de alteração de requisição já processada
                  - NÃO_INFORMADO: Não informada pelo servidor

    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.'
    QuoteRequestAutoLead:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          required:
            - consentId
            - expirationDateTime
            - quoteCustomer
            - quoteData
          properties:
            consentId:
              description: |
                O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name.  
                Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource 
                Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN 
                seja um identificador de recurso persistente e independente da localização.  
                Considerando a string urn:initiator:C1DD93123 como exemplo para consentId temos:
                - o namespace(urn)
                - o identificador associado ao namespace da instituição transnmissora (initiator) 
                - o identificador específico dentro do namespace (C1DD93123).  
                Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141).
              type: string
              pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
              maxLength: 256
              example: 'urn:initiator:C1DD93123'
            expirationDateTime:
              description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).'
              type: string
              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'
              maxLength: 20
            quoteCustomer:
              type: object
              description: Objeto que agrupa as categorias de dados cadastrais do cliente.
              properties:
                identificationData:
                  oneOf:
                    - $ref: '#/components/schemas/PersonalIdentificationData'
                    - $ref: '#/components/schemas/BusinessIdentificationData'
                qualificationData:
                  oneOf:
                    - $ref: '#/components/schemas/PersonalQualificationData'
                    - $ref: '#/components/schemas/BusinessQualificationData'
                complimentaryInformationData:
                  oneOf:
                    - $ref: '#/components/schemas/PersonalComplimentaryInformationData'
                    - $ref: '#/components/schemas/BusinessComplimentaryInformationData'
            historicalData:
              type: object
              description: Objeto que agrupa todos dados históricos do cliente.
              properties:
                customer:
                  type: object
                  description: Objeto que agrupa as categorias de dados históricos cadastrais do cliente.
                  properties: 
                    identificationData:
                      oneOf:
                        - $ref: '#/components/schemas/HistoricalPersonalIdentificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                        - $ref: '#/components/schemas/HistoricalBusinessIdentificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                    qualificationData:
                      oneOf:
                        - $ref: '#/components/schemas/HistoricalPersonalQualificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                        - $ref: '#/components/schemas/HistoricalBusinessQualificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                    complimentaryInformationData:
                      oneOf:
                        - $ref: '#/components/schemas/HistoricalPersonalComplimentaryInformationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                        - $ref: '#/components/schemas/HistoricalBusinessComplimentaryInformationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                policies:
                  $ref: '#/components/schemas/PolicyDataAutoLead'
            quoteData: 
              type: object
              required:
                - coverages
              description: Objeto que agrupa dados específicos do ramo de cotação.
              properties:
                coverages:
                  type: array
                  description: Lista que agrupa os dados de coberturas.
                  items:
                    type: object
                    required:
                      - branch
                      - code
                      - description
                    properties:
                      branch:
                        description: Grupo e ramo da cobertura
                        type: string
                        maxLength: 4
                        example: "0111"
                      code:
                          type: string
                          description: Código da cobertura, conforme Anexo II do Manual de Escopo de Dados
                          example: CASCO_COMPREENSIVA
                          enum: [
                            CASCO_COMPREENSIVA,
                            CASCO_INCENDIO_ROUBO_E_FURTO,
                            CASCO_ROUBO_E_FURTO,
                            CASCO_INCENDIO,
                            CASCO_ALAGAMENTO,
                            CASCO_COLISAO_INDENIZACAO_PARCIAL,
                            CASCO_COLISAO_INDENIZACAO_INTEGRAL,
                            RESPONSABILIDADE_CIVIL_FACULTATIVA_DE_VEICULOS_RCFV,
                            RESPONSABILIDADE_CIVIL_FACULTATIVA_DO_CONDUTOR_RCFC,
                            ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_VEICULO,
                            ACIDENTE_PESSOAIS_DE_PASSAGEIROS_APP_CONDUTOR,
                            VIDROS,
                            DIARIA_POR_INDISPONIBILIDADE,
                            LFR_LANTERNAS_FAROIS_E_RETROVISORES,
                            ACESSORIOS_E_EQUIPAMENTOS,
                            CARRO_RESERVA,
                            PEQUENOS_REPAROS,
                            RESPONSABILIDADE_CIVIL_CARTA_VERDE,
                            RESPONSABILIDADE_CIVIL_VEICULOS_DE_PASSEIO_ACORDOS_FORA_DO_MERCOSUL,
                            OUTRAS
                          ]
    ###### quoteRequest
    
    ResponseQuoteAutoLead:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/QuoteStatus'                    
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
          
    QuoteRequestAuto:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          required:
            - consentId
            - expirationDateTime
            - quoteData
            - quoteCustomer
          properties:
            consentId:
              description: |
                O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name.  
                Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource 
                Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN 
                seja um identificador de recurso persistente e independente da localização.  
                Considerando a string urn:initiator:C1DD93123 como exemplo para consentId temos:
                - o namespace(urn)
                - o identificador associado ao namespace da instituição transnmissora (initiator) 
                - o identificador específico dentro do namespace (C1DD93123).  
                Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141).
              type: string
              pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
              maxLength: 256
              example: 'urn:initiator:C1DD93123'
            expirationDateTime:
              description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).'
              type: string
              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'
              maxLength: 20
            quoteCustomer:
              type: object
              description: Objeto que agrupa as categorias de dados cadastrais do cliente.
              properties:
                identificationData:
                  oneOf:
                    - $ref: '#/components/schemas/PersonalIdentificationData'
                    - $ref: '#/components/schemas/BusinessIdentificationData'
                qualificationData:
                  oneOf:
                    - $ref: '#/components/schemas/PersonalQualificationData'
                    - $ref: '#/components/schemas/BusinessQualificationData'
                complimentaryInformationData:
                  oneOf:
                    - $ref: '#/components/schemas/PersonalComplimentaryInformationData'
                    - $ref: '#/components/schemas/BusinessComplimentaryInformationData'
            quoteData:
              $ref: '#/components/schemas/QuoteDataAuto'
            quoteCustomData:
              $ref: '#/components/schemas/QuoteCustomData'
            historicalData:
              type: object
              description: Objeto que agrupa todos dados históricos do cliente.
              properties:
                customer:
                  type: object
                  description: Objeto que agrupa as categorias de dados históricos cadastrais do cliente.
                  properties: 
                    identificationData:
                      oneOf:
                        - $ref: '#/components/schemas/HistoricalPersonalIdentificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                        - $ref: '#/components/schemas/HistoricalBusinessIdentificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                    qualificationData:
                      oneOf:
                        - $ref: '#/components/schemas/HistoricalPersonalQualificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                        - $ref: '#/components/schemas/HistoricalBusinessQualificationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                    complimentaryInformationData:
                      oneOf:
                        - $ref: '#/components/schemas/HistoricalPersonalComplimentaryInformationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                        - $ref: '#/components/schemas/HistoricalBusinessComplimentaryInformationData' ## schema dados cadastrais de fase 2 (customers v1.1.1)
                policies:
                  $ref: '#/components/schemas/PolicyDataAuto'
    ###### quoteRequest

    ResponseQuoteStatusAuto:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          required:
            - status
            - statusUpdateDateTime
          properties:
            status:
              description: Status da cotação.
              type: string
              example: RCVD
              enum: [RCVD,
                    EVAL,
                    ACPT,
                    RJCT,
                    ACKN,
                    CANC]
            rejectionReason:
              description: Campo condicionado ao status "RJCT", que deve apresentar a justificativa a recusa ao risco.
              type: string
              maxLength: 1024
            statusUpdateDateTime:
              type: string
              description: Data e hora da atualização do status.
              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'
            quoteInfo:
              description: Objeto que agrupa todos os dados de cotação. Condicional ao pedido de cotação já ter sido aceita.
              allOf:
                - $ref: '#/components/schemas/QuoteStatusAuto'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    
    ResponseQuoteAuto:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          $ref: '#/components/schemas/QuoteStatus'                    
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'


  parameters:
    consentId:
        name: consentId
        in: path
        required: true
        schema:
          type: string
          maxLength: 60
    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
    page:
      name: page
      in: query
      description: Número da página que está sendo requisitada (o valor da primeira página é 1).
      schema:
        type: integer
        default: 1
        minimum: 1
        format: int32
    pageSize:
      name: page-size
      in: query
      description: Quantidade total de registros por páginas.
      schema:
        type: integer
        default: 25
        minimum: 1
        format: int32
        maximum: 1000
    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: true
      schema:
        type: string
        pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
        minLength: 1
        maxLength: 100
    xIdempotencyKey:
      name: x-idempotency-key
      in: header
      description: | 
        Cabeçalho HTTP personalizado. Identificador de solicitação 
        exclusivo para suportar a idempotência.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 40
        pattern: ^(?!\s)(.*)(\S)$
  securitySchemes:
    OpenId:
      type: openIdConnect
      openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration'
    OAuth2Security:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: "https://authserver.example/token"
          scopes:
            quote-auto-lead: Escopo necessário para acesso à API Quote Auto.
            quote-auto: Escopo necessário para acesso à API Quote Auto.
            
  responses:
    BadRequest:
      description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    Forbidden:
      description: O token tem escopo incorreto ou uma política de segurança foi violada
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    InternalServerError:
      description: Ocorreu um erro no gateway da API ou no microsserviço
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    MethodNotAllowed:
      description: O consumidor tentou acessar o recurso com um método não suportado
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    NotAcceptable:
      description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    NotFound:
      description: O recurso solicitado não existe ou não foi implementado
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    TooManyRequests:
      description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    Unauthorized:
      description: Cabeçalho de autenticação ausente/inválido ou token inválido
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    UnprocessableEntity:
      description: O servidor entende o tipo de conteúdo da entidade da requisição, e 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'
    UnprocessableEntityQuote:
      description: Seguir as orientações presentes na descrição deste endpoint
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/422ResponseErrorCreateQuote'
    CreatedResponseQuoteRequestAutoLead:
      description: Dados de AutoLead criados com sucesso
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseQuoteAutoLead'       
    200UpdatedQuoteAutoLead:
      description: "Atualização de AutoLead feita com sucesso"
      headers:
        x-fapi-interaction-id:
          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.          
          schema:
            type: string
            pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
            minLength: 1
            maxLength: 100
            example: 73cac523-d3ae-2289-b106-330a6218710d
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseRevokePatch'
    CreatedResponseQuoteRequestAuto:
      description: Dados de Auto criados com sucesso
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseQuoteAuto'       
    200QuoteStatusAuto:
      description: Dados de Auto obtidos com sucesso
      headers:
        x-fapi-interaction-id:
          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.          
          schema:
            type: string
            pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
            minLength: 1
            maxLength: 100
            example: 73cac523-d3ae-2289-b106-330a6218710d
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseQuoteStatusAuto'
    200UpdatedQuoteAuto:
      description: "Atualização de Auto feita com sucesso"
      headers:
        x-fapi-interaction-id:
          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.          
          schema:
            type: string
            pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
            minLength: 1
            maxLength: 100
            example: 73cac523-d3ae-2289-b106-330a6218710d
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponsePatch'