Profile Server API
Endpoints

States

CRUD de estados (UFs) — dados geográficos de referência.

Unidades federativas (dados de referência). Identificadas pelo código IBGE do estado (stateCode). Base path: /api/states · autenticação de usuário.

MétodoRotaScopeResourceAção (role)Sucesso
POST/api/statescreateresource:statescreate201
GET/api/statesreadresource:statesread200
GET/api/states/:stateCodereadresource:states_idread200
PUT/api/states/:stateCodeupdateresource:states_idupdate200
DELETE/api/states/:stateCodedeleteresource:states_iddelete204

Controle de acesso por persona. Personas global e tenant-admin liberam tudo em states. coordinator, technician e viewer têm apenas leitura pela matriz — o catálogo geográfico alimenta os selects de UF/cidade no cadastro de organização e de endereço. Criar, editar e excluir seguem restritos a global/tenant-admin (só via role de exceção states:acao). Token sem role suficiente → 403 NOT_ALLOWED.


Criar estado

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

Corpo

CampoTipoObrigatórioRegras
stateCodeintegersimcódigo IBGE do estado; único (409)
ufstringsimexatamente 2 caracteres; único (409)
namestringsimmín. 1 caractere
latitudenumbersim
longitudenumbersim
regionstringsimmín. 1 caractere (ex.: Sudeste)
curl -X POST http://localhost:3000/api/states \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "stateCode": 35,
    "uf": "SP",
    "name": "São Paulo",
    "latitude": -23.5505,
    "longitude": -46.6333,
    "region": "Sudeste"
  }'

201 Created

{
  "stateCode": 35,
  "uf": "SP",
  "name": "São Paulo",
  "latitude": -23.5505,
  "longitude": -46.6333,
  "region": "Sudeste"
}

Erros

StatuscodeQuando
409STATE_ALREADY_EXISTSJá existe um estado com esse stateCode ou uf

Listar estados

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

Filtros opcionais: name (contém), uf, region.

curl "http://localhost:3000/api/states?region=Sudeste" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Obter estado por código

GET /api/states/:stateCode

Erros

StatuscodeQuando
404STATE_NOT_FOUNDEstado não existe

Editar estado

PUT /api/states/:stateCode — atualização parcial (o stateCode não muda).

CampoTipoRegras
ufstringexatamente 2 caracteres
namestringmín. 1 caractere
latitudenumber
longitudenumber
regionstringmín. 1 caractere

Retorna 200.

Erros

StatuscodeQuando
404STATE_NOT_FOUNDEstado não existe

Remover estado

DELETE /api/states/:stateCode — retorna 204 No Content.

Erros

StatuscodeQuando
404STATE_NOT_FOUNDEstado não existe

App-to-app (/service)

As consultas de estado estão disponíveis para serviços (app-to-app), autenticadas pelo ServiceAuthMiddleware. Mesmos use case e presenter dos endpoints /api.

MétodoRotaAção (role)SucessoEquivale a
GET/service/statesread200GET /api/states
GET/service/states/:stateCoderead200GET /api/states/:stateCode

Estado é dado de referência global (tabela do IBGE): não tem organizationId, então o filtro por organização não se aplica e todo tenant vê a mesma lista. Criar, editar e remover não têm variante /service — a manutenção da tabela é do painel.