Bem-vindo ao guia de integração da API de Cotação. Este documento fornece todas as informações necessárias para que sistemas de terceiros possam enviar solicitações de cotação de seguros para processamento automático via Playwright.
A API atua como um gatilho para um robô de automação (worker). Ao receber uma requisição válida, o sistema:
http://[DOMINIO_OU_IP]:3000POST/cotacaoapplication/jsonAbaixo estão detalhados os campos obrigatórios para uma requisição bem-sucedida:
segurado| Campo | Tipo | Descrição |
|---|---|---|
cpf | String (Numeric) | CPF do segurado (Apenas números). |
nomeSocial | String | Nome completo ou social do segurado. |
telefone | String (Numeric) | Telefone com DDD (Apenas números). |
email | String | E-mail válido do segurado. |
cep | String (Numeric) | CEP de residência (Apenas números). |
seguro| Campo | Tipo | Descrição |
|---|---|---|
tipo | String | Tipo de seguro (ex: "Novo", "Renovação com nossa corretora", "Renovação de outra corretora"). |
nomeHierarquico | String (Opcional) | Nome do corretor ou responsável. Se omitido, o padrão aplicado é "Diego Gervasio". |
seguradorasDisponiveis | Array de String (Opcional) | Lista de seguradoras a cotar. Quando informado, a automação mantém selecionadas as seguradoras enviadas e desmarca as demais. Se não informado, mantém o padrão do portal. Valores aceitos: aliro, allianz, azul, bradesco, hdi seguros, hdi seguros fit, hdi seguros basico, mapfre, porto, suhai, tokio, yelum. |
seguradoraAnterior | String | Obrigatório para Renovação. Nome da seguradora anterior. |
sucursalAnterior | String | Obrigatório para Renovação quando seguro.seguradorasDisponiveis não for enviado, ou quando seguro.seguradorasDisponiveis incluir bradesco, ou quando seguro.seguradoraAnterior contiver porto. Caso contrário, não envie (a API rejeita). |
apoliceAnterior | String | Obrigatório para Renovação. Número da apólice anterior. |
coberturaAnterior | String | Obrigatório para Renovação. Cobertura da apólice anterior. |
statusApoliceAnterior | String | Obrigatório para Renovação. Status da apólice anterior. |
inicioVigenciaAnterior | String | Obrigatório para Renovação. Data de início de vigência da apólice anterior. |
fimVigenciaAnterior | String | Obrigatório para Renovação quando seguro.seguradorasDisponiveis não for enviado. Quando seguro.seguradorasDisponiveis for enviado, passa a ser opcional. |
renovacaoMesmoVeiculo | String | Obrigatório para Renovação quando seguro.seguradorasDisponiveis não for enviado. Quando seguro.seguradorasDisponiveis for enviado, passa a ser opcional. |
renovacaoInclusaoCasco | String | Obrigatório para Renovação quando seguro.seguradorasDisponiveis não for enviado. Quando seguro.seguradorasDisponiveis for enviado, passa a ser opcional. Quando enviado, só é aceito quando seguro.seguradorasDisponiveis incluir yelum, mapfre ou aliro, ou quando seguro.seguradorasDisponiveis não for informado. |
itemApoliceAnterior | String | (Opcional) Item da apólice anterior. |
qtdSinistrosParcialAnterior | String | (Opcional) Quantidade de sinistros de perda parcial na apólice anterior. |
ciApoliceAnterior | String | (Opcional) C.I. da apólice anterior. |
classeBonusAnterior | String | (Opcional) Classe de bônus da apólice anterior. |
bonusRenovacaoTodasSeguradoras | String | Obrigatório para Renovação. "Sim" ou "Não" para bônus aplicado em todas as seguradoras. |
bonusAllianz | String | (Opcional) Classe de bônus Allianz. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir allianz (a API rejeita caso contrário). |
bonusSuhai | String | (Opcional) Classe de bônus Suhai. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir suhai (a API rejeita caso contrário). |
bonusPortoAzulItau | String | (Opcional) Classe de bônus Porto/Azul/Itau. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir porto ou azul (a API rejeita caso contrário). |
bonusMapfre | String | (Opcional) Classe de bônus Mapfre. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir mapfre (a API rejeita caso contrário). |
bonusTokio | String | (Opcional) Classe de bônus Tokio. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir tokio (a API rejeita caso contrário). |
bonusHdi | String | (Opcional) Classe de bônus HDI. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir qualquer HDI (hdi seguros, hdi seguros fit, hdi seguros basico) (a API rejeita caso contrário). |
bonusBradesco | String | (Opcional) Classe de bônus Bradesco. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir bradesco (a API rejeita caso contrário). |
bonusYelumAliroIndiana | String | (Opcional) Classe de bônus Yelum/Aliro/Indiana. Se seguro.seguradorasDisponiveis for enviado, só envie quando incluir yelum ou aliro (a API rejeita caso contrário). |
veiculo| Campo | Tipo | Descrição |
|---|---|---|
placa | String | Placa do veículo (ex: ABC1D23). |
chassiRemarcado | String | "Sim" ou "Não". |
financiado | String | "Sim" ou "Não". |
alienacaoFiduciaria | String (Opcional) | Texto da alienação fiduciária (ex.: nome da financeira). Usar apenas quando financiado for "Sim" (a API rejeita caso contrário). Se o portal não exibir este campo, a automação ignora e registra no log. |
antifurto | String | Valores: "Alarme Sonoro", "Bloqueador", "Rastreador", "Dispositivos comuns", "Não". |
alarmeSonoroAllianz | String (Opcional) | Ex: "Corta Combustível - RF-ST2001". Usar apenas quando antifurto for "Alarme Sonoro" (a API rejeita caso contrário). |
bloqueadorAllianz | String (Opcional) | Ex: "CAR SYSTEM - Bloqueador". Texto da opção de bloqueador para Allianz. Usar apenas quando antifurto for "Bloqueador" (a API rejeita caso contrário). |
bloqueadorBradescoSeguros | String (Opcional) | Ex: "Cielocel GSM/GPRS Gs8". Texto da opção de bloqueador para Bradesco Seguros. Usar apenas quando antifurto for "Bloqueador" (a API rejeita caso contrário). |
bloqueadorYelum | String (Opcional) | Texto da opção de bloqueador para Yelum. Usar apenas quando antifurto for "Bloqueador" (a API rejeita caso contrário). |
bloqueadorPorto | String (Opcional) | Texto da opção de Porto Seguro. Usar quando antifurto for "Bloqueador". Também é aceito quando antifurto for "Rastreador" (Porto Seguro) (a API rejeita caso contrário). |
gerenciadoraTokio | String (Opcional) | Texto da gerenciadora para Tokio Marine quando exigido (ex.: quando o valor selecionado for "CONTROLLOC GPS"). |
alarmeSonoroAntiFurtoBradesco | String (Opcional) | Ex: "Cielocel GSM/GPRS Gs8". Texto da opção Bradesco. Usar quando antifurto for "Alarme Sonoro" e também quando antifurto for "Dispositivos comuns" (a API rejeita caso contrário). |
antifurtoTokio | String (Opcional) | Ex: "CONTROLLOC GPS". Texto da opção Tokio Marine (serve tanto para antifurto/rastreador quanto para bloqueador). Se o campo não existir/não estiver visível no portal, a automação ignora e registra no log. |
antifurtoMapfre | String (Opcional) | Ex: "CAR SYSTEM - Bloqueador". Texto da opção de antifurto/bloqueador para Mapfre. Usar apenas quando antifurto for "Bloqueador" (a API rejeita caso contrário). |
rastreadorAllianz | String (Opcional) | Texto da opção de rastreador para Allianz. Usar apenas quando antifurto for "Rastreador" (a API rejeita caso contrário). |
rastreadorBradescoSeguros | String (Opcional) | Texto da opção de rastreador para Bradesco Seguros. Usar apenas quando antifurto for "Rastreador" (a API rejeita caso contrário). |
rastreadorYelum | String (Opcional) | Texto da opção de rastreador para Yelum. Usar apenas quando antifurto for "Rastreador" (a API rejeita caso contrário). |
rastreadorMapfre | String (Opcional) | Texto da opção de rastreador para Mapfre. Usar apenas quando antifurto for "Rastreador" (a API rejeita caso contrário). |
dispositivosComunsAllianz | String (Opcional) | Obrigatório quando antifurto for "Dispositivos comuns". Texto da opção de dispositivos comuns para Allianz. Se o portal não exibir este campo, a automação ignora e registra no log. |
acessorios | String (Opcional) | "Sim" ou "Não" para expandir a seção "Blindagem, kit Gás, acessórios, equipamentos ou opcionais". |
kitacessorios | String (Opcional) | "Sim" ou "Não" para marcar Acessórios (item dentro da seção). Usar apenas quando acessorios for "Sim" (a API rejeita caso contrário). |
opcionais | String (Opcional) | "Sim" ou "Não" para marcar Opcionais (item dentro da seção). Usar apenas quando acessorios for "Sim" (a API rejeita caso contrário). |
opcionais2 | String (Opcional) | Lista de opcionais (separados por vírgula), ex.: "Air bag motorista, Air bag passageiro". Usar apenas quando acessorios for "Sim" e opcionais for "Sim" (a API rejeita caso contrário). |
equipamentos | String (Opcional) | "Sim" ou "Não" para marcar Equipamentos (item dentro da seção). Usar apenas quando acessorios for "Sim" (a API rejeita caso contrário). |
capotaFibra | String (Opcional) | Valor do equipamento Capota de Fibra (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
franquiaCapotaFibra | String (Opcional) | "Sim" ou "Não" para marcar franquia da Capota de Fibra. Se omitido, a automação não altera. Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
equipamentoEspecial | String (Opcional) | Valor do equipamento Equipamento Especial (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
franquiaEquipamentoEspecial | String (Opcional) | "Sim" ou "Não" para marcar franquia do Equipamento Especial. O padrão do portal já é "Sim"; se omitido, a automação não altera. Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
telefoneCelularVeicular | String (Opcional) | Valor do equipamento Telefone Celular Veicular (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
franquiaTelefoneCelularVeicular | String (Opcional) | "Sim" ou "Não" para marcar franquia do Telefone Celular Veicular. O padrão do portal já é "Sim"; se omitido, a automação não altera. Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
rebaixado | String (Opcional) | "Sim" ou "Não". Informa se o veículo é rebaixado. Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
tunado | String (Opcional) | "Sim" ou "Não". Informa se o veículo é tunado. Usar apenas quando acessorios for "Sim" e equipamentos for "Sim" (a API rejeita caso contrário). |
radioAmFm | String (Opcional) | Valor do acessório Radio AM/FM (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e kitacessorios for "Sim" (a API rejeita caso contrário). |
cdPlayer | String (Opcional) | Valor do acessório CD Player (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e kitacessorios for "Sim" (a API rejeita caso contrário). |
franquiaCdPlayer | String (Opcional) | "Sim" ou "Não" para marcar franquia do CD Player. O padrão do portal já é "Sim"; se omitido, a automação não altera. Usar apenas quando acessorios for "Sim" e kitacessorios for "Sim" (a API rejeita caso contrário). |
dvdPlayer | String (Opcional) | Valor do acessório DVD Player (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e kitacessorios for "Sim" (a API rejeita caso contrário). |
rodasLigaLeve | String (Opcional) | Valor do acessório Rodas de Liga Leve (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e kitacessorios for "Sim" (a API rejeita caso contrário). |
kitMultimidia | String (Opcional) | Valor do acessório Kit Multimídia (numérico, ex.: 1000,00). Usar apenas quando acessorios for "Sim" e kitacessorios for "Sim" (a API rejeita caso contrário). |
franquiaRadioAmFm | String (Opcional) | "Sim" ou "Não" para marcar franquia do Radio AM/FM. O padrão do portal já é "Sim"; se omitido, a automação não altera. Usar apenas quando acessorios for "Sim" e kitacessorios for "Sim" (a API rejeita caso contrário). |
blindagem | String (Opcional) | "Sim" ou "Não" para marcar Blindagem. |
coberturaBlindagem | String (Opcional) | Obrigatório quando blindagem for "Sim". Texto da cobertura de blindagem. |
valorBlindagem | String (Opcional) | Obrigatório quando coberturaBlindagem estiver preenchido. Valor da blindagem (numérico, ex.: 1000,00). |
comFranquia | String (Opcional) | "Sim" ou "Não" para marcar "Com franquia". Se blindagem for "Sim" (ou coberturaBlindagem for enviado) e não for passado, o padrão assumido é "Não". |
kitGas | String (Opcional) | "Sim" ou "Não" para marcar Kit Gás. |
coberturaKitGas | String (Opcional) | Obrigatório quando kitGas for "Sim". "Sim" ou "Não" para marcar Cobertura de Kit Gás. |
valorKitGas | String (Opcional) | Obrigatório quando coberturaKitGas for "Sim". Valor do Kit Gás (numérico, ex.: 1000,00). |
comFranquiaKitGas | String (Opcional) | "Sim" ou "Não" para marcar "Com franquia" do Kit Gás. Se coberturaKitGas for "Sim" e não for passado, o padrão assumido é "Não". |
possuiAntifurtoPorto | String (Opcional) | Ex: "Sim". "Sim" ou "Não" para marcar "Possui algum antifurto da Porto Seguro?" (serve tanto no fluxo geral quanto no fluxo de bloqueador). |
hdiSegurosBasico | String (Opcional) | Ex: "Sim". "Sim" ou "Não" para acionar a seleção básica da HDI após avançar. Se antifurto for "Bloqueador", este campo é opcional (pode ser omitido). |
pcdCnhEspecial | String (Opcional) | "Sim" ou "Não". PcD / CNH Especial. Se o portal não exibir este campo, a automação ignora e registra no log. |
valorAdaptacaoPcd | String (Opcional) | Valor da adaptação PcD (numérico, ex.: 1000,00). Usar apenas quando pcdCnhEspecial for "Sim" (a API rejeita caso contrário). Se o portal não exibir este campo, a automação ignora e registra no log. |
cepPernoite | String (Numeric) | CEP onde o veículo fica guardado (Apenas números). |
cepCirculacao | String (Numeric) | CEP de circulação (Apenas números). Se o portal não exibir este campo, a automação ignora e registra no log. |
kmMes | String (Numeric) | Estimativa de KM rodados por mês (Apenas números). Se o portal não exibir este campo, a automação ignora e registra no log. |
tipoUso | String | Ex: "Particular", "Comercial". |
categoriaTaxiVeiculo | String | Obrigatório quando tipoUso for "Táxi". Categoria do taxi/veículo (seleção no portal). A API rejeita caso seja enviado quando tipoUso não for "Táxi". |
utilizacaoLocadoraContrato | String | Obrigatório quando tipoUso for "Locadora (contrato)". Utilização do veículo na locação por contrato (seleção no portal). A API rejeita caso seja enviado quando tipoUso não for "Locadora (contrato)". |
usoComercialDoisOuMaisDias | String | Obrigatório quando tipoUso for "Particular". Valores: "Sim" ou "Não". A API rejeita caso seja enviado quando tipoUso não for "Particular". |
complementares| Campo | Tipo | Descrição |
|---|---|---|
tipoGaragem | String | Descrição da garagem (ex: "Sim, com portão manual"). |
relacaoSeguradoProprietario | String | "Sim" ou "Não". |
relacaoSeguradoComProprietario | String | Obrigatório quando relacaoSeguradoProprietario for "Não". Relação do segurado com o proprietário (seleção no portal). A API rejeita caso seja enviado quando relacaoSeguradoProprietario não for "Não". |
proprietarioCpf | String | Obrigatório para algumas relações quando relacaoSeguradoProprietario for "Não". CPF do proprietário (apenas números). |
proprietarioNome | String | Obrigatório para algumas relações quando relacaoSeguradoProprietario for "Não". Nome do proprietário. |
proprietarioNomeSocial | String (Opcional) | Nome social do proprietário. |
proprietarioSexo | String | Obrigatório para algumas relações quando relacaoSeguradoProprietario for "Não". "Masculino" ou "Feminino". |
proprietarioNascimento | String | Obrigatório para algumas relações quando relacaoSeguradoProprietario for "Não". Data de nascimento (DD/MM/AAAA). |
proprietarioEstadoCivil | String | Obrigatório para algumas relações quando relacaoSeguradoProprietario for "Não". Estado civil do proprietário. |
principalCondutor | String (Opcional) | "Sim" ou "Não". Recomendado enviar "Sim" para manter o fluxo mais simples e evitar a abertura de campos adicionais no portal. Se omitido, a automação mantém o valor padrão do portal. Quando omitido, a API permite enviar os campos do principal condutor; se enviar qualquer dado além de principalCondutorRelacaoSegurado, então CPF, Nome, Sexo, Nascimento e Estado Civil passam a ser obrigatórios. |
principalCondutorRelacaoSegurado | String (Opcional) | Relação do condutor com o segurado (seleção no portal). Quando principalCondutor for omitido, este campo pode ser enviado sozinho; se você enviar qualquer outro dado do principal condutor, então CPF, Nome, Sexo, Nascimento e Estado Civil passam a ser obrigatórios (mesma regra do fluxo principalCondutor = "Não"). |
ramoAtividadeComercialProfissional | String | Obrigatório quando veiculo.tipoUso não for "Particular". Ramo de atividade comercial/profissional (seleção no portal). A API rejeita caso seja enviado quando veiculo.tipoUso for "Particular". |
profissaoPrincipalCondutor | String | Obrigatório quando veiculo.tipoUso não for "Particular". Profissão principal do condutor (seleção no portal). A API rejeita caso seja enviado quando veiculo.tipoUso for "Particular". |
seguroCorretorProximo | String | "Sim" ou "Não". |
tipoResidencia | String | Ex: "Casa/sobrado", "Apartamento". |
pessoas17a25 | String | "Sim" ou "Não". |
cobertura| Campo | Tipo | Descrição |
|---|---|---|
plano | String (Opcional) | Plano de cobertura (Página 5). Se omitido, o portal mantém o padrão "FÁCIL". Valores aceitos (case-insensitive): "facil", "pleno", "total", "personalizado". |
modalidade | String (Opcional) | Modalidade (Página 5) selecionada no portal (Select2). Se omitido, mantém o padrão do portal (ex.: "Valor de Mercado"). |
percentualAjuste | String (Opcional) | % Ajuste (Página 5). Campo numérico opcional (ex.: "100", "95,5"). Se omitido, mantém o padrão do portal. |
franquiaPrimeiraOpcao | String (Opcional) | Primeira opção de franquia (Página 5) selecionada no portal (Select2). Se omitido, mantém o padrão do portal (ex.: "Normal 100%"). |
franquiaSegundaOpcao | String (Opcional) | Segunda opção de franquia (Página 5) selecionada no portal (Select2). Se omitido, mantém o padrão do portal (ex.: "Reduzida 50%"). |
danosMateriaisTerceiros | String (Opcional) | Danos materiais a terceiros (Página 5) selecionado no portal (Select2). Se omitido, mantém o padrão do portal (ex.: "100.000,00"). |
danosCorporaisTerceiros | String (Opcional) | Danos corporais a terceiros (Página 5) selecionado no portal (Select2). Se omitido, mantém o padrão do portal (ex.: "100.000,00"). |
appMortePorPassageiro | String (Opcional) | APP Morte (por passageiro) (Página 5). Campo de valor opcional (ex.: "10000,00", "10.000,00"). Se omitido, mantém o padrão do portal (ex.: "10.000,00"). |
appInvalidezPorPassageiro | String (Opcional) | APP Invalidez (por passageiro) (Página 5). Campo de valor opcional (ex.: "10000,00", "10.000,00"). Se omitido, mantém o padrão do portal (ex.: "10.000,00"). |
danosMorais | String (Opcional) | Danos morais (Página 5). Campo de valor opcional (ex.: "10000,00", "10.000,00"). Se omitido, mantém o padrão do portal (ex.: "10.000,00"). |
despesasExtras | String (Opcional) | Despesas extras (Página 5) selecionada no portal (Select2). Se omitido, mantém o padrão do portal (ex.: "Não contratada"). |
maisAssistencias | String/Boolean (Opcional) | + Assistências (Página 5). Envie "Sim" (ou true) para clicar no botão de abrir assistências. Se omitido, mantém o padrão do portal. |
maisAssistenciasSeguradoras | String (Opcional) | Seguradora específica para + Assistências (ex.: "allianz"). Só é aplicada quando maisAssistencias for "Sim". Se omitido, mantém todas selecionadas no portal. Se seguro.seguradorasDisponiveis for enviado, esta seguradora deve estar presente nele. |
Exemplos de uso:
"cobertura": { "plano": "facil" }
"cobertura": { "plano": "pleno" }
"cobertura": { "plano": "total" }
"cobertura": { "plano": "personalizado" }
"cobertura": { "modalidade": "Valor de Mercado" }
"cobertura": { "plano": "pleno", "modalidade": "Valor de Mercado" }
"cobertura": { "percentualAjuste": "100" }
"cobertura": { "plano": "pleno", "modalidade": "Valor de Mercado", "percentualAjuste": "95,5" }
"cobertura": { "franquiaPrimeiraOpcao": "Normal 100%" }
"cobertura": { "plano": "pleno", "franquiaPrimeiraOpcao": "Normal 100%" }
"cobertura": { "franquiaSegundaOpcao": "Reduzida 50%" }
"cobertura": { "plano": "pleno", "franquiaPrimeiraOpcao": "Normal 100%", "franquiaSegundaOpcao": "Reduzida 50%" }
"cobertura": { "danosMateriaisTerceiros": "100.000,00" }
"cobertura": { "plano": "pleno", "danosMateriaisTerceiros": "100.000,00" }
"cobertura": { "danosCorporaisTerceiros": "100.000,00" }
"cobertura": { "plano": "pleno", "danosCorporaisTerceiros": "100.000,00" }
"cobertura": { "appMortePorPassageiro": "10.000,00" }
"cobertura": { "plano": "pleno", "appMortePorPassageiro": "10.000,00" }
"cobertura": { "appInvalidezPorPassageiro": "10.000,00" }
"cobertura": { "plano": "pleno", "appInvalidezPorPassageiro": "10.000,00" }
"cobertura": { "danosMorais": "10.000,00" }
"cobertura": { "plano": "pleno", "danosMorais": "10.000,00" }
"cobertura": { "despesasExtras": "Não contratada" }
"cobertura": { "plano": "pleno", "despesasExtras": "Não contratada" }
"cobertura": { "maisAssistencias": "Sim" }
"cobertura": { "maisAssistencias": "Sim", "maisAssistenciasSeguradoras": "allianz" }
Exemplo 0 - Payload pronto para teste (resiliência de seletores):
data/requests/cotacao-seletores-resiliencia.jsonExemplo 1 - Fluxo simples (rápido até Cobertura):
{
"id": "COT_EXEMPLO_001",
"segurado": {
"cpf": "12345678900",
"nomeSocial": "Cliente Exemplo",
"telefone": "11999999999",
"email": "cliente.exemplo@teste.com",
"cep": "01001000"
},
"seguro": {
"tipo": "Novo",
"nomeHierarquico": "NOME DO CORRETOR"
},
"veiculo": {
"placa": "ABC1D23",
"chassiRemarcado": "Não",
"financiado": "Não",
"antifurto": "Não",
"cepPernoite": "01001000",
"cepCirculacao": "01001000",
"kmMes": "800",
"tipoUso": "Particular",
"usoTrabalho": "Não",
"usoEstudo": "Não",
"usoComercialDoisOuMaisDias": "Não"
},
"complementares": {
"tipoGaragem": "Sim, com portão manual",
"relacaoSeguradoProprietario": "Sim",
"principalCondutor": "Sim",
"seguroCorretorProximo": "Não",
"tipoResidencia": "Casa/sobrado",
"pessoas17a25": "Não"
},
"cobertura": {
"plano": "pleno"
}
}
Exemplo 2 - Cobertura com vários campos:
{
"id": "COT_EXEMPLO_002",
"segurado": {
"cpf": "22233344455",
"nomeSocial": "Cliente Cobertura Completa",
"telefone": "11988887777",
"email": "cobertura.completa@teste.com",
"cep": "01310930"
},
"seguro": {
"tipo": "Novo",
"nomeHierarquico": "NOME DO CORRETOR"
},
"veiculo": {
"placa": "DEF2G34",
"chassiRemarcado": "Não",
"financiado": "Não",
"antifurto": "Não",
"cepPernoite": "01310930",
"cepCirculacao": "01310930",
"kmMes": "1200",
"tipoUso": "Particular",
"usoTrabalho": "Não",
"usoEstudo": "Não",
"usoComercialDoisOuMaisDias": "Não"
},
"complementares": {
"tipoGaragem": "Sim, com portão automático",
"relacaoSeguradoProprietario": "Sim",
"principalCondutor": "Sim",
"seguroCorretorProximo": "Não",
"tipoResidencia": "Apartamento",
"pessoas17a25": "Não"
},
"cobertura": {
"plano": "personalizado",
"modalidade": "Valor de Mercado",
"percentualAjuste": "95,5",
"franquiaPrimeiraOpcao": "Normal 100%",
"franquiaSegundaOpcao": "Reduzida 50%",
"danosMateriaisTerceiros": "100.000,00",
"danosCorporaisTerceiros": "100.000,00",
"appMortePorPassageiro": "10.000,00",
"appInvalidezPorPassageiro": "10.000,00",
"danosMorais": "10.000,00",
"despesasExtras": "Não contratada"
}
}
Exemplo 3 - Seguradoras selecionadas + maioria dos campos preenchidos:
{
"id": "COT_EXEMPLO_003",
"segurado": {
"cpf": "33344455566",
"nomeSocial": "Cliente Perfil Completo",
"telefone": "11977776666",
"email": "perfil.completo@teste.com",
"cep": "04538132"
},
"seguro": {
"tipo": "Novo",
"nomeHierarquico": "NOME DO CORRETOR",
"seguradorasDisponiveis": ["allianz", "porto", "tokio", "hdi seguros"],
"bonusAllianz": "5",
"bonusPortoAzulItau": "4",
"bonusTokio": "3",
"bonusHdi": "2"
},
"veiculo": {
"placa": "GHI3J45",
"chassiRemarcado": "Não",
"financiado": "Sim",
"alienacaoFiduciaria": "BANCO EXEMPLO",
"antifurto": "Não",
"cepPernoite": "04538132",
"cepCirculacao": "04538132",
"kmMes": "1500",
"tipoUso": "Particular",
"usoTrabalho": "Sim",
"usoEstudo": "Não",
"usoComercialDoisOuMaisDias": "Não",
"blindagem": "Não",
"kitGas": "Não"
},
"complementares": {
"tipoGaragem": "Sim, com portão automático",
"relacaoSeguradoProprietario": "Não",
"relacaoSeguradoComProprietario": "Cônjuge",
"proprietarioCpf": "55566677788",
"proprietarioNome": "Patrícia Exemplo",
"proprietarioSexo": "Feminino",
"proprietarioNascimento": "20/11/1988",
"proprietarioEstadoCivil": "Casado(a)",
"principalCondutor": "Não",
"principalCondutorRelacaoSegurado": "Cônjuge",
"principalCondutorCpf": "55566677788",
"principalCondutorNome": "Patrícia Exemplo",
"principalCondutorSexo": "Feminino",
"principalCondutorNascimento": "20/11/1988",
"principalCondutorEstadoCivil": "Casado(a)",
"seguroCorretorProximo": "Não",
"tipoResidencia": "Apartamento",
"pessoas17a25": "Não"
},
"cobertura": {
"plano": "total",
"modalidade": "Valor de Mercado",
"percentualAjuste": "100",
"franquiaPrimeiraOpcao": "Normal 100%",
"franquiaSegundaOpcao": "Reduzida 50%",
"danosMateriaisTerceiros": "100.000,00",
"danosCorporaisTerceiros": "100.000,00",
"appMortePorPassageiro": "10.000,00",
"appInvalidezPorPassageiro": "10.000,00",
"danosMorais": "10.000,00",
"despesasExtras": "Não contratada"
}
}
curl -X POST http://localhost:3000/cotacao \
-H "Content-Type: application/json" \
-d '{
"id": "COT_12345",
"segurado": { "cpf": "12345678900", "nomeSocial": "João Silva" },
...
}'
const response = await fetch('http://localhost:3000/cotacao', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(dadosCotacao)
});
const result = await response.json();
console.log(result.message);
A API utiliza códigos de status HTTP padrão:
details com os campos ausentes ou inválidos.Exemplo de erro (400):
{
"error": "Dados incompletos ou inválidos",
"details": [
"Campo segurado.cpf é obrigatório e está vazio",
"Campo veiculo.placa é obrigatório e está vazio"
]
}
Se o JSON contiver um nome de campo incorreto, a API retornará 400 informando o campo inválido e sugerindo o nome correto quando possível.
{
"error": "Dados incompletos ou inválidos",
"details": [
"Item 0: Campo veiculo.antifurtoBradesco não é suportado. Use veiculo.alarmeSonoroAntiFurtoBradesco"
]
}
.txt em logs/ com o detalhamento das ações por cotação/worker.logs/ (ex.: ERRO_<ID>_worker<NUM>.png e ERRO_IMPRESSAO_<ID>_<DATA>.png).data/requests/cotacao-seletores-resiliencia.json (array com 1 item).veiculo.kmMes), a automação ignora e registra o motivo no log.ClienteDiario2), a automação tenta fechar o modal e repetir a ação.data/pdfs/ (padrão: <ID>_<CPF>_<DD-MM-AAAA>.pdf).Padrao2000_CoberturaNNNN e Padrao2000_AcessorioNNNN usados nos seletores foram centralizados em pages/selectors/coberturas.ts (evita strings literais espalhadas).Para testar os campos em tempo real e ver o esquema completo, acesse o Swagger UI:
👉 http://localhost:3000/api-docs