1. Consulte a elegibilidade
Antes de abrir um atendimento, verifique se o cliente e o veículo têm cobertura ativa para o serviço desejado. Este passo é só leitura e nunca consome cota de uso — consultar elegibilidade antes evita metade dos erros de criação.200):
covered vem false e plan/limits vêm null — não é um erro, é uma
resposta 200 normal. Trate covered: false na sua aplicação antes de tentar abrir o atendimento:
uma tentativa de criação sem cobertura devolve 422 NOT_COVERED (ver Erros e
limites).
O documento nunca é registrado em log pela Koolisys — ele só existe na sua requisição.
2. Abra o atendimento
POST /v1/attendances abre o atendimento aguardando a central escolher o prestador — esta chamada
nunca aciona um prestador automaticamente. Ela exige o cabeçalho Idempotency-Key (veja
Idempotência):
201 numa criação nova, 200 numa repetição idempotente — o corpo é o mesmo atendimento
nos dois casos):
customerDocument vem em claro na resposta. attendanceTypeId identifica o tipo de atendimento e
serviceId o serviço do catálogo — os dois são obrigatórios, e o serviço precisa pertencer ao tipo
escolhido. Consulte GET /v1/attendance-types para a lista de tipos ativos com a categoria e os
serviços que cada um agrupa (um mesmo serviço pode aparecer em mais de um tipo — ex.: Reboque leve
em “Colisão” e em “Pane mecânica”); os ids em services são os mesmos de GET /v1/services.
attendanceTypeDetail só é obrigatório quando o tipo exige justificativa.
amountCents (valor do acionamento mais recente, em centavos) e distanceKm (distância
percorrida) vêm nulos enquanto nenhum prestador foi acionado. Depois de acionado, refletem o
acionamento mais recente e nunca são recalculados — inclusive depois de COMPLETED, quando já
representam o valor final apurado. distanceKm também fica nulo quando o prestador é avulso (sem
rota calculada).
serviceId que não pertence ao tipo devolve 400 VALIDATION_ERROR com
field: "attendanceTypeId".
Serviços que exigem destino
Alguns serviços (ex.: reboque) exigem umdestination, no mesmo formato de origin. Se o serviço
escolhido em serviceId exigir destino, envie o campo:
destination é obrigatório é o serviço, nunca o integrador: enviar destination
para um serviço que não exige destino, ou deixar de enviá-lo para um que exige, devolve
400 VALIDATION_ERROR com field: "destination":
3. Acompanhe o atendimento
Consultar um atendimento específico
status,
provider (quando já há um prestador acionado) e history, a linha do tempo do atendimento.
Um atendimento de outra contratante devolve 404 NOT_FOUND, exatamente como um atendimento
inexistente — nunca 403, para não revelar que o id pertence a outra empresa.
Listar atendimentos
200):
meta.nextCursor não é null, use-o no parâmetro cursor
da próxima chamada para seguir para a página seguinte. Ela nunca inclui atendimentos em rascunho —
só os que já foram efetivamente abertos. Filtre por status, e por período de abertura com
openedFrom/openedTo (datas ISO 8601).
amountCents e distanceKm seguem a mesma regra da consulta individual (veja acima): refletem o
acionamento mais recente de cada atendimento da página, nulos enquanto nenhum prestador foi
acionado.
Resumo do fluxo
GET /v1/attendance-types— resolva o par tipo de atendimento + serviço.GET /v1/eligibility— confirme cobertura antes de criar.POST /v1/attendancescomIdempotency-Key— abra o atendimento.GET /v1/attendances/:idouGET /v1/attendances— acompanhe o andamento.
