ContratoParceria
CRUD de Contrato de Parceria (tabela SC3) via rotina automática
MATA125. Modelo 2 da TOTVS: o cabeçalho e os itens
convivem na mesma tabela — cada linha do SC3 compartilha
C3_NUM e diferencia-se por C3_ITEM. O número do contrato
(C3_NUM) é gerado pelo Protheus no POST via
GetSXENum + loop ConfirmSX8; no path use
auto como placeholder.
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. O contrato é identificado por
C3_NUM (gerado pelo Protheus). No POST, o path param
{numero} deve ser auto — qualquer string é aceita,
mas o número efetivo só é conhecido após a inclusão e vem em
data.numero. Em PUT/DELETE/GET, {numero} é o
C3_NUM retornado anteriormente.
Modelo 2 (capa+itens na mesma tabela). Cada item é uma
linha do SC3 com o mesmo C3_NUM e
C3_ITEM distinto (sequencial, padding com StrZero
no tamanho de C3_ITEM). O GET /_list deduplica
por C3_NUM (1 linha por contrato); o GET /{numero}
devolve { cabecalho, itens[] }.
Semântica delta no PUT. Cada elemento de
itens[] se enquadra em um dos três casos:
(a) alterar item existente — informar LINPOS com o
C3_ITEM alvo + campos a alterar;
(b) excluir item — LINPOS + AUTDELETA: "S";
(c) item novo — sem LINPOS, numerado pelo
servidor como Max(C3_ITEM) + 1. Pelo menos 1 item é
obrigatório no PUT.
Chave externa congelada no PUT. Alterar
C3_FORNECE / C3_LOJA no cabeçalho via PUT
não é suportado — esses campos são reaproveitados do
registro posicionado para preservar consistência da rotina automática
MATA125.
Formato de datas. C3_EMISSAO,
C3_DATPRI e C3_DATPRF aceitam string
AAAAMMDD no payload (ex: "20260507"). A
conversão interna usa SToD(...). Ausência de
C3_EMISSAO no POST cai no default dDataBase.
Paginação. /_list usa
page/pageSize (default 50, máx
500). Filtros suportados: num (prefix de
C3_NUM), fornece, loja,
emissao (AAAAMMDD exato).
ContratoParceria
Operações sobre Contrato de Parceria (SC3)Descrição
Cria um novo Contrato de Parceria via MATA125 em
modo 3 (inclusão). O C3_NUM é gerado pelo
Protheus (GetSXENum + loop ConfirmSX8) — o
cliente envia apenas o cabeçalho e os itens. O path param
{numero} deve ser auto (placeholder).
- Fornecedor (
C3_FORNECE+C3_LOJA) validado emSA2antes de tocarMsExecAuto. - Cada item exige
C3_PRODUTOexistente emSB1eC3_QUANTpresente. - Cabeçalho aceita whitelist
CAMPOS_CAB_ALLOW; itens,CAMPOS_ITEM_ALLOW.
Path parameter
auto — o número efetivo é gerado pelo servidor e devolvido em data.numero.Request body
POST https://erpapi.jetme.com.br/api/99/01/WsSC3/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "C3_FORNECE": "000001", "C3_LOJA": "01", "C3_COND": "001", "C3_MOEDA": "1" }, "itens": [ { "C3_PRODUTO": "01", "C3_QUANT": 2, "C3_PRECO": 135, "C3_TOTAL": 270 } ] }
POST https://erpapi.jetme.com.br/api/99/01/WsSC3/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "C3_FORNECE": "000001", "C3_LOJA": "01", "C3_COND": "001", "C3_MOEDA": "1", "C3_EMISSAO": "20260507", "C3_OBS": "Contrato anual rev1", "C3_CONTATO": "FULANO COMPRAS" }, "itens": [ { "C3_PRODUTO": "01", "C3_QUANT": 2, "C3_PRECO": 135, "C3_TOTAL": 270, "C3_DATPRI": "20260507", "C3_DATPRF": "20260607" }, { "C3_PRODUTO": "02", "C3_QUANT": 5, "C3_PRECO": 42, "C3_TOTAL": 210 } ] }
Respostas
cabecalho ou itens ausente. Tier: validation-error.SA2, produto fora do SB1, condição inválida, ou rejeição do MsExecAuto do MATA125. Tier: business-error.GetSXENum, exceção no MATA125, etc).Descrição
Altera campos do cabeçalho e/ou itens do contrato via
MATA125 em modo 4. A semântica é
delta: o array itens declara as
operações a aplicar, não o estado final desejado.
LINPOS="C3_ITEM"existente → posiciona para alteração ou exclusão.AUTDELETA="S"exclui;"N"mantém (default).- Item sem
LINPOS→ cria nova linha (numerada após o últimoC3_ITEMexistente). - Pelo menos 1 item é obrigatório (o array não pode estar vazio).
C3_FORNECE/C3_LOJAno cabeçalho são ignorados — reaproveitados do registro posicionado.
Path parameter
C3_NUM do contrato a alterar.Request body
PutBody.
PUT https://erpapi.jetme.com.br/api/99/01/WsSC3/ALTERAR/000000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "C3_COND": "002" }, "itens": [ { "LINPOS": "0001", "AUTDELETA": "N", "C3_QUANT": 5 }, { "LINPOS": "0002", "AUTDELETA": "S" }, { "C3_PRODUTO": "07", "C3_QUANT": 1, "C3_PRECO": 50, "C3_TOTAL": 50 } ] }
PUT https://erpapi.jetme.com.br/api/99/01/WsSC3/ALTERAR/000000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "C3_OBS": "Observacao atualizada", "C3_CONTATO": "NOVO CONTATO" }, "itens": [ { "LINPOS": "0001", "AUTDELETA": "N" } ] }
PUT https://erpapi.jetme.com.br/api/99/01/WsSC3/ALTERAR/000000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "itens": [ { "LINPOS": "0002", "AUTDELETA": "S" } ] }
PUT https://erpapi.jetme.com.br/api/99/01/WsSC3/ALTERAR/000000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "itens": [ { "C3_PRODUTO": "07", "C3_QUANT": 1, "C3_PRECO": 50, "C3_TOTAL": 50 } ] }
Respostas
RespOk com data.numero.itens vazio. Tier: validation-error.C3_NUM informado não localizado. Tier: not-found.C3_PRODUTO ausente/inexistente em SB1, ou rejeição do MsExecAuto do MATA125 (campos fora do whitelist, datas inválidas, etc). Tier: business-error.Descrição
Exclui o contrato inteiro (cabeçalho + todos os itens) via
MATA125 em modo 5. O endpoint monta um
aCabec mínimo com C3_FILIAL +
C3_NUM + C3_FORNECE/C3_LOJA
lidos do registro posicionado.
Path parameter
C3_NUM do contrato a excluir.Chamada de exemplo
DELETE https://erpapi.jetme.com.br/api/99/01/WsSC3/EXCLUIR/000000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
RespOk.C3_NUM. Tier: validation-error.MsExecAuto — contrato pode ter dependências em outras tabelas (pedidos vinculados, integridade referencial). Tier: business-error.Descrição
Retorna o contrato pesquisado por C3_NUM, montando
{ cabecalho, itens[] }. O cabeçalho vem do primeiro
registro encontrado e o array de itens enumera todas as linhas com
o mesmo C3_NUM e C3_FILIAL coincidente.
Whitelist CAMPOS_CAB_GET e CAMPOS_ITEM_GET
controlam os campos retornados.
Path parameter
C3_NUM do contrato. Para listagem, use /_list.Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsSC3/000000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
RespByNum com data: { cabecalho, itens[] }.C3_NUM. Tier: validation-error.Listagem
Listagem paginada (1 linha por contrato)Descrição
Lista contratos com filtros opcionais por num (prefix
de C3_NUM), fornece (C3_FORNECE
exato), loja (C3_LOJA exato), emissao
(C3_EMISSAO em formato AAAAMMDD).
O retorno é deduplicado por C3_NUM — cada contrato
aparece em uma única linha mesmo que tenha múltiplos itens em
SC3.
Query parameters
C3_NUM (usa DbSeek(...,.T.)).C3_FORNECE.C3_LOJA.AAAAMMDD (ex: 20260507).1, mínimo 1).50, máx 500).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsSC3/_list?page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsSC3/_list?fornece=000001&loja=01&emissao=20260507 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
Schemas
Definições canônicas — campos com origemSX3 rastreável
CAMPOS_CAB_ALLOW): apenas os listados abaixo entram
em aCabec do MsExecAuto.
SA2.A2_COD). Validado em SA2 via DbSeek.SA2.A2_LOJA), tipicamente "01".SE4.E4_CODIGO)."1" = Real (default usual).AAAAMMDD (ex: "20260507"). Default dDataBase quando omitido no POST.SC3 com o mesmo
C3_NUM). Whitelist CAMPOS_ITEM_ALLOW
aceita no payload de POST/PUT.
SB1.B1_COD). Validado em SB1 via DbSeek.C3_QUANT × C3_PRECO, calculado pelo cliente).AAAAMMDD).AAAAMMDD).StrZero no tamanho de C3_ITEM). Gerado pelo servidor; não é aceito no payload (use LINPOS).Item e adiciona dois
campos de controle (LINPOS e AUTDELETA)
que orquestram o delta.
C3_ITEM de um item existente. Presente → o item é posicionado para alteração/exclusão. Ausente → o item é tratado como linha nova."S" exclui o item posicionado por LINPOS; "N" mantém. Em item novo, é forçado para "N" internamente.SNcabecalho é opcional;
itens obrigatório com pelo menos 1 elemento (cada um
é um ItemDelta).
C3_FORNECE/C3_LOJA enviados aqui são descartados (chave externa congelada)./WsSC3/{numero}. data
encapsula cabecalho + itens[] reconstruídos
a partir das linhas do SC3.
true em respostas de sucesso.CAMPOS_CAB_GET.CAMPOS_ITEM_GET./_list. Cada elemento de
data representa um contrato (deduplicado por
C3_NUM).
true.500).AAAAMMDD).RespCriado) data.numero traz o
C3_NUM gerado; em PUT, data.numero ecoa o
C3_NUM alterado; em DELETE, data fica vazio.
true em respostas de sucesso.C3_NUM envolvido na operação (gerado no POST, ecoado no PUT, ausente no DELETE).data pode conter
detalhe técnico da rejeição (mensagem do NomeAutoLog
do MsExecAuto, etc).
false em erros.