Profile Server API
Endpoints

Cities

CRUD de cidades (municípios) — dados geográficos de referência.

Municípios (dados de referência), vinculados a um estado. Identificados pelo código IBGE (ibgeCode). Base path: /api/cities · autenticação de usuário.

MétodoRotaScopeResourceSucesso
POST/api/citiescreateresource:cities201
GET/api/citiesreadresource:cities200
GET/api/cities/:ibgeCodereadresource:cities_id200
PUT/api/cities/:ibgeCodeupdateresource:cities_id200
DELETE/api/cities/:ibgeCodedeleteresource:cities_id204

Criar cidade

POST /api/cities — a chave primária (ibgeCode) é informada no corpo, não gerada.

Corpo

CampoTipoObrigatórioRegras
ibgeCodeintegersimcódigo IBGE do município; único (409)
namestringsimmín. 1 caractere
latitudenumbersim
longitudenumbersim
capitalbooleansimse é capital do estado
stateCodeintegersimestado existente (400 se não existir)
siafiIdstringsim1 a 4 caracteres; único (409)
dddintegersimcódigo de DDD
timeZonestringsimex.: America/Sao_Paulo
curl -X POST http://localhost:3000/api/cities \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ibgeCode": 3550308,
    "name": "São Paulo",
    "latitude": -23.5505,
    "longitude": -46.6333,
    "capital": true,
    "stateCode": 35,
    "siafiId": "7107",
    "ddd": 11,
    "timeZone": "America/Sao_Paulo"
  }'

201 Created

{
  "ibgeCode": 3550308,
  "name": "São Paulo",
  "latitude": -23.5505,
  "longitude": -46.6333,
  "capital": true,
  "stateCode": 35,
  "siafiId": "7107",
  "ddd": 11,
  "timeZone": "America/Sao_Paulo"
}

409 Conflict — já existe uma cidade com esse ibgeCode ou siafiId.

400 Bad Request — o stateCode informado não existe (StateNotFoundError).


Listar cidades

GET /api/cities — lista paginada (page, limit), ordenada por nome.

Filtros opcionais: name (contém), stateCode, capital (true | false).

curl "http://localhost:3000/api/cities?stateCode=35&capital=true" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Obter cidade por código

GET /api/cities/:ibgeCode404 se não existir.


Editar cidade

PUT /api/cities/:ibgeCode — atualização parcial (o ibgeCode não muda).

CampoTipoRegras
namestringmín. 1 caractere
latitudenumber
longitudenumber
capitalboolean
stateCodeintegerestado existente (400 se não existir)
siafiIdstring1 a 4 caracteres
dddinteger
timeZonestringmín. 1 caractere

Retorna 200; 404 se a cidade não existir; 400 se o stateCode informado não existir.


Remover cidade

DELETE /api/cities/:ibgeCode — retorna 204 No Content.