SolicitacaoCompras
CRUD de Solicitação de Compras (tabela SC1) via rotina
automática MATA110. Tabela em modelo 2
— cabeçalho e itens convivem na mesma SC1
(não há SC2). O número C1_NUM é
gerado pelo servidor no POST via GetSXENum +
ConfirmSX8 e devolvido em data.numero.
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
Numeração automática. O C1_NUM é
gerado pelo servidor no POST via GetSXENum e devolvido
em data.numero. O path param {numero} do
POST /WsSC1/INCLUIR/{numero} é placeholder
ignorado — convencionalmente passa-se auto para deixar
a intenção explícita. Para todas as outras rotas, {numero}
é o C1_NUM real (6 chars).
Modelo 2 — cabeçalho e itens na mesma SC1. Não
existe SC2. O cabeçalho é representado pelo primeiro
registro encontrado via DbSeek(xFilial("SC1")+C1_NUM);
os itens repetem o C1_NUM variando C1_ITEM.
O GET retorna o envelope agrupado
{ cabecalho: {...}, itens: [...] }.
Forma do payload aCabec vs aItens.
Quirk do MATA110 documentado no TDN: aCabec usa pares
{campo, valor} sem o terceiro Nil;
aItens usa o 3-tuplo clássico
{campo, valor, Nil}. O wrapper
U_MT110Exc faz a montagem correta — o consumidor REST
só vê JSON.
Formato de datas. C1_EMISSAO e
C1_DATPRF aceitam string AAAAMMDD (8 dígitos,
sem hífen). Vazio em C1_EMISSAO assume
dDataBase do AppServer.
Paginação da listagem. /_list usa
page/pageSize (default 50,
máx 500) e retorna uma linha por
C1_NUM (capa). Para inspecionar os itens
de uma SC específica, use GET /WsSC1/{numero}.
DELETE é destrutivo. DELETE /WsSC1/EXCLUIR/{numero}
exclui a SC inteira (cabeçalho + todos os itens) via
MATA110 em modo 5. SC já aprovada
(C1_APROV diferente de em-branco/em-aprovação) ainda
não é validada nesta versão (pendência rev2 — ver README).
SolicitacaoCompras
CRUD por C1_NUMDescrição
Inclui uma nova SC via MATA110 em modo 3
(Inclusão). O C1_NUM é gerado pelo servidor
(GetSXENum("SC1","C1_NUM") + loop com DbSeek
até achar slot livre + ConfirmSX8) e devolvido em
data.numero. O path param {numero}
é placeholder ignorado — convenção é passar auto.
Path parameter
C1_NUM real é gerado pelo servidor. Convenção: passe auto.Request body
cabecalho (subconjunto de CAMPOS_CAB_ALLOW) e
itens[] (mínimo 1, cada item subconjunto de CAMPOS_ITEM_ALLOW).
Schema completo em SCPayload.
POST https://erpapi.jetme.com.br/api/99/01/WsSC1/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "C1_SOLICIT": "TESTE_REST" }, "itens": [ { "C1_PRODUTO": "PROD001", "C1_QUANT": 1 }, { "C1_PRODUTO": "PROD001", "C1_QUANT": 2.5 } ] }
POST https://erpapi.jetme.com.br/api/99/01/WsSC1/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "C1_SOLICIT": "Administrador", "C1_EMISSAO": "20260507", "C1_DATPRF": "20260514", "C1_OBS": "Solicitacao de teste via REST" }, "itens": [ { "C1_PRODUTO": "PROD001", "C1_QUANT": 10, "C1_LOCAL": "01", "C1_CC": "1010101", "C1_DATPRF": "20260514" }, { "C1_PRODUTO": "PROD002", "C1_QUANT": 5, "C1_LOCAL": "01", "C1_DESCRI": "Descricao complementar" } ] }
Respostas
CrudResponse com data.numero = C1_NUM gerado.itens vazio ou ausente, ou campo fora do whitelist. Tier: validation-error.SB1, ou MsExecAuto do MATA110 rejeitou (campo inválido, regras de negócio). Tier: business-error.GetSXENum, deserialização, etc).Descrição
Retorna a SC inteira a partir do C1_NUM. O cabeçalho
é montado a partir do primeiro registro encontrado via DbSeek;
os itens são iterados enquanto SC1->C1_NUM permanecer
igual ao número solicitado. Os campos retornados seguem
CAMPOS_CAB_GET e CAMPOS_ITEM_GET.
Path parameter
C1_NUM da SC (6 chars). Aceita string sem padding; o endpoint completa com espaços via PadR.Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSC1/000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
SCDetalhe com data: { cabecalho, itens[] }.numero vazio ou maior que o tamanho do campo. Tier: validation-error.C1_NUM informado. Tier: not-found.Descrição
Exclui a SC inteira (cabeçalho + todos os itens) via
MATA110 em modo 5. A operação carrega
aCabec = [ {"C1_NUM", numero} ] e
aItens = [] — o ExecAuto resolve a remoção do conjunto.
Sem validação de aprovação nesta versão. A
rejeição de SC já aprovada ainda não é tratada (próxima rev2
retornará 409). Hoje o MATA110 pode aceitar a
exclusão dependendo do estado de C1_APROV.
Path parameter
C1_NUM da SC a excluir (6 chars).Cenario
Exemplo da requisicao (cenario ativo)
DELETE https://erpapi.jetme.com.br/api/99/01/WsSC1/EXCLUIR/000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse com data vazio.numero vazio ou maior que o tamanho do campo. Tier: validation-error.MsExecAuto do MATA110 rejeitou (regras de negócio: itens em pedido, dependências). Tier: business-error.Listagem
Listagem paginada de cabeçalhosDescrição
Lista SCs em formato compacto — uma linha por C1_NUM
(capa). Suporta filtros por prefixo de número, solicitante e data
de emissão. Para inspecionar os itens de uma SC, use
GET /WsSC1/{numero}.
Query parameters
C1_NUM.C1_SOLICIT (igualdade, case-insensitive).AAAAMMDD.1, mínimo 1).50, máx 500).Cenarios
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSC1/_list?page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsSC1/_list?solicit=Administrador&emissao=20260507&pageSize=200 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data[] (capa com C1_NUM, C1_SOLICIT, C1_EMISSAO, ...), page, pageSize, count.pageSize > 500).Schemas
Definições canônicas — campos com origemSX3 rastreável
GET /WsSC1/{numero}. O campo
data agrupa cabeçalho e itens da SC.
true em respostas de sucesso.CAMPOS_CAB_GET (C1_NUM, C1_SOLICIT, C1_EMISSAO, C1_OBS, C1_FILENT, C1_DATPRF).CAMPOS_ITEM_GET (C1_ITEM, C1_PRODUTO, C1_QUANT, C1_LOCAL, C1_OBS, C1_DATPRF, C1_CC, C1_DESCRI, C1_UM).POST /WsSC1/INCLUIR/{numero}.
Cabeçalho com campos do whitelist CAMPOS_CAB_ALLOW e
array de itens (mínimo 1) com campos do whitelist
CAMPOS_ITEM_ALLOW. O C1_NUM é gerado pelo
servidor — não inclua no payload.
C1_SOLICIT, C1_EMISSAO, C1_OBS, C1_FILENT, C1_DATPRF.AAAAMMDD. Default = dDataBase.AAAAMMDD.SCItem.CAMPOS_ITEM_ALLOW. C1_PRODUTO
e C1_QUANT são obrigatórios; demais aceitam default do dicionário.
B1_COD); o produto precisa existir em SB1.B1_LOCPAD) quando ausente.AAAAMMDD.CTT_CUSTO).B1_UM do produto.data.numero traz
o C1_NUM gerado (POST) ou string vazia (DELETE).
true em respostas de sucesso."Solicitacao de Compras incluida com sucesso.").C1_NUM gerado (ex: "000001"). Em DELETE, vazio.data pode conter o token
interno da causa (ex: mensagem do NomeAutoLog do MATA110)
para tratamento programático, quando aplicável.
false em erros.MsExecAuto).Cenarios
Combinacoes documentadas (1 por example doopenapi.yaml)
C1_SOLICIT, um item com C1_PRODUTO + C1_QUANT. Demais campos assumem default do dicionario. Path {numero}=auto (placeholder; servidor gera C1_NUM via GetSXENum). Tier happy-path-minimal.C1_NUM; retorna envelope SCDetalhe com cabecalho + array de itens.C1_NUM (capa). Default 50, max 500.solicit, emissao AAAAMMDD); util para inbox por solicitante. Sem orderBy=recno nesta versao.Pendências conhecidas (rev4)
DELETE em SC aprovada nao e validado. Nesta versao, MATA110 op=5 pode aceitar a exclusao mesmo com C1_APROV preenchido. Proxima rev devera retornar 409 quando a SC ja passou por aprovacao.
Aprovacao via op=7 incompativel com SIGAGSP. Em ambientes com o modulo de Gestao de Aprovacao ativo, o MATA110 op=7 (aprovar) falha silenciosamente. Usar fluxo proprio do ADV0066 / SIGAGSP — endpoint REST de aprovacao nao esta implementado nesta versao.
PUT nao implementado. Alteracao de capa ou de item exige reabrir a SC; nesta versao o caminho suportado e DELETE + POST. Considerar PUT incremental em rev futura.
Sem _byid nem _search. Lookup por recno/msuid e typeahead nao estao implementados. Use _list com filtros.
Bloqueio SB1 nao validado. Cada C1_PRODUTO passa por DbSeek em SB1 (existencia), mas nao por U_C980Blq("SB1") — produto bloqueado pode entrar em SC. O MsExecAuto do MATA110 pode ou nao rejeitar dependendo de regras locais.
Sem delta-sync na listagem. _list nao expoe orderBy=recno/cursor/since nesta versao — paginacao apenas por page/pageSize.