ClasseValor
CRUD de Classe de Valor (tabela CTH) via MsExecAuto da
rotina CTBA060. A chave externa é CTH_CLVL — alfanumérico
de até 9 posições, fornecido pelo cliente no path da rota (não há
geração automática por GetSXENum). Datas no payload sempre em ISO
YYYY-MM-DD.
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).
Vinculação com o ERP
Convenções
Identificador externo. Todas as rotas
/WsClasseValor/{clvl} usam CTH_CLVL como chave —
alfanumérico de até 9 caracteres, fornecido pelo cliente.
Diferente de cadastros com numeração automática (SA1/SA2/SC7), aqui não há
GetSXENum: cabe ao chamador escolher o código. Após gravar, a
chave interna técnica (recno / msuid) pode ser
recuperada via /_byid.
Sintética vs Analítica. CTH_CLASSE distingue
o nível na hierarquia contábil — "1" = Sintética (totalizador,
aceita classes filhas em CTH_CLVLPA), "2" = Analítica
(folha, recebe lançamentos). Validação detalhada é responsabilidade do
MsExecAuto do CTBA060; este endpoint apenas repassa o
payload.
Natureza do saldo. CTH_NORMAL indica a
natureza esperada do saldo da classe — "D" = Débito,
"C" = Crédito. Veja a tabela de domínios no schema
ClasseValorPayload.
Datas de existência. CTH_DTEXIS e
CTH_DTEXSF trafegam como string ISO YYYY-MM-DD
(entrada e saída). Internamente o endpoint converte para Date
via sToD(StrTran(…,"-","")). Valor vazio ("")
limpa o campo. O CTBA060 aceita janelas amplas (ex.
1980-01-01 → 2029-12-31); janelas com
DTEXSF < DTEXIS ou cobertura nula da database são rejeitadas
com 422.
Paginação e delta-sync. /_list usa
page/pageSize (default 50, máx
500). Para sincronização incremental, alterne para
orderBy=recno e use since/cursor
conforme o nextCursor retornado. O parâmetro desc
aceita prefixo normalizado (sem acento, uppercase).
Bloqueio TOTVS. CTH_BLOQ existe como flag
de bloqueio editorial ("1" = Bloqueado, "2" =
Desbloqueado), mas não segue o par MSBLQL/MSBLQD
do padrão TOTVS-moderno — não há data de vigência nem caminho de
desbloqueio especial. O PUT aceita CTH_BLOQ como qualquer outro
campo do whitelist.
ClasseValor
CRUD por códigoCTH_CLVL
Descrição
Retorna a Classe de Valor pesquisada pelo código. Aplica filtro de
filial (xFilial("CTH")) e respeita o whitelist de
CAMPOS_GET definido no .prw. O parâmetro
opcional fields reduz o conjunto de campos retornados.
Path parameter
Query parameters
CAMPOS_GET.Cenarios
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTEST?fields=CTH_CLVL,CTH_DESC01,CTH_BLOQ Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: ClasseValor }.clvl vazio ou inválido. Tier: validation-error.Descrição
Inclui uma Classe de Valor via CTBA060 em modo
3 (MODEL_OPERATION_INSERT). A chave externa
CTH_CLVL vem do path — não há geração automática;
se já existir, o endpoint retorna 409.
- Whitelist de campos: ver
ClasseValorPayload. - Sem dependências de localização (diferente de SA1/CRMA980BRA).
Path parameter
Request body
CAMPOS_ALLOW. Schema completo em
ClasseValorPayload.
POST https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTH_DESC01": "CLASSE VALOR ZTEST", "CTH_CLASSE": "2", "CTH_NORMAL": "D", "CTH_BLOQ": "2", "CTH_DTEXIS": "1980-01-01", "CTH_DTEXSF": "2029-12-31", "CTH_CLVLPA": "" }
POST https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTESTPAI Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTH_DESC01": "CLASSE VALOR ZTEST PAI", "CTH_CLASSE": "1", "CTH_NORMAL": "D", "CTH_BLOQ": "2", "CTH_DTEXIS": "1980-01-01", "CTH_DTEXSF": "2029-12-31" }
Respostas
CrudResponse com data contendo a chave (CTH_CLVL).CTH_CLVL já existe. Tier: business-error.MsExecAuto do CTBA060 (campos fora do whitelist, enum inválido, janela de datas incoerente, classe pai inexistente). Tier: business-error.Descrição
Altera campos da Classe via CTBA060 em modo
4 (MODEL_OPERATION_UPDATE). Aceita qualquer
subconjunto do whitelist CAMPOS_ALLOW. Diferente do padrão
de bloqueio TOTVS-moderno (par MSBLQL/MSBLQD),
não há caminho de desbloqueio especial — CTH_BLOQ é apenas
mais um campo do payload.
Path parameter
Request body
PUT https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTH_DESC01": "CLASSE VALOR ZTEST ALTERADA", "CTH_BLOQ": "2" }
PUT https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTH_BLOQ": "1" }
PUT https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTH_DTEXSF": "2025-12-31" }
Respostas
CrudResponse.Descrição
Exclui a Classe de Valor via CTBA060 em modo 5
(MODEL_OPERATION_DELETE). O MsExecAuto rejeita
exclusão de classes referenciadas em lançamentos contábeis ou que tenham
classes filhas pendentes (CTH_CLVLPA apontando para esta).
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
DELETE https://erpapi.jetme.com.br/api/99/01/WsClasseValor/ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse.Descrição
Busca a classe por id técnico — útil para integrações que persistem
recno ou msuid e querem reconfirmar o registro
sem reusar o código alfanumérico.
Query parameters
recnomsuidtipo=recno, string quando tipo=msuid).CAMPOS_GET.Cenarios
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsClasseValor/_byid?tipo=recno&valor=1234 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsClasseValor/_byid?tipo=msuid&valor=9f7a3e2c4b8d1a0e Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: ClasseValor }.tipo/valor ausentes ou tipo fora do enum.msuid requer CTH_MSUID no dicionário (campo opcional).Listagem
Listagem paginada com filtros e delta-syncDescrição
Lista classes com filtros opcionais por cod (prefixo de
CTH_CLVL) ou desc (prefixo de
CTH_DESC01 normalizado, sem acento). Suporta dois modos:
orderBy=chave(default) — paginação porpage/pageSize; aceitasinceinline.orderBy=recno— delta-sync porcursor, retornanextCursor.
Query parameters
CTH_CLVL.CTH_DESC01 (uppercase, sem acento).CAMPOS_GET.1, mínimo 1).50, máx 500).chave.chaverecnoRecNo >= since em orderBy=chave.RecNo > cursor em orderBy=recno.Cenarios
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsClasseValor/_list?desc=RECEITA&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsClasseValor/_list?orderBy=recno&cursor=0&pageSize=200 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de ClasseValor), page, pageSize, count, opcionalmente nextCursor.orderBy inválido, pageSize > 500).Schemas
Definições canônicas — campos com origemSX3 rastreável
/{clvl}, /_list,
/_byid). Inclui chave externa (CTH_CLVL) e os
campos cadastrais do CTBA060. Campos efetivamente retornados dependem de
CAMPOS_GET e do filtro fields. Os identificadores
técnicos (recno/msuid/msuidt)
aparecem apenas quando o dicionário contém os campos opcionais
CTH_MSUID/CTH_MSUIDT.
"1" = Sintética (totalizador), "2" = Analítica (folha).12"D" = Débito, "C" = Crédito.DC"1" = Bloqueado, "2" = Desbloqueado.12YYYY-MM-DD).YYYY-MM-DD).CTH_MSUID existir no SX3).msuid.POST e PUT. Whitelist
definida em CAMPOS_ALLOW no .prw. Em
PUT, campos omitidos ficam inalterados. CTH_CLVL
não aparece aqui — vem sempre do path da URL.
"1") agrupa filhas; Analítica ("2") recebe lançamentos.12"D") ou Crédito ("C").DC"1"=Bloqueado, "2"=Desbloqueado. Não usa par MSBLQL/MSBLQD.12CTH existente; vazio = raiz.YYYY-MM-DD). Vazio limpa a data.YYYY-MM-DD). Deve ser >= CTH_DTEXIS.data traz a chave externa gravada (POST) ou um objeto
auxiliar / string vazia (PUT/DELETE).
true em respostas de sucesso.CTH_CLVL). Em PUT/DELETE pode ser string vazia ou objeto auxiliar.data pode conter o token interno
da causa (ex: mensagem do NomeAutoLog do CTBA060) para tratamento
programático, quando aplicável.
false em erros.MsExecAuto).Cenarios
Combinacoes documentadas (1 por example doopenapi.yaml)
CTH_CLVL. Resposta inclui o whitelist completo de CAMPOS_GET.CTH_CLASSE="2"): somente CTH_DESC01, CTH_CLASSE, CTH_BLOQ. Sem vigencia, sem hierarquia. Tier happy-path-minimal.CTH_DTEXIS/CTH_DTEXSF) e demais campos do whitelist. Espelha fixture canonica de smoke. Tier happy-path-realistic.CTH_DESC01; demais campos preservados.CTH_BLOQ; sem caminho privilegiado (CTH nao tem par MSBLQL/MSBLQD).CTH_DTEXSF) — caminho usual para encerrar classe antes da data original.CTBA060 op=5. Falha 422 se classe tiver lancamentos vinculados.recno da CTH — caminho recomendado e funcional.CTH_MSUID no SX3 desta base.page/pageSize em orderBy=chave. Combinavel com filtros cod/desc. Default 50, maximo 500.recno; cliente itera via nextCursor ate vazio.Pendências conhecidas (rev3)
GET _byid?tipo=msuid pode retornar 501. A tabela CTH desta base pode nao expor CTH_MSUID/CTH_MSUIDT no SX3 — o caminho msuid responde 501. Workaround: usar tipo=recno.
Bloqueio TOTVS-padrao nao implementado. O wrapper U_CT060Exc ainda nao chama U_C980Blq("CTH"); PUT em registro bloqueado nao e barrado por regra externa. Padrao MSBLQL/MSBLQD nao se aplica (campo unico CTH_BLOQ).
Sem _search. Nao ha endpoint de sugestao por similaridade. Cliente que precisa autocomplete usa /_list?desc=<prefixo> com pageSize=10.
Hierarquia CLVLPA nao validada. O campo CTH_CLVLPA (classe pai) e gravado como recebido; nao ha DbSeek para confirmar que o codigo existe no plano de classes.