PreEstrutura
CRUD de pré-estrutura de produtos (tabela SGG) via rotina
automática PCPA135 do módulo SIGAPCP.
Identificador externo é GG_COD (código do produto pai); a
árvore de componentes é informada de forma plana — a treeview interna é
montada a partir do par GG_COD (pai) + GG_COMP
(filho). O workflow de aprovação (Aprovar / Rejeitar /
Criar Estrutura) não está exposto: a rotina automática
não cobre essas açõ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. Todas as rotas
/WsSGG/{codigo} usam GG_COD — código do
produto pai. O path param da operação de inclusão
(/WsSGG/INCLUIR/{codigo}) é apenas placeholder do
roteador WSRESTFUL (build 240223P exige {param} para
Self ser válido); o código realmente persistido vem de
cabecalho.GG_COD. Use "auto" ou repita o
GG_COD da capa.
Payload plano, árvore inferida. Os itens
(itens[]) são informados em formato plano. A
treeview multinível é montada internamente pelo PCPA135 a partir do par
GG_COD (pai) + GG_COMP (filho) — basta que
cada componente referencie corretamente seu pai. Não há nesting
recursivo no JSON.
PUT é delta. Cada item do array
itens[] em PUT aceita o atributo
_acao com três valores: incluir (default,
adiciona componente novo), alterar (gera
LINPOS + atualiza), excluir (gera
LINPOS + AUTDELETA="S"). Apenas os itens
informados são processados; o restante permanece intacto.
DELETE não é cascata. Op 5 apaga
apenas os componentes do GG_COD
informado. Sub-árvores (produtos intermediários filhos com
pré-estrutura própria) não são removidas — chamadas separadas para
cada nível. Use o GET para descobrir as sub-árvores
existentes antes de excluir.
Formato de datas. GG_INI e
GG_FIM usam string compacta AAAAMMDD
(8 dígitos sem separador), não ISO. Exemplo:
"20240101" para 01/01/2024.
Pré-estrutura é sandbox. Empenhos de OP, MRP e
relatórios de estrutura não consultam SGG. Para
produção, a pré-estrutura precisa ser promovida para SG1
via PCPA200 — fluxo externo a este endpoint. Pontos de
entrada (PEs) do antigo MATA202
(A202UNDO/A202BOK/MTA202) não
têm equivalente no PCPA135.
Paginação. /_list retorna 1 linha
por GG_COD pai. Use page/pageSize
(default 50, máx 500). Filtros opcionais:
cod (prefixo) e status (código de
GG_STATUS).
Pré-Estrutura
CRUD via PCPA135 / SGGDescrição
Retorna a pré-estrutura completa do produto pai informado em
{codigo} — cabeçalho (GG_COD,
GG_QUANT, GG_STATUS) e array
itens[] com todos os componentes. Aplica filtro de
filial (xFilial("SGG")) e respeita o whitelist
de CAMPOS_CAB_GET / CAMPOS_ITEM_GET
definidos no .prw.
Path parameter
GG_COD — código do produto pai (whitespace é trimado).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsSGG/Z_TEST_PA Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{codigo} ausente ou vazio. Tier: validation-error.GG_COD informado. Tier: not-found.Descrição
Cria a pré-estrutura para o produto pai informado em
cabecalho.GG_COD via PCPA135 em
Op=3. O array itens deve conter
todos os componentes em todos os níveis — a
treeview é montada internamente a partir do par
GG_COD (pai) + GG_COMP (filho), então
componentes de produtos intermediários (PIs) entram no mesmo
array, com GG_COD apontando para o PI ao qual
pertencem.
Path parameter
{param} para Self ser válido). Use "auto" ou repita o GG_COD da capa.Request body
cabecalho (capa do produto pai) e
itens[] (todos os componentes, mínimo 1). Schema
em PreEstruturaInclusao.
POST https://erpapi.jetme.com.br/api/99/01/WsSGG/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "GG_COD": "Z_TEST_PA", "GG_QUANT": 1 }, "itens": [ { "GG_COD": "Z_TEST_PA", "GG_COMP": "Z_TEST_MP1", "GG_TRT": "", "GG_QUANT": 2, "GG_PERDA": 0, "GG_INI": "20240101", "GG_FIM": "20491231" }, { "GG_COD": "Z_TEST_PA", "GG_COMP": "Z_TEST_MP2", "GG_TRT": "", "GG_QUANT": 1, "GG_PERDA": 0, "GG_INI": "20240101", "GG_FIM": "20491231" } ] }
POST https://erpapi.jetme.com.br/api/99/01/WsSGG/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "GG_COD": "PA001", "GG_QUANT": 1 }, "itens": [ { "GG_COD": "PA001", "GG_COMP": "PI001", "GG_QUANT": 1, "GG_INI": "20240101", "GG_FIM": "20491231" }, { "GG_COD": "PA001", "GG_COMP": "MP001", "GG_QUANT": 2, "GG_INI": "20240101", "GG_FIM": "20491231" }, { "GG_COD": "PI001", "GG_COMP": "MP002", "GG_QUANT": 1, "GG_INI": "20240101", "GG_FIM": "20491231" } ] }
Respostas
cabecalho.GG_COD ausente, itens vazio). Tier: validation-error.SB1, pré-estrutura já existe para o GG_COD, ou MsExecAuto do PCPA135 rejeitou (log via NomeAutoLog). Tier: business-error.Descrição
Operação delta: apenas os itens informados são
processados. Cada item aceita o atributo opcional _acao:
incluir(default) — adiciona componente novo;alterar— altera componente existente (geraLINPOS);excluir— remove componente existente (geraLINPOS+AUTDELETA="S").
Pré-requisito de estado. Se a pré-estrutura
não estiver em GG_STATUS "Em criação", o PCPA135
rejeita silenciosamente; o endpoint converte em 422
com o log do NomeAutoLog(). Estados Submetida /
Aprovada / Rejeitada / Estrutura criada são bloqueados.
Consistência de LINPOS. Os valores
GG_COD / GG_COMP / GG_TRT
em alterar / excluir precisam casar
exatamente com os do registro original — divergência falha
silenciosamente.
Path parameter
GG_COD do produto pai cuja pré-estrutura será alterada.Request body
cabecalho (referência ao pai) + itens[]
contendo apenas os componentes a processar, com
_acao opcional por item. Schema em
PreEstruturaAlteracao.
PUT https://erpapi.jetme.com.br/api/99/01/WsSGG/ALTERAR/Z_TEST_PA Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "GG_COD": "Z_TEST_PA" }, "itens": [ { "GG_COD": "Z_TEST_PA", "GG_COMP": "Z_TEST_MP1", "GG_TRT": "", "GG_QUANT": 5, "GG_PERDA": 1, "GG_INI": "20240120", "GG_FIM": "20491231", "_acao": "alterar" }, { "GG_COD": "Z_TEST_PA", "GG_COMP": "Z_TEST_MP2", "GG_TRT": "", "_acao": "excluir" }, { "GG_COD": "Z_TEST_PA", "GG_COMP": "Z_TEST_MP3", "GG_TRT": "", "GG_QUANT": 3, "GG_PERDA": 0, "GG_INI": "20240120", "GG_FIM": "20491231" } ] }
PUT https://erpapi.jetme.com.br/api/99/01/WsSGG/ALTERAR/Z_TEST_PA Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "GG_COD": "Z_TEST_PA" }, "itens": [ { "GG_COD": "Z_TEST_PA", "GG_COMP": "Z_TEST_MP4", "GG_QUANT": 1, "GG_INI": "20240120", "GG_FIM": "20491231" } ] }
Respostas
RespostaSucesso.{codigo} ausente, itens vazio. Tier: validation-error.GG_COD informado. Tier: not-found.GG_STATUS não-editável (Submetida/Aprovada/etc.), LINPOS inconsistente, ou MsExecAuto do PCPA135 rejeitou. Tier: business-error.Descrição
Exclui todos os componentes do produto pai
informado em {codigo} via PCPA135 em
Op=5. Não é cascata — sub-árvores
(PIs filhos com pré-estrutura própria) precisam ser excluídas em
chamadas separadas. Use o GET para descobrir o que
existe antes de excluir.
Path parameter
GG_COD do produto pai.Chamada de exemplo
DELETE https://erpapi.jetme.com.br/api/99/01/WsSGG/EXCLUIR/Z_TEST_PA Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
success/message/data.{codigo} ausente. Tier: validation-error.GG_STATUS bloqueia a exclusão ou MsExecAuto rejeitou. Tier: business-error.Listagem
Listagem paginada (1 linha por GG_COD pai)Descrição
Retorna uma linha por GG_COD pai — apenas os
cabeçalhos, sem expandir o array de componentes. Para descer ao
nível dos itens, use GET /WsSGG/{codigo}. Suporta
filtro de prefixo por cod e filtro exato por
status (código de GG_STATUS).
Query parameters
GG_COD (busca por início).GG_STATUS (combobox SX3).123451, mínimo 1).50, máx 500).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsSGG/_list?cod=Z_TEST&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsSGG/_list?status=1&pageSize=100 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
pageSize > 500, page < 1).Schemas
Definições canônicas — campos com origemSX3 rastreável
POST,
GG_COD identifica o produto pai e
GG_QUANT a quantidade-base; em PUT, a
capa funciona como referência.
SB1).GG_COD (pai) + GG_COMP (filho) determina
a posição na árvore — produtos intermediários aparecem como
componentes de seu pai e como pai de seus próprios componentes.
Em PUT, o atributo _acao direciona a
operação delta.
SB1.AAAAMMDD).AAAAMMDD).F) ou variável (V) em função da quantidade do pai.FVPUT: incluir (default), alterar, excluir.incluiralterarexcluirPOST. Contém capa + todos os itens da
árvore, em formato plano. Mínimo 1 item.
Cabecalho.minItems: 1.PUT (delta). Mesma estrutura de
PreEstruturaInclusao; apenas os itens informados são
processados, e cada item pode trazer _acao.
GG_QUANT pode ser omitido._acao por item. minItems: 1.GET /WsSGG/{codigo}.
data.cabecalho traz a capa (com
GG_STATUS) e data.itens[] os componentes.
true em sucesso.GG_COD, GG_QUANT e GG_STATUS (combobox SX3).GG_COD informado.GET /WsSGG/_list. Cada linha
de data[] corresponde a um GG_COD pai
(cabeçalho, sem componentes).
true em sucesso.GG_COD, GG_QUANT e GG_STATUS.POST e PUT.
data.codigo traz o GG_COD persistido.
true em sucesso.GG_COD da pré-estrutura criada/alterada.message traz o conteúdo de NomeAutoLog()
quando disponível.
false em erros.MsExecAuto.