simpla.fydocs
Seguros APIProduto

Cotação

Fluxo operacional de cotação no Simplafy Seguros: criação do lead, campos obrigatórios, status do pipeline e cancelamento.

Cotação

A cotação é o ponto de partida do ciclo de vida comercial no Simplafy Seguros. Ela representa o lead de seguro que entra na plataforma — seja por webhook automatizado, criação manual pelo operador ou via integração de parceiros — e segue por um pipeline de qualificação até virar uma proposta encaminhada ao backoffice.

Esta página descreve o fluxo end-to-end, os campos validados pela API e as transições de status suportadas pelo backend.

A nomenclatura interna do código usa sale (venda/lead) como entidade primária. A "cotação" corresponde ao estágio inicial desse registro, antes do encaminhamento ao backoffice para geração da apólice.

O que é uma cotação

Uma cotação no Simplafy Seguros é um registro que reúne três blocos de informação:

  • Cliente (customer) — dados pessoais, endereço e contato do segurado.
  • Veículo (vehicle) — identificação do bem segurado (placa, chassi, modelo, ano).
  • Venda (sale) — vendedor responsável, data de aprovação do financiamento e valor.

O registro é persistido na tabela sell e está vinculado a entidades Person, Vehicle e Vendor. O ciclo da cotação cobre desde a captura do lead até o encaminhamento ao backoffice. Quando uma apólice é efetivamente emitida, ela passa a viver na entidade Policy, separada da cotação original.

Fluxo end-to-end

O fluxo padrão da cotação envolve três atores: o canal de origem (webhook ou operador), o agente SDR (Lia) que faz o primeiro contato, e o backoffice que recebe o lead qualificado para gerar a proposta.

Criação da cotação

A cotação entra na plataforma por uma de duas rotas:

  • Webhook automático — campo source = "webhook" no registro. O lead chega via integração externa (por exemplo, sistema de financiamento).
  • Manual pelo operador — endpoint POST /api/sales/manual, com source = "manual". Limitado a 10 requisições a cada 5 minutos por cliente.

Em ambos os casos, a API valida cliente, veículo e venda antes de persistir.

Atribuição ao SDR

A cotação entra no pipeline com pipelineStatus = PENDING e fica aguardando o primeiro contato do agente SDR.

Tentativa de contato

O agente registra o resultado da abordagem via PATCH /api/sales/:id/status, com eventos como template_sent (modelo enviado) ou contact_failed (tentativa sem retorno). O status no pipeline avança para IN_PROGRESS ou CONTACTED.

Qualificação

Conforme a resposta do cliente, o lead passa por INTERESTED, NOT_INTERESTED ou NO_CONTACT. Quando não há contato, é necessário informar o motivo (no_contact_reason).

Encaminhamento ao backoffice

Leads interessados são encaminhados ao backoffice via evento lead_forwarded. Os campos sent, sent_to, sent_to_number e date_sent registram para quem o lead foi entregue para a geração efetiva da proposta/apólice.

Conversão

Quando a apólice é emitida, o pipeline marca CONVERTED e uma Policy é criada com referência ao mesmo Person.

Reprocessamento manual

Cotações já processadas podem ser reenviadas via POST /api/sales/:id/trigger-webhook. A operação ignora o filtro padrão de 15 dias e dispara o webhook novamente, registrando auditoria.

curl -X POST https://api-seguros.simplafy.com.br/api/sales/{id}/trigger-webhook \
  -H "x-api-key: $SIMPLAFY_SEGUROS_API_KEY"

Campos obrigatórios

A criação manual de cotação (POST /api/sales/manual) exige um payload com três objetos aninhados. As validações abaixo são aplicadas via class-validator no backend.

CampoTipoRegra
fullNamestringmínimo 3 caracteres, apenas letras e espaços
cpfstring11 dígitos numéricos
phonestring10 ou 11 dígitos
birthDateISO dateobrigatório
genderenumM, F ou O
addressstringobrigatório
zipCodestring8 dígitos
citystringobrigatório
statestringUF (2 letras maiúsculas)
rg, cnh, whatsapp, maritalStatusstringopcionais
CampoTipoRegra
manufacturerstringobrigatório
brandstringobrigatório
modelstringobrigatório
platestringformato Mercosul (ABC1D23) ou antigo (ABC-1234)
chassistring17 caracteres alfanuméricos, sem I/O/Q
yearManufacturenumberentre 1900 e o ano atual
yearModelnumberentre 1900 e ano atual + 1
renavam, fipeCode, color, doors, bodyTypeopcionais
CampoTipoRegra
vendorIdUUIDobrigatório, deve referenciar um vendor existente
financingApprovalDateISO dateobrigatório
saleValuenumberentre R$ 1.000,00 e R$ 999.999.999,99

