ItemContabil
CRUD de item contábil (tabela CTD) via MsExecAuto
da rotina automática CTBA040. A chave natural é
CTD_ITEM (alfanumérico, fornecido pelo cliente no path,
até 9 caracteres) — esta tabela não usa GetSXENum. Datas
de vigência (CTD_DTEXIS/CTD_DTEXSF) trafegam
em ISO YYYY-MM-DD. O campo CTD_CCSUP é
aceito no payload (relacionamento livre com centro de custo superior).
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
Paths verb-based para CRUD mutável. Por herança do
padrão TOTVS para Item Contábil, as rotas de inclusão, alteração e
exclusão usam segmento verbal explícito:
/INCLUIR/{item}, /ALTERAR/{item},
/EXCLUIR/{item}. Já o GET segue REST puro
(/{item}, /_list, /_byid).
Persistência via MsExecAuto. Diferente
de endpoints com base em FwLoadModel, o WSCTD chama o
wrapper U_CT040Exc, que monta o array aCampos
e dispara CTBA040 sob MsExecAuto. Erros do
modelo viram 422 com a mensagem original do
NomeAutoLog repassada em data.
Bloqueio simples via CTD_BLOQ. Diferente
dos cadastros mestre/loja (SA1/SA2/SB1), esta tabela não usa o
par TOTVS-padrão MSBLQL/MSBLQD. O bloqueio é
um único campo: "1"=Bloqueado, "2"=Desbloqueado.
Não há "caminho de desbloqueio" privilegiado — qualquer PUT pode
alterar o flag junto com outros campos.
Formato de datas. CTD_DTEXIS e
CTD_DTEXSF no payload aceitam string ISO
YYYY-MM-DD; string vazia é equivalente a "sem data".
Conversão interna usa sToD(StrTran(…, "-", "")).
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.
ItemContabil
CRUD por código do item (CTD_ITEM)Descrição
Retorna a item contábil identificada por CTD_ITEM.
Aplica filtro de filial (xFilial("CTD")) e respeita o
whitelist de CAMPOS_GET definido no .prw.
O parâmetro opcional fields reduz o conjunto
retornado.
Path parameter
Query parameters
CAMPOS_GET.Cenarios
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsItemContabil/000ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsItemContabil/000ZTEST?fields=CTD_ITEM,CTD_DESC01,CTD_BLOQ Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: ItemContabil }.item vazio ou fields com campo fora do whitelist. Tier: validation-error.Descrição
Inclui nova item contábil via CTBA040 em modo
3 (MODEL_OPERATION_INSERT). A chave
CTD_ITEM é fornecida pelo cliente no path — esta
tabela não usa GetSXENum.
- Whitelist de campos: ver
ItemContabilPayload. - Antes do
MsExecAuto, fazDbSeekemCTDpara detectar conflito de chave (retorna 409).
Path parameter
Request body
CAMPOS_ALLOW. Schema completo em
ItemContabilPayload.
POST https://erpapi.jetme.com.br/api/99/01/WsItemContabil/INCLUIR/000ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTD_DESC01": "ITEM CONTABIL ZTEST", "CTD_CLASSE": "2", "CTD_NORMAL": "0", "CTD_BLOQ": "2", "CTD_DTEXIS": "2011-01-01", "CTD_DTEXSF": "2029-12-31", "CTD_CCSUP": "000000000" }
POST https://erpapi.jetme.com.br/api/99/01/WsItemContabil/INCLUIR/000ZTST2 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTD_DESC01": "ITEM CONTABIL VIGENCIA", "CTD_CLASSE": "2", "CTD_NORMAL": "2", "CTD_BLOQ": "2", "CTD_CCSUP": "000000000", "CTD_DTEXIS": "2026-01-01", "CTD_DTEXSF": "2026-12-31" }
Respostas
CrudResponse com data contendo o CTD_ITEM persistido.item vazio ou payload inválido (JSON malformado, campo fora do whitelist). Tier: validation-error.CTD_ITEM. Tier: business-error.CTBA040 rejeitou (enum inválido, classe analítica sem hierarquia consistente, datas inconsistentes). Tier: business-error.NomeAutoLog).Descrição
Altera campos do item via CTBA040 em modo
4 (MODEL_OPERATION_UPDATE). Aceita
qualquer subconjunto do whitelist CAMPOS_ALLOW; campos
ausentes preservam o valor atual.
Bloqueio. CTD_BLOQ pode ser
alterado livremente como qualquer outro campo — não há caminho
de desbloqueio privilegiado como em SA1/SA2 (esta tabela não usa
o par TOTVS MSBLQL/MSBLQD).
Path parameter
Request body
CTD_CCSUP.
PUT https://erpapi.jetme.com.br/api/99/01/WsItemContabil/ALTERAR/000ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTD_DESC01": "ITEM CONTABIL ZTEST ALTERADO", "CTD_BLOQ": "2" }
PUT https://erpapi.jetme.com.br/api/99/01/WsItemContabil/ALTERAR/000ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTD_BLOQ": "1" }
PUT https://erpapi.jetme.com.br/api/99/01/WsItemContabil/ALTERAR/000ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "CTD_DTEXSF": "2025-12-31", "CTD_BLOQ": "1" }
Respostas
CrudResponse.CTBA040 rejeitou (enum, datas, hierarquia). Tier: business-error.NomeAutoLog).Descrição
Exclui a item contábil via CTBA040 em modo
5 (MODEL_OPERATION_DELETE). O
CTBA040 rejeita exclusão quando o item tem
lançamentos contábeis vinculados ou é referenciado por outros
registros do plano (movimentos, rateios, classificadores).
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
DELETE https://erpapi.jetme.com.br/api/99/01/WsItemContabil/EXCLUIR/000ZTEST Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse.item ausente. Tier: validation-error.Descrição
Busca a conta por id técnico — útil para integrações que persistem
a chave interna (recno) ou o identificador universal
(msuid) e querem reconfirmar o registro sem reconstruir
o CTD_ITEM.
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/WsItemContabil/_byid?tipo=recno&valor=1234 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsItemContabil/_byid?tipo=msuid&valor=9f7a3e2c4b8d1a0e Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: ItemContabil }.tipo/valor ausentes ou tipo fora do enum.msuid requer CTD_MSUID no dicionário; ausente neste ambiente.Listagem
Listagem paginada e delta-syncDescrição
Lista itens com filtros por cod (prefixo de
CTD_ITEM) ou desc (prefixo de
CTD_DESC01 normalizado, sem acento). Suporta dois
modos de ordenação:
orderBy=chave(default) — paginação porpage/pageSize;sincefiltraRecNo >= sinceinline.orderBy=recno— delta-sync; usacursore devolvenextCursor.
Query parameters
CTD_ITEM.CTD_DESC01 normalizado (sem acento, uppercase).CAMPOS_GET.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/WsItemContabil/_list?cod=1&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsItemContabil/_list?orderBy=recno&cursor=0&pageSize=200 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de ItemContabil), orderBy, page, pageSize, count, opcionalmente nextCursor.orderBy inválido, pageSize > 500).Schemas
Definições canônicas — campos com origemSX3 rastreável
/{item},
/_list, /_byid). Campos efetivamente
retornados dependem de CAMPOS_GET e do filtro
fields.
"1"=Sintética, "2"=Analítica.12"0"=Nenhum, "1"=Receita, "2"=Despesa.012"1"=Bloqueado, "2"=Desbloqueado (sem par TOTVS MSBLQL/MSBLQD).12MS_UID (presente apenas se CTD_MSUID existir no dicionário).msuid.POST e PUT. Whitelist
definida em CAMPOS_ALLOW. CTD_CCSUP está
propositadamente fora — enviar provoca 500 no CTBA040
da build 240223P.
"1"=Sintética, "2"=Analítica.12"0"=Nenhum, "1"=Receita, "2"=Despesa.012"1"=Bloqueado, "2"=Desbloqueado. CTBA040 rejeita valores fora do domínio.12YYYY-MM-DD ou vazia.YYYY-MM-DD ou vazia.data
traz o CTD_ITEM persistido em POST e string vazia ou
objeto auxiliar em PUT/DELETE.
true em respostas de sucesso.CTD_ITEM persistido. Em PUT/DELETE pode ser string vazia.data pode conter o token
interno da causa (ex: mensagem do NomeAutoLog em falhas do
MsExecAuto) para tratamento programático.
false em erros.MsExecAuto).Cenarios
Combinacoes documentadas (1 por example doopenapi.yaml)
CTD_ITEM sem filtro de campos. Resposta traz o whitelist completo de CAMPOS_GET.CAMPOS_GET. Util em integracoes mobile/JIT.CTD_CLASSE="2") — somente CTD_DESC01, CTD_CLASSE, CTD_NORMAL, CTD_BLOQ. Sem vigencia, sem CCSUP. Tier happy-path-minimal.CTD_DTEXIS/CTD_DTEXSF) e CTD_CCSUP apontando para centro de custo superior. Espelha fixture canonica de smoke. Tier happy-path-realistic.CTD_DESC01. Demais campos preservam o valor atual via CTBA040 op=4.CTD_BLOQ de "2" (Desbloqueado) para "1" (Bloqueado). Sem caminho privilegiado: pode vir junto com outros campos no mesmo PUT (CTD nao tem par MSBLQL/MSBLQD).CTD_DTEXSF) — caminho usual para encerrar item antes da data original. Combinavel com CTD_BLOQ no mesmo payload.CTBA040 op=5. Falha com 422 se houver lancamento contabil vinculado ao item.recno da CTD — caminho recomendado e funcional nesta base.CTD_MSUID no SX3). Ver Pendencias.page/pageSize em orderBy=chave (default). Combinavel com filtros cod/desc. Tamanho default 50, maximo 500.recno: cliente envia cursor=<ultimo recno> e itera via nextCursor ate retorno vazio.Pendências conhecidas (rev3)
GET _byid?tipo=msuid retorna 501. A
tabela CTD nesta base nao expoe os campos tecnicos
CTD_MSUID/CTD_MSUIDT no SX3 — o caminho
msuid e respondido com 501 (Not Implemented) ate o dicionario ser
enriquecido. Workaround: usar tipo=recno.
Bloqueio TOTVS-padrao nao implementado. O wrapper
U_CT040Exc ainda nao chama U_C980Blq("CTD");
PUT em registro com CTD_BLOQ="1" nao e barrado por
regra externa — o proprio CTBA040 aplica suas validacoes
internas. Padrao MSBLQL/MSBLQD nao se aplica (campo unico
CTD_BLOQ).
Sem _search. Nao ha endpoint de
sugestao por similaridade. Cliente que precisa autocomplete usa
/_list?desc=<prefixo> com pageSize=10.
Ate haver demanda real, fica aberto.
Hierarquia CCSUP/CCLP/CCPON nao validada. Os
campos sao gravados como recebidos; nao ha DbSeek para
confirmar que o codigo apontado existe no plano. Erro de integracao
so aparece em rotinas downstream (lancamento contabil, rateio).