CadastroMunicipio
Consulta read-only de municípios brasileiros (tabela CC2,
alimentada pelo complemento fiscal da TOTVS com a base IBGE de 5.570
municípios). Identificador externo é o código IBGE municipal
(até 7 dígitos). Sem POST, PUT ou
DELETE — manutenção da CC2 é feita pela TOTVS via
atualizadores oficiais.
https://erpapi.jetme.com.br/api/99/01
Empresa 99 · Filial 01
Endpoint OAuth2
Sem credenciais? Você pode pegar o token rodando
./src/scripts/get-token.sh na biblioteca e
colar o access_token aqui no campo de refresh
(ou clique em "Logout" para limpar e voltar ao fake).
Convenções
Identificador externo. A rota /WsMunicipio/{codmun}
aceita apenas dígitos do código IBGE municipal — de 1 a 7
posições (pattern ^\d{1,7}$). Tamanho real é validado em runtime
via TamSX3("CC2_CODMUN"); pontuação ou letras retornam 400.
Read-only. Não há POST, PUT ou
DELETE. A manutenção da CC2 é responsabilidade do
complemento fiscal da TOTVS; expor escrita aqui contaminaria a base IBGE
oficial. Para uso interno (vincular A1_COD_MUN a um cliente,
por exemplo), o cliente da API consulta aqui e grava o código
no endpoint da entidade pai.
Whitelist de campos retornados. Por padrão, o GET devolve
o conjunto definido em CAMPOS_GET:
CC2_EST, CC2_CODMUN, CC2_MUN,
CC2_CAPITAL, CC2_CODANP, CC2_DDD,
CC2_REGIAO. O parâmetro fields permite reduzir o
conjunto, mas nunca expandi-lo — campos fora da whitelist provocam 400.
Paginação e page-out-of-range. /WsMunicipio
usa page/pageSize (default 50, máx
500). Pedir uma página além do total não é erro:
o endpoint responde 200 com data:[] e count:0. Cabe
ao consumidor inferir fim da paginação quando count < pageSize
ou data vazio.
Estratégia de índice por filtro. A listagem escolhe o
índice mais seletivo automaticamente: codanp →
est(+mun) → mun → scan completo. Sem filtro a
operação varre a CC2 inteira (cara, intencionalmente não bloqueada
como fallback de inspeção).
Busca normalizada (typeahead). /_search usa
U_NoAcento para comparar termo e nome da base sem acento e
case-insensitive. Termo mínimo de 2 caracteres; modo contains
sem filtro de UF tem teto absoluto de 2.000 leituras
(SEARCH_SCAN_CAP) para evitar varredura indiscriminada.
Município
Consulta read-only por código IBGE, listagem e typeaheadDescrição
Retorna o município pesquisado pelo código IBGE (campo
CC2_CODMUN, até 7 dígitos). Usa o índice 3 da CC2
(CC2_FILIAL+CC2_CODMUN) e respeita o whitelist de
CAMPOS_GET. O parâmetro opcional fields
reduz o conjunto retornado.
Path parameter
^\d{1,7}$. Tamanho efetivo validado contra TamSX3("CC2_CODMUN").Query parameters
CAMPOS_GET.Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsMunicipio/3550308 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsMunicipio/3550308?fields=CC2_MUN,CC2_EST,CC2_DDD Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Municipio }.fields fora da whitelist. Tier: validation-error.Descrição
Lista municípios com filtros opcionais por UF (est),
nome (mun, prefix) ou código ANP (codanp).
Estratégia de índice em ordem de prioridade:
codanp→ índice 5 (CC2_FILIAL+CC2_CODANP).est(+mun)→ índice 4 (CC2_FILIAL+CC2_EST+CC2_MUN).mun→ índice 2 (CC2_FILIAL+CC2_MUN).- Sem filtro → scan completo da filial (custoso, fallback intencional).
Page-out-of-range retorna 200 com data:[]
— não é erro. Ver convenções.
Query parameters
CAMPOS_GET.1, mínimo 1).50, máximo 500).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsMunicipio?est=SP&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsMunicipio?est=SP&mun=SAO&pageSize=20 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsMunicipio?codanp=3550308 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de Municipio), page, pageSize, count. Page-out-of-range retorna data:[], count:0.fields fora da whitelist ou parâmetro com tipo incompatível. Tier: validation-error.Descrição
Pesquisa dinâmica para componentes de autocomplete na UI.
Resposta enxuta fixa: [{ codmun, mun, est }] — sem
fields, sem paginação.
- Comparação normalizada (sem acento, case-insensitive) via
U_NoAcento. - Termo mínimo: 2 caracteres após
AllTrim. - Modo
containssem filtro de UF tem teto absoluto de 2.000 leituras (SEARCH_SCAN_CAP). - Com
est+match=prefixusa índice 4 (rápido); sem UF varre por nome (índice 2).
Query parameters
AllTrim.match=prefix, usa índice 4 (mais rápido).prefix.prefixcontains10, máx 25).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsMunicipio/_search?q=sao&est=SP&limit=10 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsMunicipio/_search?q=jose&match=contains&limit=15 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
q ausente ou < 2 caracteres, match fora do enum. Tier: validation-error.Schemas
Definições canônicas — campos com origemSX3 rastreável
GET /WsMunicipio/{codmun} e
GET /WsMunicipio. Campos efetivamente retornados dependem
de CAMPOS_GET e do filtro fields. Os 4 campos
listados como schema OAS são o subconjunto canônico documentado;
CAMPOS_GET no .prw expõe ainda
CC2_CAPITAL, CC2_DDD e CC2_REGIAO.
CAMPOS_GET.CC2_CAPITAL — retornado por CAMPOS_GET.CAMPOS_GET.data[] de
GET /WsMunicipio/_search. Representação enxuta fixa,
independente de fields ou CAMPOS_GET —
campos vêm sempre AllTrim-ed.
U_RestErro).
data pode conter o token interno da causa para tratamento
programático, quando aplicável.
false em erros.