Países, estados, cidades e bairros
Lista os países, os estados, as cidades e os bairros cadastrados na plataforma, com filtros e paginação, para preencher os seletores de endereço.
A plataforma mantém uma base oficial de localidades do Brasil. Estas quatro rotas públicas a entregam em cascata: países, estados de um país, cidades de um estado e bairros de uma cidade. O uso típico é um formulário de endereço em que escolher o estado carrega as cidades e escolher a cidade carrega os bairros. Estas rotas não buscam por CEP: servem quando o comprador escolhe a localidade em listas.
Países e estados não têm paginação. Cidades e bairros são paginados. Todas as respostas têm cache público de 5 minutos.
Listar países
/api/v1/storefront/locations/countriesPúblicaLista os países
Lista os países cadastrados. Na loja de teste existe só o Brasil.
Parâmetros de consulta
statusstringA ativo). Sem o parâmetro, devolve todos. Um valor sem nenhum país devolve {"countries": null, "total": 0}.Exemplo de requisição
curl "$BASE_URL/api/v1/storefront/locations/countries"Resposta
{
"countries": [
{ "code": "BR", "name": "Brazil", "name_pt": "Brasil", "status": "A" }
],
"total": 1
}Campos da resposta
countriesarray|nullnull quando nenhum atende ao filtro.countries[].codestringBR). É o valor de country_code nos estados e de country no endereço.countries[].namestringcountries[].name_ptstringcountries[].statusstringA (ativo).totalintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Falha ao listar | {"error":"failed to list countries","detail":"..."} |
Listar estados
/api/v1/storefront/locations/statesPúblicaLista os estados de um país
Lista os estados (UFs). Sem filtro devolve todos os estados cadastrados; na loja de teste são os 27 do Brasil.
Parâmetros de consulta
country_codestringBR). Opcional.Exemplo de requisição
curl "$BASE_URL/api/v1/storefront/locations/states?country_code=BR"Resposta
{
"states": [
{
"id": "bd6860b2-2838-4eb7-ab27-37b0be2412ab",
"country_code": "BR",
"code": "AC",
"name": "Acre",
"name_pt": "Acre"
},
{
"id": "fc855973-fe7d-407f-aa1f-f19c4490f06d",
"country_code": "BR",
"code": "AL",
"name": "Alagoas",
"name_pt": "Alagoas"
}
],
"total": 27
}Campos da resposta
statesarraystates[].iduuidstate_id das cidades.states[].country_codestringstates[].codestringSP). É o valor de state no endereço.states[].namestringstates[].name_ptstringtotalintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Falha ao listar | {"error":"failed to list states","detail":"..."} |
Listar cidades
/api/v1/storefront/locations/citiesPúblicaLista as cidades, com filtros e paginação
Lista as cidades, em ordem alfabética, 50 por página por padrão. Filtre por estado com state_id (o id de um item de states) e busque por parte do nome com search. O limite é de 1000 por página: um valor maior que isso (por exemplo, per_page=9999 para trazer o estado inteiro de uma vez) é reduzido para 1000.
Parâmetros de consulta
state_iduuidsearchstringCampinas acha também Campinas do Sul).sort_dirstringpadrão: ascascdescpageintegerpadrão: 1per_pageintegerpadrão: 50Exemplo de requisição
curl "$BASE_URL/api/v1/storefront/locations/cities?state_id=40ccb0c3-e36f-495c-846d-15464f01f43f&per_page=100"Resposta
{
"cities": [
{
"id": "52f3b670-a88e-4dae-8c0f-b81a672215d1",
"state_id": "40ccb0c3-e36f-495c-846d-15464f01f43f",
"state_name": "Goiás",
"state_code": "GO",
"name": "Abadia de Goiás",
"ibge_code": "5200050"
}
],
"total": 246,
"page": 1,
"per_page": 50,
"total_pages": 5
}Campos da resposta
citiesarraycities[].iduuidcity_id dos bairros.cities[].state_iduuidcities[].state_namestringcities[].state_codestringcities[].namestringcities[].ibge_codestringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 500 | state_id que não é UUID | {"error":"failed to list cities","detail":"o valor \"abc\" não é um uuid válido. ..."} |
| 500 | Falha ao listar | {"error":"failed to list cities","detail":"..."} |
Listar bairros
/api/v1/storefront/locations/districtsPúblicaLista os bairros de uma cidade, com paginação
Lista os bairros, 50 por página por padrão e até 3000. Cada bairro traz a faixa de CEP que ele cobre, útil para sugerir o bairro a partir do CEP digitado. Na loja de teste há mais de 74 mil bairros: sempre filtre por cidade.
Parâmetros de consulta
city_iduuidid de um item de cities).searchstringpageintegerpadrão: 1per_pageintegerpadrão: 50Exemplo de requisição
curl "$BASE_URL/api/v1/storefront/locations/districts?city_id=26cfb7bb-3ba4-4b77-be38-1fb5c5bf11b7&per_page=100"Resposta
{
"districts": [
{
"id": "22f6bd51-65bd-470c-99cb-1b7662cd9d82",
"city_id": "26cfb7bb-3ba4-4b77-be38-1fb5c5bf11b7",
"city_name": "Ouro Preto",
"name": "13 de Maio",
"cep_range_start": "35406040",
"cep_range_end": "35406082"
}
],
"total": 78,
"page": 1,
"per_page": 50,
"total_pages": 2
}Campos da resposta
districtsarraydistricts[].iduuiddistricts[].city_iduuiddistricts[].city_namestringdistricts[].namestringdistricts[].cep_range_startstringdistricts[].cep_range_endstringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 400 | city_id que não é UUID | {"error":"invalid city_id","detail":"city_id must be a valid UUID"} |
| 500 | Falha ao listar | {"error":"failed to list districts","detail":"..."} |