Cidades
Lista paginada, consulta, criação, alteração e exclusão de cidades (municípios) de um estado.
Cidade é o terceiro nível: pertence a um estado e agrupa bairros. Ela guarda o código IBGE de 7 dígitos, usado no cálculo de ISS e em integrações fiscais. O id é um UUID. Exige o privilégio manage_locations.
Listar cidades
/api/v1/admin/locations/citiesAdminLista cidades com paginação
Ordenadas pelo nome. Para montar um seletor de cidades de um estado inteiro, filtre por state_id e use per_page=1000.
Parâmetros de consulta
state_iduuidsearchstringcampinas).sort_dirstringpadrão: ascascdescpageintegerpadrão: 1per_pageintegerpadrão: 50Exemplo de requisição
curl "$BASE_URL/api/v1/admin/locations/cities?search=campinas&per_page=2" \
-H "Authorization: Bearer $TOKEN"{
"cities": [
{
"id": "6b4323c6-b531-4042-a72c-5afa1d9e0afd",
"state_id": "55766ae5-4725-4971-b1bb-29686b7cc492",
"state_name": "São Paulo",
"state_code": "SP",
"name": "Campinas",
"ibge_code": "3509502"
}
],
"total": 3,
"page": 1,
"per_page": 2,
"total_pages": 2
}Campos da resposta
cities[].iduuidcities[].state_iduuidcities[].state_namestringcities[].state_codestringSP).cities[].namestringcities[].ibge_codestringtotalintegerpageintegerper_pageintegertotal_pagesintegerConsultar cidade
/api/v1/admin/locations/cities/{id}AdminConsulta uma cidade pelo id
Parâmetros de caminho
iduuidobrigatórioA resposta 200 é um único objeto no formato de cities[].
Criar cidade
/api/v1/admin/locations/citiesAdminCadastra uma cidade
Corpo da requisição
state_iduuidobrigatórionamestringobrigatórioibge_codestring{
"id": "2d1f5d0e-7c0b-4a46-bb0d-0d9d6c9e1a42",
"state_id": "55766ae5-4725-4971-b1bb-29686b7cc492",
"state_name": "São Paulo",
"state_code": "SP",
"name": "Vila Nova Exemplo",
"ibge_code": "3599999"
}Alterar cidade
/api/v1/admin/locations/cities/{id}AdminAltera nome ou código IBGE de uma cidade
Alteração parcial. O estado da cidade não pode ser trocado. Enviar ibge_code vazio ("") apaga o código.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringibge_codestringA resposta 200 é a cidade atualizada.
Excluir cidade
/api/v1/admin/locations/cities/{id}AdminExclui uma cidade sem bairros
Parâmetros de caminho
iduuidobrigatório{ "message": "city deleted" }Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido; state_id ou name ausente; ibge_code fora do padrão | {"error":"ibge_code must be a 7-digit number"} |
| 401 | Sem token ou token expirado | {"error":"missing authorization header"} |
| 403 | Sem o privilégio manage_locations | {"error":"insufficient privileges","required":"manage_locations"} |
| 404 | Id inexistente (consultar, alterar) | {"error":"city not found"} |
| 409 | Criar com código IBGE já usado; excluir cidade com bairros | {"error":"ibge code already exists","detail":"a city with this ibge_code already exists"} ou {"error":"city has dependent records","detail":"delete or reassign districts first"} |
| 500 | Id que não é UUID, state_id inexistente na criação, excluir id que não existe, ou atualização com ibge_code fora do formato de 7 dígitos ou já em uso (a atualização não devolve 400 nem 409) | {"error":"failed to get city","detail":"o valor \"abc\" não é um uuid válido. ..."} |