Banco
CRUD do Cadastro de Bancos (tabela SA6) via rotina
automática MATA070 (MsExecAuto). Padrão WSSE2 rev3 /
WSSA2 rev28: single-record por request, payload plano, _list com
delta-sync (cursor keyset), _byid?tipo=recno|msuid, _search
por nome reduzido (typeahead). O identificador externo é a chave composta
natural da SA6 com 3 partes: cod-agencia-conta.
A6_COD é informado pelo cliente — bancos são cadastro curado, não
há GetSXENum.
MSBLQL/MSBLQD; bancos não têm fluxo de bloqueio administrativo. O DELETE só falha quando há saldo em SE5 ou títulos vinculados — neste caso, MATA070 devolve 422 com a mensagem do MSExecAuto.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
Identificador externo — chave composta. A chave é um único
parâmetro {chave} com 3 partes separadas por hífen:
cod-agencia-conta. Exemplo:
001-12345-0000012345. Pattern:
^[^-]+-[^-]+-[^-]+$. No POST a chave vem exclusivamente no path
(não é gerada pelo servidor); no PUT/DELETE/GET, o path posiciona a SA6.
Whitelist por operação. POST aceita 17 campos cadastrais
(BancoPayload); PUT aceita apenas 8 campos editáveis:
A6_NREDUZ, A6_NOME, A6_END,
A6_CIDADE, A6_EST, A6_CEP,
A6_DV_AGE, A6_DVCTA (BancoPayloadPut).
Campo fora do whitelist no PUT é silenciosamente ignorado —
MATA070 não toca o registro. Para mudar
cod/agencia/conta é preciso
DELETE + POST com nova chave.
A6_COD informado pelo cliente. Diferente de SE2/SC7 que geram
número via GetSXENum, bancos são cadastro curado
— o operador escolhe o código (geralmente alinhado com FEBRABAN: 001
Banco do Brasil, 033 Santander, 237 Bradesco,
341 Itaú, etc). POST com chave já existente retorna 409.
Filial não trafega no array do MsExecAuto. O endpoint posiciona
SA6 em xFilial("SA6") antes da chamada e MATA070
usa xFilial internamente. A6_FILIAL nunca é enviado no array.
Typeahead acento-insensitive. /_search?term=<prefix>
usa cursor TCGenQry via helper U_RestSug com
COLLATE Latin1_General_CI_AI (MSSQL) — busca por prefixo
case+accent-insensitive sobre A6_NREDUZ. Default
pageSize=10, máximo 25.
Paginação e delta-sync. /_list usa
page/pageSize (default 50, máx
500) com orderBy=chave. Para sincronização
incremental, alterne para orderBy=recno e use
cursor conforme o nextCursor retornado. Em
orderBy=chave, since filtra
RecNo() < since.
Identificadores técnicos no GET. Cada resposta inclui
recno (sempre). msuid/msuidt aparecem
apenas quando o dicionário expõe A6_MSUID/A6_MSUIDT
(depende de UPDDISTR de MVC). Filtragem via
U_RestOpc.
Cadastro de Bancos (SA6)
CRUD por chave composta cod-agencia-conta — bancos curados sem geração automáticaDescrição
Inclui um novo banco via MATA070 em modo 3
(MODEL_OPERATION_INSERT). A chave (cod-agencia-conta)
é definida pelo cliente no path — não há geração automática de
A6_COD. Mesma chave de um banco existente retorna
409.
A6_NREDUZeA6_NOMEsão obrigatórios (validados pelo MATA070).- Campos opcionais: endereço, CEP, CGC, DV, NRINTEG, agências PIS/COB/AUT.
- Whitelist completa: ver
BancoPayload.
Path parameter
cod-agencia-conta. Pattern: ^[^-]+-[^-]+-[^-]+$.Request body
BancoPayload.
POST https://erpapi.jetme.com.br/api/99/01/WsSA6/INCLUIR/999-99999-0099999999 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "A6_NREDUZ": "BB_TEST", "A6_NOME": "BANCO DO BRASIL TESTE", "A6_END": "AV PRESIDENTE VARGAS 100", "A6_CIDADE": "RIO DE JANEIRO", "A6_EST": "RJ", "A6_CEP": "20000000", "A6_DV_AGE": "1", "A6_DVCTA": "5", "A6_NRINTEG": "001" }
{
"success": true,
"message": "Banco incluido com sucesso.",
"data": {
"cod": "999",
"agencia": "99999",
"conta": "0099999999",
"recno": 12345
}
}
Respostas
A6_NREDUZ/A6_NOME vazios. Tier: validation-error.cod/agencia/conta. Mensagem: "Banco ja existe nesta chave (cod/agencia/conta)." Tier: business-error.MATA070 — validação X3_VALID de algum campo (ex. A6_NRINTEG com layout customizado). Mensagem editorial em message. Tier: business-error.Descrição
Altera campos do banco via MATA070 em modo 4
(MODEL_OPERATION_UPDATE). Escopo reduzido:
apenas 8 campos cadastrais sem impacto contábil entram
no array do MsExecAuto:
A6_NREDUZ— nome reduzido (impacta typeahead)A6_NOME— razão socialA6_END,A6_CIDADE,A6_EST,A6_CEP— endereçoA6_DV_AGE,A6_DVCTA— dígitos verificadores
Campo fora do whitelist é silenciosamente ignorado. Para
alterar cod/agencia/conta, faça
DELETE + POST com nova chave.
Path parameter
Request body
BancoPayloadPut.
PUT https://erpapi.jetme.com.br/api/99/01/WsSA6/ALTERAR/999-99999-0099999999 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "A6_NREDUZ": "BB_REV", "A6_NOME": "BANCO DO BRASIL REVISADO" }
Respostas
CrudResponse.MATA070 — validação customizada via X3_VALID. Tier: business-error.Descrição
Exclui o banco via MATA070 em modo 5
(MODEL_OPERATION_DELETE). Pré-requisitos:
- Banco sem saldo em movimento (
SE5). - Sem títulos com
E2_PORTADO/E1_PORTADOapontando para este banco.
Quando há vinculação ativa, MATA070 devolve 422 com a mensagem do
MsExecAuto. Comportamento delegado integralmente à rotina nativa.
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
DELETE https://erpapi.jetme.com.br/api/99/01/WsSA6/EXCLUIR/999-99999-0099999999 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
Descrição
Retorna o banco posicionado pela chave composta (índice 1 da SA6:
A6_FILIAL+A6_COD+A6_AGENCIA+A6_NUMCON). Cada parte é
preenchida com PadR no TamSX3 correspondente
antes do DbSeek. Aplica whitelist de CAMPOS_GET
(cabeçalho da SA6 + ids técnicos).
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSA6/999-99999-0099999999 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Banco }.Descrição
Busca o banco por id técnico — útil para integrações que persistem
recno ou msuid e querem reconfirmar o registro
sem decompor a chave de negócio em 3 partes.
Query parameters
recnomsuidtipo=recno, string para tipo=msuid.Cenarios
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSA6/_byid?tipo=recno&valor=12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsSA6/_byid?tipo=msuid&valor=9f7a3e2c4b8d1a0e Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Banco }.tipo/valor ausentes, tipo fora do enum, valor não numérico para recno.msuid requer campo A6_MSUID no dicionário.Listagem
Paginação por filtros, delta-sync e typeaheadDescrição
Lista bancos com filtros por cod, agencia,
conta, nreduz em dois modos:
orderBy=chave(default) — usa o índice 1 da SA6; paginação porpage/pageSize.orderBy=recno— varre fisicamente (ordem 0); paginação por keyset comcursor/nextCursor. Indicado para sync incremental.
O filtro nreduz faz busca contains case-insensitive
no nome reduzido — útil para localizar bancos por apelido.
Query parameters
CAMPOS_GET.1, mínimo 1). Só faz sentido com orderBy=chave.50, máx 500).chave.chaverecnoorderBy=chave, descarta RecNo() < since.orderBy=recno, retoma após este RecNo (vindo de nextCursor).Cenarios
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSA6/_list?page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsSA6/_list?orderBy=recno&cursor=0&pageSize=200 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de Banco), orderBy, pageSize, count, opcionalmente page ou nextCursor conforme o modo.fields com campo fora do whitelist, pageSize > 500).Descrição
Busca rápida sobre A6_NREDUZ usando cursor
TCGenQry com COLLATE Latin1_General_CI_AI
(acento+case-insensitive). Use para autocomplete em UIs que pedem ao
operador escolher o banco para vincular num cadastro de fornecedor ou
em uma conta corrente.
Query parameters
10, máx 25).Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSA6/_search?term=BB&pageSize=10 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de objetos { cod, agencia, conta, nreduz, nome, recno }), count, term.term ausente. Mensagem: "Parametro 'term' obrigatorio (busca por A6_NREDUZ)."Schemas
Definições canônicas — campos com origemSX3 rastreável
/{chave}, /_list,
/_byid). Cabeçalho da SA6 + ids técnicos.
A6_MSUID.POST (whitelist CAMPOS_ALLOW_POST).
Campos-chave (cod, agencia, conta)
vêm exclusivamente do path — não precisam aparecer no body.
PUT (CAMPOS_ALLOW_PUT) — somente
8 campos editáveis sem impacto contábil. Campo fora desta
lista é silenciosamente ignorado.
data nas respostas
de POST e PUT. Acrescenta ids técnicos.
A6_MSUID.data traz
BancoRef em POST/PUT, string vazia em DELETE.
true em sucesso.message traz a
mensagem do NomeAutoLog do MATA070.
false em erros.Cenários
Catálogo de combinações de payload/query reconhecidas pelos métodos. Cada cenário usa o mesmo schema mas demonstra um uso típico distinto. Tier semântico no slug; endpoint notype-pill.
Quando usar: bootstrap de cadastro de bancos no provisionamento de filial nova, ou inclusão pontual de banco que ainda não foi cadastrado.
MATA070 Op=4. Campos fora do whitelist são silenciosamente
ignorados.
Quando usar: renomear banco após fusão/incorporação, ajustar nome reduzido para typeahead mais ergonômico, atualizar endereço da agência.
MATA070 Op=5. Comportamento delegado à rotina
nativa — rejeita com 422 se houver saldo SE5 ou títulos vinculados
(E2_PORTADO/E1_PORTADO).
Quando usar: banco curado por engano (chave errada), banco descontinuado sem movimento, limpeza de bancos de teste.
DbSeek pelo índice 1 da SA6 (chave composta com PadR). Retorna
envelope { success, data: Banco }.
RecNo() via tipo=recno&valor=N. Identificador
técnico sempre disponível.
A6_MSUID via tipo=msuid&valor=GUID. Requer
o campo no dicionário (UPDDISTR de MVC). Sem o campo — retorna 501.
orderBy=chave + page/pageSize.
Paginação por offset sobre o índice 1 da SA6.
orderBy=recno + cursor retomavel. Cada página devolve
nextCursor para a próxima chamada.
Quando usar: sincronização incremental do consumer (Angular embarcado, integradores externos).
TCGenQry sobre A6_NREDUZ com
COLLATE Latin1_General_CI_AI — busca por prefixo
case+accent-insensitive. Default 10 sugestões.
Quando usar: autocomplete em UI de cadastro de fornecedor/título quando o operador precisa escolher o banco para vincular.
Pendências conhecidas (rev1)
Bloqueio MSBLQL/MSBLQD não aplicável. A tabela
SA6 não expõe os campos administrativos
A6_MSBLQL/A6_MSBLQD nesta base — bancos
não têm fluxo de bloqueio TOTVS. Para "desativar" um banco em uso,
o operador exclui e re-inclui (ou opera diretamente na rotina nativa
MATA070). O padrão de bloqueio aplicado em SA1/SA2/SB1/SB5/SC1 não
chega a este endpoint.
Sem geração automática de A6_COD. Diferente de SE2/SC7,
o cadastro de bancos é curado — o operador informa o trio
cod-agencia-conta no path. Não há GetSXENum;
POST sem chave (ou com chave duplicada) retorna 400/409.
A6_NRINTEG com X3_VALID customizado. O código
FEBRABAN (3 chars) pode disparar validações específicas do cliente
(formato de layout CNAB/Open Banking). Se o ambiente tiver
X3_VALID customizado em A6_NRINTEG, o POST
pode retornar 422 com mensagem do dicionário — comportamento
delegado integralmente ao MATA070.
DELETE bloqueado por movimento. Quando há saldo em
SE5 (movimento bancário) ou títulos com
E2_PORTADO/E1_PORTADO apontando para este
banco, o MATA070 modo 5 rejeita com 422. A mensagem vem do
NomeAutoLog da rotina — o endpoint apenas a propaga.
Para casos terminais, purga física via DBA.