OrdemProducao
CRUD de Ordem de Produção (tabela SC2) via rotina
automática MATA650 (MsExecAuto). Substitui a
User Function legada U_GAIZ650 no padrão WSSE2 rev1 /
WSSF1 rev1. Identificador externo é a chave composta natural
da SC2 — filial-num-item-sequen (4 partes).
No POST sem {chave}, o servidor gera
C2_NUM via GetSXENum (avança SX8 em caso
de gap).
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 SC2 não tem chave externa
simples — usa-se a chave composta natural
<filial>-<num>-<item>-<sequen> (4
partes, separadas por hífen). Exemplo: 01-000123-01-001.
Defaults para item/sequen: "01"
e "001". Para buscar por chave interna, use
/_byid?tipo=recno|msuid&valor=….
Numeração automática vs forçada. Em
POST /WsOrdemProducao/INCLUIR (sem {chave}), o
servidor gera C2_NUM via GetSXENum e avança
o SX8 enquanto encontrar gap. Em
POST /WsOrdemProducao/INCLUIR/{chave}, o cliente força
o num — colisão devolve 409.
Path vence body. Quando a chave aparece tanto no
{chave} da URL quanto no body, o path sempre vence.
Campos de chave no body (filial, num,
item, sequen) ficam então ignorados —
servem só como atalho quando não há {chave} na URL.
Pré-checks de cadastro. Antes do
MsExecAuto, o endpoint valida que C2_PRODUTO
existe na SB1 e que C2_DATPRI está no
formato YYYYMMDD. Falha resulta em 422
com mensagem explícita, sem chamar MATA650 (poupa
NomeAutoLog e ruído no console).
Datas em YYYYMMDD. Os campos
C2_DATPRI, C2_DATPRF, C2_DATRF,
C2_EMISSAO aceitam apenas 8 dígitos
(sem hífen, sem barra). O endpoint converte para Date
AdvPL via sToD() antes de passar ao MATA650.
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.
DELETE sem cascata. O wrapper U_MT650Exc
força MV_PAR10=2 no Pergunte("MTA650") —
OPs filhas (geradas por AUTEXPLODE) não
são excluídas em cascata. Para excluir filhas, chamar
DELETE em cada uma explicitamente. Decisão deliberada
para preservar idempotência do endpoint.
OrdemProducao
CRUD por chave compostafilial-num-item-sequen
num via GetSXENum
Descrição
Inclui uma OP nova via MATA650 em modo
3 (insert). O servidor gera C2_NUM
via GetSXENum("SC2","C2_NUM") e avança o SX8
enquanto encontrar gap (DbSeek em
filial+num+item+sequen).
Em erro do MsExecAuto, RollBackSX8
devolve o número ao pool.
Request body
POST https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/INCLUIR Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "C2_PRODUTO": "TST_OP_650", "C2_QUANT": 10, "C2_DATPRI": "20991231" }
POST https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/INCLUIR Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "filial": "01", "item": "01", "sequen": "001", "C2_PRODUTO": "TST_OP_650", "C2_QUANT": 10, "C2_DATPRI": "20991231", "C2_DATPRF": "20991231", "C2_OBS": "TESTE_REST OP MATA650" }
Respostas
CrudResponse com data = OPRef contendo a chave gerada (filial/num/item/sequen) + ids técnicos. auto=true sinaliza que num veio do GetSXENum.SB1, data fora do formato YYYYMMDD) ou MsExecAuto rejeitou. Tier: business-error.num forçado pelo cliente
Descrição
Inclui uma OP nova com C2_NUM determinado pelo
cliente. Útil para idempotência em retentativas (mesmo
{chave} ⇒ mesma OP). Não
avança o SX8.
Colisão (chave já existente) retorna 409.
Path parameter
<filial>-<num>-<item>-<sequen> separada por hífen. Pattern: ^[^-]+-[^-]+-[^-]+-[^-]+$.Request body
{chave}. Quando a chave
vem no path, os campos filial/num/item/sequen
do body são ignorados.
POST https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/INCLUIR/01-999998-01-001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "C2_PRODUTO": "TST_OP_650", "C2_QUANT": 10, "C2_DATPRI": "20991231", "C2_DATPRF": "20991231", "C2_OBS": "TESTE_REST OP MATA650" }
Respostas
{chave} fora do pattern de 4 partes. Tier: validation-error.MsExecAuto rejeitou.Descrição
Retorna o cabeçalho da OP identificada pela chave composta.
Aplica filtro de filial e respeita o whitelist CAMPOS_GET
do .prw. Não retorna itens da estrutura (SD4) —
apenas o cabeçalho da SC2.
Path parameter
^[^-]+-[^-]+-[^-]+-[^-]+$.Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/01-000123-01-001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: OP }.Descrição
Altera campos do cabeçalho da OP via MATA650
em modo 4 (update). Aceita qualquer subconjunto
do whitelist CAMPOS_ALLOW.
Campos de chave (filial, num,
item, sequen) são imutáveis no PUT —
vêm sempre do {chave} da URL. O MATA650
rejeita alteração de OPs já apontadas (com
C2_QUJE > 0) em campos críticos.
Path parameter
Request body
CAMPOS_ALLOW. Campos de
chave no body são silenciosamente descartados.
PUT https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/ALTERAR/01-000123-01-001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "C2_PRODUTO": "TST_OP_650", "C2_QUANT": 25, "C2_DATPRI": "20991231", "C2_DATPRF": "20991231", "C2_OBS": "TESTE_REST OP MATA650 ALTERADO" }
Respostas
CrudResponse com OPRef da chave.MsExecAuto rejeitou (OP apontada, campo bloqueado, enum inválido). Tier: business-error.Descrição
Exclui a OP via MATA650 em modo 5.
O wrapper U_MT650Exc força MV_PAR10=2
no Pergunte("MTA650") — OPs filhas (geradas por
AUTEXPLODE) não caem em cascata.
MATA650 rejeita exclusão de OP com apontamento
(C2_QUJE > 0) ou com requisições/empenhos
vinculados na SD4.
Path parameter
Chamada de exemplo
DELETE https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/EXCLUIR/01-000123-01-001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse.Descrição
Busca a OP por id técnico — útil para integrações que
persistem o recno ou msuid e querem
reconfirmar o registro sem reconstruir a chave composta. O modo
msuid exige C2_MSUID presente no
dicionário (depende de UPDDISTR do MVC).
Query parameters
recnomsuidtipo=recno, string quando tipo=msuid).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/_byid?tipo=recno&valor=12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/_byid?tipo=msuid&valor=9f7a3e2c4b8d1a0e Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: OP }.tipo/valor ausentes ou tipo fora do enum.msuid requer C2_MSUID no dicionário (ambiente sem UPDDISTR de MVC).Listagem
Listagem paginada por filtros + delta-syncDescrição
Lista OPs por filtros (filial, num,
produto). Suporta dois modos:
orderBy=chave(default) — paginação porpage/pageSize, ordem por chave de negócio (filial+num+item+sequen).orderBy=recno— delta-sync keyset, usasince/cursorcomnextCursorretornado.
Query parameters
1, mínimo 1).50, máx 500).CAMPOS_GET.chave.chaverecnoorderBy=recno).nextCursor de página anterior.Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/_list?produto=TST_OP_650&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsOrdemProducao/_list?orderBy=recno&since=0&pageSize=200 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de OP), page, pageSize, count, orderBy, opcionalmente nextCursor.orderBy inválido, pageSize > 500).Schemas
Definições canônicas — campos com origemSX3 rastreável
/{chave}, /_list,
/_byid). Inclui chave composta, dados do cabeçalho e ids técnicos.
Campos efetivamente retornados dependem de CAMPOS_GET e do
filtro fields.
GetSXENum quando não forçado)."01")."001").B1_LOCPAD do produto.B1_UM).YYYYMMDD).YYYYMMDD).YYYYMMDD).YYYYMMDD).F=Firme, P=Prevista.FPS/N).SNC2_MSUID (presente se o dicionário expõe o campo).C2_MSUIDT.POST e PUT. Chave
(filial/num/item/sequen)
pode vir no path ({chave}) ou no body — path sempre vence.
Defaults: item="01", sequen="001".
Obrigatórios: C2_PRODUTO, C2_QUANT, C2_DATPRI.
xFilial("SC2") corrente.{chave} (servidor gera)."01"."001".SB1.B1_LOCPAD do produto.> 0.B1_UM se vazio.^\d{8}$ (YYYYMMDD).YYYYMMDD).YYYYMMDD).YYYYMMDD). Default = data-base.F=Firme, P=Prevista.FPSN"S" explode estrutura (gera OPs filhas a partir da SG1).SNdata de
respostas de CrudResponse. Contém a chave composta
decomposta + ids técnicos + flag auto.
C2_FILIAL).true quando C2_NUM foi gerado pelo servidor via GetSXENum; false quando forçado pelo cliente.C2_MSUID quando disponível.C2_MSUIDT quando disponível.recno sempre
presente; msuid/msuidt aparecem apenas
quando o dicionário tem os campos C2_MSUID/C2_MSUIDT
(depende de UPDDISTR do MVC). Composto via
allOf em OP e OPRef.
null).data traz
um OPRef com a chave composta
decomposta e ids técnicos.
true em respostas de sucesso.data pode conter o
token interno da causa (ex: mensagem do NomeAutoLog)
para tratamento programático.
false em erros.MsExecAuto do MATA650).