Exemplo de payload

{
  "customer": {
    "fullName": "Ana Pereira",
    "cpf": "12345678901",
    "phone": "11987654321",
    "birthDate": "1990-05-12",
    "gender": "F",
    "address": "Rua das Flores, 100",
    "zipCode": "01001000",
    "city": "São Paulo",
    "state": "SP"
  },
  "vehicle": {
    "manufacturer": "Volkswagen",
    "brand": "VW",
    "model": "Polo",
    "plate": "ABC1D23",
    "chassi": "9BWZZZ377VT004251",
    "yearManufacture": 2024,
    "yearModel": 2025
  },
  "sale": {
    "vendorId": "f3a2b1c4-1234-4abc-9def-0123456789ab",
    "financingApprovalDate": "2026-05-20",
    "saleValue": 65000.00
  }
}

Erros de validação retornam HTTP 400 com a lista de violações por campo. Antes de integrar o endpoint manual, garanta que o frontend ou cliente HTTP envie strings já normalizadas (sem máscaras de CPF/telefone/CEP).

Status e regras

A cotação possui dois eixos de estado: o pipeline de qualificação (enum PipelineStatus) e os eventos de transição aceitos pelo endpoint de status.

Status do pipeline

StatusSignificado
PENDINGAguardando primeiro contato
IN_PROGRESSEm atendimento ativo
CONTACTEDContato realizado
INTERESTEDCliente demonstrou interesse
NOT_INTERESTEDCliente sem interesse
NO_CONTACTNão foi possível contatar o cliente
CONVERTEDConvertido em apólice

A progressão típica é: PENDING → IN_PROGRESS → CONTACTED → INTERESTED/NOT_INTERESTED/NO_CONTACT → CONVERTED.

Eventos de transição

O endpoint PATCH /api/sales/:id/status aceita os seguintes eventos:

EventoQuando usar
webhook_receivedConfirmação de recebimento do lead pelo agente SDR
template_sentModelo de mensagem (WhatsApp) enviado ao cliente
contact_failedTentativa de contato sem retorno; exige no_contact_reason
lead_forwardedLead encaminhado ao backoffice para geração de proposta
curl -X PATCH https://api-seguros.simplafy.com.br/api/sales/{id}/status \
  -H "x-api-key: $SIMPLAFY_SEGUROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "lead_forwarded",
    "sent": true,
    "sent_to": "Backoffice Operador",
    "sent_to_number": "11999998888",
    "dealership": "Concessionária Central"
  }'

Motivos de não contato

Quando o evento é contact_failed, o campo no_contact_reason deve ser preenchido. Os valores permitidos vivem no enum NoContactReason (por exemplo, telefone ausente ou incorreto). Consulte o módulo src/entity/no-contact-reason.enum.ts para a lista atualizada.

Cancelamento

Cancelar uma cotação significa removê-la do pipeline antes da conversão em apólice. A operação é destrutiva e gera registro de auditoria automático.

Excluir uma cotação

curl -X DELETE https://api-seguros.simplafy.com.br/api/sales/{id} \
  -H "x-api-key: $SIMPLAFY_SEGUROS_API_KEY"

Resposta esperada: HTTP 204 No Content.

A exclusão dispara um log na tabela de auditoria com:

  • operationType: DELETE
  • entity: sale
  • entityId: <uuid da cotação>
  • userId e ipAddress do solicitante

A relação com Person é onDelete: CASCADE e com Vehicle é OneToOne com cascade. Excluir uma cotação remove o veículo associado, mas mantém a Person se houver outras cotações vinculadas a ela.

Reverter cancelamentos

Operações de exclusão ficam registradas em audit_logs e podem ser revertidas pela equipe via o módulo de reversão (revert-operation.service). Esse fluxo é restrito a usuários com permissão administrativa e está documentado em Auditoria.

Cotações não convertidas

Cotações com status NOT_INTERESTED ou NO_CONTACT permanecem no pipeline para fins históricos e de KPI. Para liberar capacidade da equipe sem perder o histórico, prefira manter o lead e ajustar o status em vez de excluí-lo.

On this page