Rotas: escrita
Cria, substitui e exclui rotas de entrega de um gerente.
Três operações para manter as rotas de entrega: criar uma rota com seus clientes, substituir uma rota inteira e excluí-la. Todas pedem usuário administrador. Cada uma existe em três grafias (routes, ec_routes, ecroutes) e em duas bases (/api/v1.0 e /api); a entrada principal vem primeiro e os aliases logo depois.
Criar uma rota
/api/v1.0/routesAdminCriar uma rota de entrega
Cria a rota e devolve o id. O status inicial é A (ativa). Os ids de customers são gravados como texto, sem conferir se existem.
Corpo da requisição
manager_iduuidobrigatórioroute_id volta como número. Qualquer outro valor que não seja UUID falha com 500.routestringobrigatóriocustomersarray400 Invalid JSON. Se você omitir o campo, a rota é gravada com customers: null; envie [] para uma rota vazia./api/v1.0/ec_routesAdminAlias de POST /api/v1.0/routes
Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/routes.
/api/v1.0/ecroutesAdminAlias de POST /api/v1.0/routes
Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/routes.
/api/routesAdminAlias de POST /api/v1.0/routes
Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/routes. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
/api/ec_routesAdminAlias de POST /api/v1.0/routes
Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/routes. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
/api/ecroutesAdminAlias de POST /api/v1.0/routes
Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/routes. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
Substituir uma rota
/api/v1.0/routes/{id}AdminSubstituir uma rota de entrega
Reescreve nome, gerente, clientes e status. É uma substituição completa, não um patch: o que você não enviar é apagado (customers omitido grava null; status omitido volta para A). A chamada não confere se a rota existe: um UUID desconhecido responde 200 e não altera nada.
Parâmetros de caminho
iduuidobrigatórioid da consulta). Valor 0 dá 400; texto que não seja UUID dá 500 Update failed.Corpo da requisição
manager_iduuidobrigatórioroutestringobrigatóriocustomersarraystatusstringpadrão: AADA ativa, D desativada./api/v1.0/ec_routes/{id}AdminAlias de PUT /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de PUT /api/v1.0/routes/{id}.
/api/v1.0/ecroutes/{id}AdminAlias de PUT /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de PUT /api/v1.0/routes/{id}.
/api/routes/{id}AdminAlias de PUT /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de PUT /api/v1.0/routes/{id}. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
/api/ec_routes/{id}AdminAlias de PUT /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de PUT /api/v1.0/routes/{id}. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
/api/ecroutes/{id}AdminAlias de PUT /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de PUT /api/v1.0/routes/{id}. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
Excluir uma rota
/api/v1.0/routes/{id}AdminExcluir uma rota de entrega
Exclui a rota e, antes, todos os check-ins registrados nela. A exclusão é definitiva. A resposta é 200 nos dois casos; o campo success diz se havia o que excluir.
Parâmetros de caminho
iduuidobrigatório0 dá 400; texto que não seja UUID dá 500 Delete failed./api/v1.0/ec_routes/{id}AdminAlias de DELETE /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de DELETE /api/v1.0/routes/{id}.
/api/v1.0/ecroutes/{id}AdminAlias de DELETE /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de DELETE /api/v1.0/routes/{id}.
/api/routes/{id}AdminAlias de DELETE /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de DELETE /api/v1.0/routes/{id}. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
/api/ec_routes/{id}AdminAlias de DELETE /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de DELETE /api/v1.0/routes/{id}. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
/api/ecroutes/{id}AdminAlias de DELETE /api/v1.0/routes/{id}
Mesmo corpo, mesma resposta e mesmo comportamento de DELETE /api/v1.0/routes/{id}. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.
Exemplo de requisição
# Criar
curl -u "$EMAIL:$API_KEY" -X POST "$BASE_URL/api/v1.0/routes" \
-H "Content-Type: application/json" \
-d '{"manager_id":"12da2430-2092-40da-b361-c0ed2c1cd0d4","route":"Zona Sul","customers":["0d6b8d2e-3f0a-4f0c-9d3c-6b1f2a9a7c11"]}'
# Substituir
curl -u "$EMAIL:$API_KEY" -X PUT "$BASE_URL/api/v1.0/routes/b094b7c2-2e1f-4174-9551-b05fa2fe482e" \
-H "Content-Type: application/json" \
-d '{"manager_id":"12da2430-2092-40da-b361-c0ed2c1cd0d4","route":"Zona Sul 2","customers":[],"status":"D"}'
# Excluir
curl -u "$EMAIL:$API_KEY" -X DELETE "$BASE_URL/api/v1.0/routes/b094b7c2-2e1f-4174-9551-b05fa2fe482e"Resposta
{ "route_id": "b094b7c2-2e1f-4174-9551-b05fa2fe482e" }{ "success": true, "route_id": "b094b7c2-2e1f-4174-9551-b05fa2fe482e" }{ "success": true }Campos da resposta
route_iduuidmanager_id de representante (inteiro), vem como número.successbooleanPUT, sempre true. No DELETE, true se uma rota foi excluída e false se o id não existia (a resposta continua 200).Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido, ou customers com algo que não é string | {"message": "Invalid JSON", "status": 400} |
| 400 | manager_id ou route ausente (no POST e no PUT) | {"message": "Required fields: manager_id, route", "status": 400} |
| 400 | id igual a 0 | {"error": "invalid id parameter"} |
| 401 | Sem credencial ou credencial inválida | {"message": "Authentication required. Use HTTP Basic with email:api_key or Bearer <jwt>.", "status": 401} |
| 403 | Usuário que não é administrador | {"message": "Forbidden: admin scope required", "status": 403} |
| 500 | manager_id ou id que não é UUID | {"message": "Insert failed", "status": 500}, Update failed ou Delete failed |