openapi: 3.0.0
info:
  title: API Detalhes da Apólice
  version: 1.0.0
servers:
  - url: https://sauto.dsv.bradescoseguros.com.br:443/V2/WSBL-CotacaoCSP/service/
    description: Desenvolvimento
  - url: https://sauto.hml.bradescoseguros.com.br:443/V2/WSBL-CotacaoCSP/service/
    description: Homologação
  - url: https://sauto.bradescoseguros.com.br:443/V2/WSBL-CotacaoCSP/service/
    description: Produção

paths:
  /historicoApoliceCompleto:
    post:
      tags:
        - Apólices
      summary: Obter histórico completo da apólice
      operationId: historicoApoliceCompleto
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HistoricoApoliceCompletoDto"
      responses:
        "200":
          description: Operação bem-sucedida
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HistoricoApoliceCompletoVo"
        "400":
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MensagemErroVo"
        "404":
          description: Não encontrado
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MensagemErroVo"
        "500":
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MensagemErroVo"
        "503":
          description: Serviço indisponível
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MensagemErroVo"
      security:
        - bearerAuth: []

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    HistoricoApoliceCompletoDto:
      type: object
      properties:
        autenticacao:
          $ref: "#/components/schemas/Autenticacao"
          description: Informações de autenticação
        chaveApolice:
          $ref: "#/components/schemas/ChaveApoliceVo"
          description: Chave da apólice
      required:
        - autenticacao
        - chaveApolice
    Autenticacao:
      type: object
      properties:
        provedor:
          type: integer
          format: int64
          description: Provedor de autenticação
          example: 1
        usuario:
          type: string
          description: Nome de usuário
          example: usuario123
        senha:
          type: string
          description: Senha do usuário
          example: senhaSegura123
      required:
        - provedor
        - usuario
        - senha
    ChaveApoliceVo:
      type: object
      properties:
        sucursalApolice:
          type: integer
          description: Sucursal da apólice
          example: 1
        numeroApolice:
          type: integer
          description: Número da apólice
          example: 123456
        itemApolice:
          type: integer
          description: Item da apólice
          example: 1234
      required:
        - sucursalApolice
        - numeroApolice
        - itemApolice
    HistoricoApoliceCompletoVo:
      type: object
      properties:
        apoliceAuto:
          $ref: "#/components/schemas/ApoliceAutoDto"
          description: Detalhes da apólice de automóvel
        mensagemErro:
          type: array
          items:
            $ref: "#/components/schemas/MensagemErroVo"
          description: Conjunto de mensagens de erro
    ApoliceAutoDto:
      type: object
      properties:
        codigoCia:
          type: integer
          description: Código da companhia
          example: 123
        codigoSucursal:
          type: integer
          description: Código da sucursal
          example: 456
        codigoRamo:
          type: integer
          description: Código do ramo
          example: 789
        numeroApolice:
          type: integer
          description: Número da apólice
          example: 123456789
        numeroItem:
          type: integer
          description: Número do item
          example: 1
        numeroProposta:
          type: integer
          description: Número da proposta
          example: 987654321
        codigoModalidade:
          type: string
          description: Código da modalidade
          example: "MOD123"
        descricaoTipoSeguro:
          type: string
          description: Descrição do tipo de seguro
          example: "Seguro de Automóvel"
        dataInicioVigencia:
          type: string
          format: date-time
          description: Data de início da vigência
          example: "2023-01-01T00:00:00Z"
        dataFimVigencia:
          type: string
          format: date-time
          description: Data de fim da vigência
          example: "2023-12-31T23:59:59Z"
        dataVigenciaAjustada:
          type: string
          format: date-time
          description: Data de vigência ajustada
          example: "2023-01-01T00:00:00Z"
        dataEmissao:
          type: string
          format: date-time
          description: Data de emissão
          example: "2023-01-01T00:00:00Z"
        indicadorAutoResidencial:
          type: boolean
          description: Indicador de auto residencial
          example: true
        indicadorFuncionario:
          type: boolean
          description: Indicador de funcionário
          example: false
        numeroProcessoSusep:
          type: string
          description: Número do processo SUSEP
          example: "SU123456"
        situacaoApolice:
          $ref: "#/components/schemas/SituacaoApoliceAutoDto"
        segurado:
          $ref: "#/components/schemas/SeguradoDto"
        proprietario:
          $ref: "#/components/schemas/ProprietarioDto"
        condutor:
          $ref: "#/components/schemas/CondutorDto"
        veiculo:
          $ref: "#/components/schemas/VeiculoDto"
        risco:
          $ref: "#/components/schemas/RiscoDto"
        coberturas:
          $ref: "#/components/schemas/CoberturasDto"
        clausulas:
          type: array
          items:
            $ref: "#/components/schemas/ClausulaDto"
        cobranca:
          $ref: "#/components/schemas/CobrancaDto"
        renovacao:
          $ref: "#/components/schemas/RenovacaoDto"
        demonstrativoPremio:
          $ref: "#/components/schemas/DemonstrativoPremioDto"
        endossos:
          type: array
          items:
            $ref: "#/components/schemas/ApoliceEndossoDetalhe"
    SituacaoApoliceAutoDto:
      type: object
      properties:
        descricao:
          type: string
          description: Descrição da situação da apólice
          example: "Apólice ativa"
        motivo:
          type: string
          description: Motivo da situação da apólice
          example: "Pagamento em dia"
    SeguradoDto:
      type: object
      properties:
        descricaoRelacaoProprietario:
          type: string
          description: Descrição da relação com o proprietário
          example: "Proprietário"
        proprietario:
          type: boolean
          description: Indica se é proprietário
          example: true
        documentoIdentificacao:
          $ref: "#/components/schemas/DocumentoIdentificacaoDto"
        telefone:
          $ref: "#/components/schemas/TelefoneDto"
        email:
          type: string
          description: Email do segurado
          example: "exemplo@dominio.com"
        tipoCliente:
          type: string
          description: Tipo de cliente
          example: "Pessoa Física"
    ProprietarioDto:
      type: object
      properties:
        nome:
          type: string
          description: Nome da pessoa
          example: "João Silva"
        tipoPessoa:
          type: string
          description: Tipo de pessoa (Física ou Jurídica)
          example: "Física"
        cpfCnpj:
          type: integer
          description: CPF ou CNPJ da pessoa
          example: 12345678901
        indicadorEstadoCivil:
          type: string
          description: Indicador do estado civil
          example: "Solteiro"
        indicadorSexo:
          type: string
          description: Indicador do sexo
          example: "Masculino"
        dataNascimento:
          type: string
          format: date
          description: Data de nascimento
          example: "1990-01-01"
        perfil:
          $ref: "#/components/schemas/PerfilDto"
    CondutorDto:
      type: object
      properties:
        nome:
          type: string
          description: Nome do condutor
          example: "João da Silva"
        cpfCnpj:
          type: integer
          description: CPF ou CNPJ do condutor
          example: 12345678901
        indicadorEstadoCivil:
          type: string
          description: Indicador do estado civil do condutor
          example: "Solteiro"
        indicadorSexo:
          type: string
          description: Indicador do sexo do condutor
          example: "Masculino"
        dataNascimento:
          type: string
          format: date
          description: Data de nascimento do condutor
          example: "1980-01-01"
        perfil:
      $ref: "#/components/schemas/PerfilCondutorDto"
    VeiculoDto:
      type: object
      properties:
        cdProduto:
          type: integer
          description: Código do produto
          example: 123
        dsProduto:
          type: string
          description: Descrição do produto
          example: "Produto A"
        codigo:
          type: integer
          description: Código do veículo
          example: 456
        codigoFipe:
          type: integer
          description: Código FIPE do veículo
          example: 789123
        placa:
          type: string
          description: Placa do veículo
          example: "ABC-1234"
        modelo:
          type: string
          description: Modelo do veículo
          example: "Modelo X"
        anoModelo:
          type: integer
          description: Ano do modelo do veículo
          example: 2020
        anoFabricacao:
          type: integer
          description: Ano de fabricação do veículo
          example: 2019
        chassi:
          type: string
          description: Chassi do veículo
          example: "9BWZZZ377VT004251"
        tipo:
          type: integer
          description: Tipo do veículo
          example: 1
        tipoUso:
          type: string
          description: Tipo de uso do veículo
          example: "Particular"
        chassiDecodificado:
          type: boolean
          description: Indica se o chassi é decodificado
          example: true
        chassiRemarcado:
          type: boolean
          description: Indica se o chassi é remarcado
          example: false
        codigoCategoria:
          type: integer
          description: Código da categoria do veículo
          example: 2
        codigoVeiculoBradesco:
          type: integer
          description: Código do veículo no Bradesco
          example: 123456
        codigoVeiculoMolicar:
          type: integer
          description: Código do veículo no Molicar
          example: 654321
        descricaoTipoCarroceria:
          type: string
          description: Descrição do tipo de carroceria
          example: "Sedan"
        codigoCarroceria:
          type: integer
          description: Código da carroceria
          example: 3
        descricaoCarroceria:
          type: string
          description: Descrição da carroceria
          example: "Carroceria X"
        codigoTipoCombustivel:
          type: integer
          description: Código do tipo de combustível
          example: 4
        descricaoTipoCombustivel:
          type: string
          description: Descrição do tipo de combustível
          example: "Gasolina"
        codigoFabricante:
          type: integer
          description: Código do fabricante
          example: 5
        descricaoFabricante:
          type: string
          description: Descrição do fabricante
          example: "Fabricante Y"
        codigoTipoSemirreboque:
          type: integer
          description: Código do tipo de semirreboque
          example: 6
        descricaoTipoSemirreboque:
          type: string
          description: Descrição do tipo de semirreboque
          example: "Semirreboque Z"
        codigoUso:
          type: integer
          description: Código do uso do veículo
          example: 7
        descricaoUso:
          type: string
          description: Descrição do uso do veículo
          example: "Uso Pessoal"
        dataSaidaConcessionaria:
          type: string
          format: date
          description: Data de saída da concessionária
          example: "2023-01-01"
        identicar:
          type: boolean
          description: Indica se o veículo é identificado
          example: true
        quantidadeEixos:
          type: integer
          description: Quantidade de eixos do veículo
          example: 2
        quantidadePassageiros:
          type: integer
          description: Quantidade de passageiros do veículo
          example: 5
        quantidadePortas:
          type: integer
          description: Quantidade de portas do veículo
          example: 4
        codigoVeiculoTransformado:
          type: integer
          description: Código do veículo transformado
          example: 8
        descricaoTipoTransformacao:
          type: string
          description: Descrição do tipo de transformação
          example: "Transformação A"
        antiFurto:
          $ref: "#/components/schemas/AntiFurtoDto"
        equipamentos:
          type: array
          items:
            $ref: "#/components/schemas/ItemVeiculoDto"
        acessorios:
          type: array
          items:
            $ref: "#/components/schemas/ItemVeiculoDto"
        opcionais:
          type: array
          items:
            $ref: "#/components/schemas/ItemVeiculoDto"
        percentualFatorAjuste:
          type: number
          format: double
          description: Percentual do fator de ajuste
          example: 10.5
        dsFranquia:
          type: string
          description: Descrição da franquia
          example: "Franquia B"
    RiscoDto:
      type: object
      properties:
        endereco:
          $ref: "#/components/schemas/EnderecoDto"
          description: Endereço do risco
        telefones:
          type: array
          items:
            $ref: "#/components/schemas/TelefoneDto"
          description: Lista de telefones do risco
        email:
          type: string
          description: Email do risco
          example: exemplo@dominio.com
        codigoSucursal:
          type: integer
          description: Código da sucursal
          example: 123
        codigoNovaRegiao:
          type: integer
          description: Código da nova região
          example: 456
    CoberturasDto:
      type: object
      properties:
        premioTotal:
          type: number
          format: double
          description: Prêmio total
          example: 1000.50
        premioLiquidoTotal:
          type: number
          format: double
          description: Prêmio líquido total
          example: 950.75
        valorCustoApolice:
          type: number
          format: double
          description: Valor do custo da apólice
          example: 50.25
        valorFranquia:
          type: number
          format: double
          description: Valor da franquia
          example: 500.00
        codigoFranquiaObrigatoria:
          type: string
          description: Código da franquia obrigatória
          example: "FRQ123"
        valorFranquiaObrigatoria:
          type: number
          format: double
          description: Valor da franquia obrigatória
          example: 300.00
        codigoFranquiaFacultativa:
          type: string
          description: Código da franquia facultativa
          example: "FRQ456"
        valorFranquiaFacultativa:
          type: number
          format: double
          description: Valor da franquia facultativa
          example: 200.00
        perdaParcial:
          $ref: "#/components/schemas/PerdaParcialDto"
        perdaTotal:
          $ref: "#/components/schemas/PerdaTotalDto"
        rouboFurto:
          $ref: "#/components/schemas/RouboFurtoDto"
        coberturasAuto:
          $ref: "#/components/schemas/CoberturasAutoDto"
        coberturasRCF:
          $ref: "#/components/schemas/CoberturasRCFDto"
        coberturasAPP:
          $ref: "#/components/schemas/CoberturasAPPDto"
    ClausulaDto:
      type: object
      properties:
        codigo:
          type: integer
          description: Código da cláusula
          example: 1
        descricao:
          type: string
          description: Descrição da cláusula
          example: "Descrição da cláusula"
    CobrancaDto:
      type: object
      properties:
        descricaoFormaPagamento:
          type: string
          description: Descrição da forma de pagamento
          example: "Cartão de Crédito"
        endereco:
          $ref: "#/components/schemas/EnderecoDto"
          description: Endereço de cobrança
        email:
          type: string
          description: Email de contato
          example: "exemplo@dominio.com"
        telefones:
          type: array
          description: Lista de telefones de contato
          items:
            $ref: "#/components/schemas/TelefoneDto"
        contaCorrente:
          $ref: "#/components/schemas/ContaCorrenteDto"
          description: Dados da conta corrente
        numeroCCB:
          type: string
          description: Número do CCB
          example: "123456789"
        pagamento:
          $ref: "#/components/schemas/PagamentoDto"
          description: Dados do pagamento
    RenovacaoDto:
      type: object
      properties:
        codigoIdentificacao:
          type: string
          description: Código de identificação
          example: "ABC123"
        classeBonus:
          type: integer
          description: Classe de bônus
          example: 5
        numeroApoliceAnterior:
          type: integer
          format: int64
          description: Número da apólice anterior
          example: 123456789012
        numeroItemAnterior:
          type: integer
          description: Número do item anterior
          example: 1
        numeroSucursalAnterior:
          type: integer
          description: Número da sucursal anterior
          example: 10
        codigoCiaRenovacao:
          type: integer
          description: Código da companhia de renovação
          example: 20
        numeroSinistros:
          type: integer
          description: Número de sinistros
          example: 2
    CorretorDto:
      type: object
      properties:
        nome:
          type: string
          description: Nome do corretor
          example: "João da Silva"
        cpfCnpj:
          type: integer
          description: CPF ou CNPJ do corretor
          example: 12345678901
        cpd:
          type: integer
          description: Código do corretor
          example: 123
        sucursal:
          type: integer
          description: Código da sucursal
          example: 456
        telefones:
          type: array
          items:
            $ref: "#/components/schemas/TelefoneDto"
          description: Lista de telefones do corretor
        email:
          type: string
          description: Email do corretor
          example: "joao.silva@exemplo.com"
        enderecos:
          type: array
          items:
            $ref: "#/components/schemas/EnderecoDto"
          description: Lista de endereços do corretor
    DocumentoIdentificacaoDto:
      type: object
      properties:
        descricao:
          type: string
          description: Descrição do documento de identificação
          example: "Carteira de Identidade"
        numero:
          type: string
          description: Número do documento de identificação
          example: "123456789"
        dataEmissao:
          type: string
          format: date
          description: Data de emissão do documento de identificação
          example: "2023-10-01"
        orgaoEmissor:
          type: string
          description: Órgão emissor do documento de identificação
          example: "SSP"
    TelefoneDto:
      type: object
      properties:
        tipo:
          type: string
          description: Tipo de telefone
          example: "Celular"
        ddd:
          type: integer
          description: Código de área (DDD)
          example: 11
        numero:
          type: integer
          description: Número de telefone
          example: 987654321
    EnderecoDto:
      type: object
      properties:
        cep:
          type: integer
          format: int64
          description: Código postal
          example: 12345678
        tipoLogradouro:
          type: string
          description: Tipo de logradouro
          example: Rua
        logradouro:
          type: string
          description: Nome do logradouro
          example: Avenida Paulista
        numero:
          type: string
          description: Número do endereço
          example: 1000
        complemento:
          type: string
          description: Complemento do endereço
          example: Apartamento 101
        municipio:
          type: string
          description: Município
          example: São Paulo
        uf:
          type: string
          description: Unidade Federativa
          example: SP
        dataAtualizacao:
          type: string
          format: date-time
          description: Data de atualização do endereço
          example: 2023-10-01T12:00:00Z
        dataCadastro:
          type: string
          format: date-time
          description: Data de cadastro do endereço
          example: 2023-01-01T12:00:00Z
        bairro:
          type: string
          description: Bairro
          example: Bela Vista
    PerfilCondutorDto:
      type: object
      properties:
        perfilProponente:
          type: integer
          description: Perfil do proponente
          example: 1
        seguradoPrincipalCondutor:
          type: string
          description: Segurado principal condutor
          example: "Sim"
        outroCondutor:
          type: integer
          description: Outro condutor
          example: 2
        garagemPernoite:
          type: integer
          description: Garagem de pernoite
          example: 1
        codigoAtividadePrincipal:
          type: integer
          description: Código da atividade principal
          example: 123
        ramoAtividadePrincipalCondutor:
          type: integer
          description: Ramo da atividade principal do condutor
          example: 456
        utilizaVeiculoTrabalho:
          type: integer
          description: Utiliza veículo para trabalho
          example: 1
        localFixoTrabalho:
          type: integer
          description: Local fixo de trabalho
          example: 1
        cepLocalTrabalho:
          type: integer
          description: CEP do local de trabalho
          example: 12345678
        garagemLocalTrabalho:
          type: integer
          description: Garagem no local de trabalho
          example: 1
        utilizaVeiculoEstudo:
          type: integer
          description: Utiliza veículo para estudo
          example: 1
        localFixoEstudo:
          type: integer
          description: Local fixo de estudo
          example: 1
        cepLocalEstudo:
          type: integer
          description: CEP do local de estudo
          example: 87654321
        garagemLocalEstudo:
          type: integer
          description: Garagem no local de estudo
          example: 1
        faixaKm:
          type: integer
          description: Faixa de quilometragem
          example: 100
    AntiFurtoDto:
      type: object
      properties:
        comodato:
          type: boolean
          description: Indica se é comodato
          example: true
        codigo:
          type: integer
          description: Código do anti-furto
          example: 123
        descricao:
          type: string
          description: Descrição do anti-furto
          example: "Descrição do anti-furto"
    ItemVeiculoDto:
      type: object
      properties:
        codigo:
          type: integer
          description: Código do veículo
          example: 123
        descricao:
          type: string
          description: Descrição do veículo
          example: "Descrição do veículo"
        valor:
          type: number
          format: double
          description: Valor do veículo
          example: 1000.50
    PerdaParcialDto:
      type: object
      properties:
        classeBonus:
          type: integer
          description: Classe de bônus
          example: 5
        valorPremio:
          type: number
          format: double
          description: Valor do Premio
          example: 100.00
    PerdaTotalDto:
      type: object
      properties:
        classeBonus:
          type: integer
          description: Classe de bônus
          example: 5
        valorPremio:
          type: number
          format: double
          description: Valor do Premio
          example: 100.00
    RouboFurtoDto:
      type: object
      properties:
        classeBonus:
          type: integer
          description: Classe de bônus
          example: 5
        valorPremio:
          type: number
          format: double
          description: Valor do Premio
          example: 100.00
    CoberturasAutoDto:
      type: object
      properties:
        percentualDesconto:
          type: number
          format: float
          description: Percentual de desconto
          example: 10.5
        percentualComissao:
          type: number
          format: float
          description: Percentual de comissão
          example: 5.0
        casco:
          $ref: "#/components/schemas/CascoDto"
        carroceria:
          $ref: "#/components/schemas/CarroceriaDto"
        vidros:
          $ref: "#/components/schemas/VidrosDto"
        farolLanterna:
          $ref: "#/components/schemas/FarolLanternaDto"
        equipamentos:
          $ref: "#/components/schemas/EquipamentosDto"
        acessorios:
          $ref: "#/components/schemas/AcessoriosDto"
        kitGas:
          $ref: "#/components/schemas/KitGasDto"
        blindagem:
          $ref: "#/components/schemas/BlindagemDto"
        despesasExtraordinarias:
          $ref: "#/components/schemas/DespesasExtraordinariasDto"
        diariaParalisacao:
          $ref: "#/components/schemas/DiariaParalisacaoDto"
        carroReserva:
          $ref: "#/components/schemas/CarroReservaDto"
        assistenciaDiaNoite:
          $ref: "#/components/schemas/AssistenciaDiaNoiteDto"
        superMartelinho:
          $ref: "#/components/schemas/SuperMartelinhoDto"
    CoberturasRCFDto:
      type: object
      properties:
        percentualDesconto:
          type: number
          format: float
          description: Percentual de desconto
          example: 10.5
        percentualComissao:
          type: number
          format: float
          description: Percentual de comissão
          example: 5.0
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
        danosCorporais:
          $ref: "#/components/schemas/DanosCorporaisDto"
        danosMateriais:
          $ref: "#/components/schemas/DanosMateriaisDto"
        danosMorais:
          $ref: "#/components/schemas/DanosMoraisDto"
        garantiaUnica:
          $ref: "#/components/schemas/GarantiaUnicaDto"
    CoberturasAPPDto:
      type: object
      properties:
        percentualDesconto:
          type: number
          format: float
          description: Percentual de desconto
          example: 10.5
        percentualComissao:
          type: number
          format: float
          description: Percentual de comissão
          example: 5.0
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
        valorLMIInvalidez:
          type: number
          format: double
          description: Valor do LMI para invalidez
          example: 50000.0
        valorLMIMorte:
          type: number
          format: double
          description: Valor do LMI para morte
          example: 100000.0
    ContaCorrenteDto:
      type: object
      properties:
        tipoConta:
          type: string
          description: Tipo da conta
          example: "Corrente"
        codigoBanco:
          type: integer
          description: Código do banco
          example: 123
        numeroAgencia:
          type: integer
          description: Número da agência
          example: 4567
        digitoAgencia:
          type: string
          description: Dígito da agência
          example: "1"
        numeroConta:
          type: integer
          description: Número da conta
          example: 12345678
        digitoConta:
          type: string
          description: Dígito da conta
          example: "9"
    PagamentoDto:
      type: object
      properties:
        codigoOpcaoPagamentoPrimeiraParcela:
          type: integer
          description: Código da opção de pagamento da primeira parcela
          example: 1
        codigoOpcaoPagamentoDemaisParcelas:
          type: integer
          description: Código da opção de pagamento das demais parcelas
          example: 2
        numeroDeParcelas:
          type: integer
          description: Número de parcelas
          example: 12
        valorPrimeiraParcela:
          type: number
          format: double
          description: Valor da primeira parcela
          example: 100.50
        valorDemaisParcelas:
          type: number
          format: double
          description: Valor das demais parcelas
          example: 95.75
        valorIofFinal:
          type: number
          format: double
          description: Valor final do IOF
          example: 10.25
        valorAdicFinal:
          type: number
          format: double
          description: Valor adicional final
          example: 5.00
        percentualAdicFrancionamento:
          type: number
          format: double
          description: Percentual adicional de fracionamento
          example: 1.5
        percentualTaxaJuros:
          type: number
          format: double
          description: Percentual da taxa de juros
          example: 2.0
        melhorDiaVencimentoParcela:
          type: integer
          description: Melhor dia para vencimento da parcela
          example: 15
        formaPagtoPrimeiraParcela:
          type: string
          description: Forma de pagamento da primeira parcela
          example: "Cartão de Crédito"
        formaPagtoDemaisParcelas:
          type: string
          description: Forma de pagamento das demais parcelas
          example: "Boleto Bancário"
    CascoDto:
      type: object
      properties:
        valorFranquia:
          type: number
          format: float
          description: Valor da Franquia
          example: 1500.75
        valorIS:
          type: number
          format: float
          description: Valor Is
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    CarroceriaDto:
      type: object
      properties:
        valorFranquia:
          type: number
          format: float
          description: Valor da Franquia
          example: 1500.75
        valorIS:
          type: number
          format: float
          description: Valor Is
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    VidrosDto:
      type: object
      properties:
        codigoPrestador:
          type: integer
          description: Código do prestador
          example: 123
        descricaoPrestador:
          type: string
          description: Descrição do prestador
          example: "Prestador de Serviços"
        valorCusto:
          type: number
          format: double
          description: Valor de custo
          example: 150.75
        valorPremioLiquido:
          type: number
          format: double
          description: Valor do prêmio líquido
          example: 200.50
        valorFranquia:
          type: number
          format: double
          description: Valor da franquia
          example: 50.00
        valorFranquiaVidrosLaterais:
          type: number
          format: double
          description: Valor da franquia para vidros laterais
          example: 30.00
        valorFranquiaVidrosTraseiros:
          type: number
          format: double
          description: Valor da franquia para vidros traseiros
          example: 40.00
    FarolLanternaDto:
      type: object
      properties:
        valorFranquia:
          type: number
          format: double
          description: Valor da franquia
          example: 500.0
        valorFranquiaXenon:
          type: number
          format: double
          description: Valor da franquia para Xenon
          example: 700.0
        valorFranquiaLed:
          type: number
          format: double
          description: Valor da franquia para LED
          example: 800.0
        valorXenonLed:
          type: number
          format: double
          description: Valor para Xenon e LED
          example: 1000.0
    EquipamentosDto:
      type: object
      properties:
        valorFranquia:
          type: number
          format: float
          description: Valor da Franquia
          example: 1500.75
        valorIS:
          type: number
          format: float
          description: Valor Is
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    AcessoriosDto:
      type: object
      properties:
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    KitGasDto:
      type: object
      properties:
        valorFranquia:
          type: number
          format: float
          description: Valor da Franquia
          example: 1500.75
        valorIS:
          type: number
          format: float
          description: Valor Is
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    BlindagemDto:
      type: object
      properties:
        valorFranquia:
          type: number
          format: float
          description: Valor da Franquia
          example: 1500.75
        valorIS:
          type: number
          format: float
          description: Valor Is
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    DespesasExtraordinariasDto:
      type: object
      properties:
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.50
        valorIS:
          type: number
          format: double
          description: Valor do IS
          example: 30000.00
        contratada:
          type: boolean
          description: Indicador se foi contratada
          example: true
    DiariaParalisacaoDto:
      type: object
      properties:
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.50
    CarroReservaDto:
      type: object
      properties:
        valorPremioLiquido:
          type: number
          format: double
          description: Valor do prêmio líquido
          example: 1500.75
        valorCusto:
          type: number
          format: double
          description: Valor do custo
          example: 500.50
    AssistenciaDiaNoiteDto:
      type: object
      properties:
        valorPremioLiquido:
          type: number
          format: double
          description: Valor do prêmio líquido
          example: 1500.75
        valorCusto:
          type: number
          format: double
          description: Valor do custo
          example: 500.50
    SuperMartelinhoDto:
      type: object
      properties:
        valorPremioMartelinho:
          type: number
          format: double
          description: Valor do prêmio do martelinho
          example: 1500.50
        valorPremioReparoRapido:
          type: number
          format: double
          description: Valor do prêmio do reparo rápido
          example: 1200.75
        valorFranquiaInformadaDanosPequenos:
          type: number
          format: double
          description: Valor da franquia informada para danos pequenos
          example: 300.00
        valorFranquiaInformadaDanosGrandes:
          type: number
          format: double
          description: Valor da franquia informada para danos grandes
          example: 500.00
        valorFranquiaReparoDanosPequenos:
          type: number
          format: double
          description: Valor da franquia para reparo de danos pequenos
          example: 250.00
        valorFranquiaReparoDanosGrandes:
          type: number
          format: double
          description: Valor da franquia para reparo de danos grandes
          example: 450.00
        codigoPrestadorMartelinho:
          type: integer
          description: Código do prestador do martelinho
          example: 12345
        codigoPrestadorReparoRapido:
          type: integer
          description: Código do prestador do reparo rápido
      example: 67890
    DanosCorporaisDto:
      type: object
      properties:
        valorLMI:
          type: number
          format: float
          description: Limite de danos corporais
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    DanosMateriaisDto:
      type: object
      properties:
        valorLMI:
          type: number
          format: float
          description: Limite de danos corporais
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    DanosMoraisDto:
      type: object
      properties:
        classeBonus:
          type: integer
          description: Código da classe bonus
          example: 123
        valorLMI:
          type: number
          format: float
          description: Limite de danos corporais
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    GarantiaUnicaDto:
      type: object
      properties:
        valorLMI:
          type: number
          format: float
          description: Valor garantia unica
          example: 1500.75
        valorPremio:
          type: number
          format: double
          description: Valor do prêmio
          example: 1500.75
    MensagemErroVo:
      type: object
      properties:
        cdErro:
          type: integer
        dsErro:
          type: string
    PerfilDto:
      type: object
      properties:
        filhosEntre17e25:
          type: boolean
          description: Indica se há filhos entre 17 e 25 anos
          example: true
        filhosAte16Anos:
          type: boolean
          description: Indica se há filhos até 16 anos
          example: false
        haMaisVeiculoGaragem:
          type: boolean
          description: Indica se há mais de um veículo na garagem
          example: true
        veiculoPernoiteGaragem:
          type: boolean
          description: Indica se o veículo pernoita na garagem
          example: true
        seguradoCorretor:
          type: boolean
          description: Indica se o segurado é corretor
          example: false
        codigoAtividadePrincipal:
          type: integer
          description: Código da atividade principal
          example: 1234
        codigoFaixaRenda:
          type: integer
          description: Código da faixa de renda
          example: 5678
    DemonstrativoPremioDto:
      type: object
      properties:
        vlPremioAuto:
          type: number
          format: double
          description: Auto insurance premium value
          example: 1500.50
        vlPremioRCF:
          type: number
          format: double
          description: RCF insurance premium value
          example: 500.75
        vlPremioAPP:
          type: number
          format: double
          description: APP insurance premium value
          example: 300.25
        vlAdicionalFrac:
          type: number
          format: double
          description: Fractional additional value
          example: 50.00
        vlSubTotal:
          type: number
          format: double
          description: Subtotal value
          example: 2351.50
        vlIOF:
          type: number
          format: double
          description: IOF tax value
          example: 100.75
        vlPremioTotal:
          type: number
          format: double
          description: Total premium value
          example: 2452.25
    ApoliceEndossoDetalhe:
      type: object
      properties:
        numero:
          type: integer
          description: Número da apólice
          example: 12345
        dataInicioVigencia:
          type: string
          format: date
          description: Data de início da vigência da apólice
          example: "01/01/2023"
        dataRealizada:
          type: string
          format: date
          description: Data em que a ação foi realizada
          example: "01/01/2023"
        numeroProposta:
          type: integer
          description: Número da proposta
          example: 12341234
        dataEfetivacaoProposta:
          type: string
          format: date
          description: Data de efetivação da proposta no formato DD/MM/YYYY
          example: "18/06/2025"
        tipoEndosso:
          type: string
          description: |
            Tipo de endosso conforme classificação financeira:
            - E: Endosso SEM movimento de prêmio
            - O: Endosso COM Cobrança
            - S: Endosso COM Restituição
            - C: Endosso de Cancelamento SEM restituição
            - T: Endosso de Cancelamento COM restituição
            - X: Movimento não identificado neste Endosso de Cancelamento
            - Y: Movimento financeiro não identificado neste Endosso
          enum: [E, O, S, C, T, X, Y]
          example: "E"
        descricaoTipoEndosso:
          type: string
          description: |
            Tipo de endosso conforme classificação financeira:
            - E: Endosso SEM movimento de prêmio
            - O: Endosso COM Cobrança
            - S: Endosso COM Restituição
            - C: Endosso de Cancelamento SEM restituição
            - T: Endosso de Cancelamento COM restituição
            - X: Movimento não identificado neste Endosso de Cancelamento
            - Y: Movimento financeiro não identificado neste Endosso
          example: "Endosso SEM movimento de prêmio"
        alteracoes:
          type: array
          items:
            $ref: "#/components/schemas/ApoliceEndossoAlteracao"
          description: Lista de alterações realizadas na apólice
      required:
        - numero
        - dataInicioVigencia
        - dataRealizada
        - numeroProposta
        - dataEfetivacaoProposta
        - tipoEndosso
        - alteracoes
    ApoliceEndossoAlteracao:
      type: object
      properties:
        descricao:
          type: string
          description: Descrição da alteração na apólice
          example: "Mudança de cobertura"
        valorAnterior:
          type: string
          description: Valor antes da alteração
          example: "1000"
        valorAtual:
          type: string
          description: Valor após a alteração
          example: "1200"
      required:
        - descricao
        - valorAnterior
        - valorAtual
