customers.write, vehicles.write,
plans.write, eligibility.read e attendances.write.
Duas regras valem para tudo nesta página:
- Tudo é escopado pela sua contratante. Um id de cliente, veículo ou plano de outra
contratante responde
404 NOT_FOUND, indistinguível de um id inexistente. - O plano dita o alvo do vínculo. Cada plano de
GET /v1/companydiz emappliesTose cobre o cliente inteiro (CUSTOMER) ou veículo a veículo (VEHICLE) — e o vínculo só pode ser feito nesse alvo. Encerrar ou trocar um vínculo continua sendo feito pela Koolisys.
1. Cadastre o cliente
POST /v1/customers cadastra o cliente na sua contratante. Só o documento e o nome são
obrigatórios; type (PF/PJ) é inferido do documento quando omitido. Use externalCode para
guardar o código do cliente no seu ERP — ele é único dentro da contratante.
201) devolve a ficha completa — incluindo vehicles: [] e plans: [], ainda
vazios. Guarde data.id: é ele que você usa nas outras chamadas.
Três detalhes que valem dinheiro numa carga em lote:
Idempotency-Keyé opcional, mas use. Repetir a mesma chave com o mesmo corpo devolve o mesmo cliente com200, nunca um segundo cadastro — o timeout de rede vai acontecer (veja Idempotência).- Documento duplicado não é erro fatal. Um documento já cadastrado na sua contratante devolve
409 CUSTOMER_ALREADY_EXISTScomerrors[0].details.customerIdapontando o registro existente — siga com esse id em vez de tentar de novo. - O documento é validado de verdade (dígito verificador de CPF/CNPJ) — pontuação é ignorada.
2. Cadastre os veículos do cliente
POST /v1/customers/{id}/vehicles cadastra um veículo no cliente. Só a placa é obrigatória — ela
é normalizada (maiúsculas, sem hífen) e é única entre os veículos ativos de todo o sistema.
409 VEHICLE_ALREADY_EXISTS. Quando o veículo existente é da sua
própria contratante, errors[0].details.vehicleId aponta o registro — siga com ele. Quando a
placa está ativa em outra contratante, o 409 vem sem detalhes: a API não revela nada sobre
dados de terceiros. A placa de um veículo excluído fica livre e pode ser recadastrada.
3. Vincule o plano
Sem plano vigente não há cobertura. Descubra os planos disponíveis emGET /v1/company (escopo
company.read) — cada item traz o contractPlanId, o nome e o appliesTo. Aí vincule (escopo
plans.write): plano de cliente em POST /v1/customers/{id}/plans, plano de veículo em
POST /v1/vehicles/{id}/plans.
201) é o vínculo criado — o mesmo objeto que aparece em plans[] na ficha do
cliente. O que pode dar errado:
422 PLAN_TARGET_MISMATCH— o plano se aplica ao outro alvo: um planoVEHICLEnão vincula pelo cliente, nem um planoCUSTOMERpelo veículo. Use a outra rota.409 PLAN_ALREADY_LINKED— esse plano já está vigente nesse cliente/veículo;errors[0].details.beneficiaryPlanIdaponta o vínculo existente — siga com ele.422 PLAN_NOT_AVAILABLE— o plano está inativo no contrato, ou o contrato saiu de vigência.404 NOT_FOUND— cliente, veículo oucontractPlanIdinexistente ou de outra contratante.
4. Confira a base
Consultas para manter o seu ERP em dia (escoposcustomers.read / vehicles.read /
company.read):
meta.nextCursor em ?cursor= até ele vir null
(limit máximo de 100 por página). Na ficha do cliente, plans[] mostra os vínculos vigentes —
appliesTo diz se o plano cobre o cliente inteiro (CUSTOMER) ou veículo a veículo (VEHICLE).
GET /v1/company mostra de onde esses vínculos podem vir: os planos disponíveis nos contratos
vigentes da sua contratante.
5. Elegibilidade e atendimento
Com o cliente e o veículo cadastrados e o plano vinculado, o resto é o fluxo que você já conhece:covered vier true, abra o atendimento com POST /v1/attendances — o passo a passo completo
está em Abrir um atendimento. Se vier false, o cliente ainda não tem plano
vigente para o serviço: confira o vínculo (passo 3) e o catálogo do plano antes de tentar criar
(uma criação sem cobertura devolve 422 NOT_COVERED).
