PesquisaLotes
Inclusão, consulta e exclusão de lotes (tabela SD5) via
rotina automática MATA390. O identificador externo é
composto por D5_PRODUTO +
D5_LOTECTL, ambos vindos do path da URL.
PUT (alteração de validade) não é suportado
nesta versão — ver Convenções.
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 composto. Todas as rotas
de manutenção usam dois segmentos no path:
{produto} = D5_PRODUTO e
{lote} = D5_LOTECTL. Os tamanhos seguem o
TamSX3 do dicionário. Se enviados também no body, são
ignorados — o path sempre vence.
PUT (alteração) não é suportado. O TDN do
MATA390 menciona a possibilidade de alterar
D5_DTVALID pela rotina padrão, mas o exemplo formal de
ExecAuto só cobre op=3 (inclusão). A frente
será revisitada quando houver demanda real, com log do
AppServer capturando a rotina padrão em modo alteração
para parear via ExecAuto.
Exclusão restrita a lotes manuais. Lotes gerados
por movimentação de estoque (entrada, produção, etc) não podem ser
excluídos pelo MATA390 — o MsExecAuto
retorna falha e o endpoint responde 422 com a
mensagem propagada de aRet[2].
Formato de datas no payload.
D5_DATA e D5_DTVALID entram como string
no formato AAAAMMDD (8 dígitos, sem separadores). No
GET são serializados pela mesma representação compacta retornada
pelo dicionário SX3.
Paginação. /_list usa
page/pageSize (default 50,
máx 500). Não há cursor de delta-sync nesta versão; o
índice 1 do SD5 inclui D5_NUMSERI, o que torna scan
incremental por recno menos previsível — usar página direta.
Lote
CRUD por (D5_PRODUTO, D5_LOTECTL)Descrição
Retorna o lote pesquisado por D5_PRODUTO +
D5_LOTECTL. Aplica filtro de filial
(xFilial("SD5")) e respeita o whitelist de
CAMPOS_GET definido no .prw. O parâmetro
opcional fields reduz o conjunto de campos retornados.
Path parameters
TamSX3("D5_PRODUTO") (até 15).TamSX3("D5_LOTECTL") (até 10).Query parameter
CAMPOS_GET.Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsLote/LOTETEST01/_TEST_001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsLote/LOTETEST01/_TEST_001?fields=D5_PRODUTO,D5_LOTECTL,D5_QUANT,D5_DTVALID Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Lote }.TamSX3. Tier: validation-error.Descrição
Inclui um novo lote via MATA390 em modo
3 (inclusão). As chaves D5_PRODUTO e
D5_LOTECTL vêm do path; o body traz os
campos auxiliares do whitelist CAMPOS_ALLOW.
- Whitelist de campos: ver
LotePayload. - Produto precisa existir no
SB1comB1_RASTRO="L"; caso contrário, o próprioMATA390rejeita e devolvemos 422. - Se já existir um lote com o par
(produto, lote), o endpoint responde 409 antes de chamar oExecAuto.
Path parameters
Request body
CAMPOS_ALLOW. Schema completo em
LotePayload.
POST https://erpapi.jetme.com.br/api/99/01/WsLote/INCLUIR/LOTETEST01/_TEST_001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "D5_LOTEFOR": "TST001", "D5_LOCAL": "01", "D5_DOC": "000000001", "D5_SERIE": "UNI", "D5_DATA": "20260507", "D5_QUANT": 100, "D5_DTVALID": "20281231" }
Respostas
CrudResponse com data = { D5_PRODUTO, D5_LOTECTL }.MsExecAuto do MATA390 (produto sem rastro, local inválido, data fora do calendário etc). Tier: business-error.Descrição
Exclui o lote via MATA390 em modo 5.
Apenas lotes incluídos manualmente podem ser
excluídos — o MsExecAuto rejeita qualquer lote
gerado por movimentação de estoque, e a mensagem original do
lMsErroAuto é propagada no envelope de erro.
Path parameters
Chamada de exemplo
DELETE https://erpapi.jetme.com.br/api/99/01/WsLote/EXCLUIR/LOTETEST01/_TEST_001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse.MATA390. Tier: business-error.Listagem
Listagem paginada e typeaheadDescrição
Lista lotes com filtros por prod
(D5_PRODUTO prefix), loteq
(D5_LOTECTL prefix) e local
(D5_LOCAL exato). Quando prod é
informado, o seek usa esse prefixo no índice 1; sem ele,
varre a filial.
Query parameters
D5_PRODUTO (índice 1).D5_LOTECTL.CAMPOS_GET.1, mínimo 1).50, máx 500).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsLote/_list?prod=LOTETEST01&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsLote/_list?local=01&pageSize=100 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
fields com campo não whitelistado, pageSize > 500).Descrição
Busca rápida (typeahead) para autocomplete de UI. Retorna
uma lista enxuta (produto, lote,
local) — não devolve o schema completo de
Lote. Com prod informado, usa
prefixo do índice 1 e exige match exato no produto; sem
prod, faz scan da filial com contains em
D5_LOTECTL (cap interno de 2000 registros).
Query parameters
D5_LOTECTL. Mínimo 2 caracteres.D5_PRODUTO exato.10, máx 25).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsLote/_search?q=_TEST&prod=LOTETEST01&limit=10 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
success, count, data[] com produto/lote/local.q ausente ou < 2 caracteres.Schemas
Definições canônicas — campos com origemSX3 rastreável
/{produto}/{lote} e
/_list). Campos efetivamente retornados dependem de
CAMPOS_GET e do filtro fields.
AAAAMMDD).AllTrim).AAAAMMDD).POST. Whitelist definida em
CAMPOS_ALLOW no .prw.
D5_PRODUTO e D5_LOTECTL vêm do
path — se enviados no body são ignorados.
"01")."000000001").AAAAMMDD.cValToChar antes do MsExecAuto.AAAAMMDD.POST, data traz
{ D5_PRODUTO, D5_LOTECTL } (eco da chave composta
do path). Em DELETE, data é
string vazia.
true em respostas de sucesso.D5_PRODUTO/D5_LOTECTL). Em DELETE, string vazia.data pode conter o
token interno da causa (ex: mensagem do NomeAutoLog
propagada do MATA390) para tratamento programático,
quando aplicável.
false em erros.MsExecAuto).