BaixaReceber
Endpoint REST para baixa de títulos a receber
(tabela SE1) via MsExecAuto FINA070.
Aceita um ou mais títulos por requisição; o servidor
processa cada um individualmente e devolve resultado por linha
(sucesso ou erro), permitindo execução parcial atômica por título.
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
Modelo de payload — array de arrays de campos ExecAuto.
O corpo não é um objeto plano com pares campo:valor;
espelha a estrutura do aArray consumido pelo
MsExecAuto FINA070: cada título é um array de objetos
{campo, tipo, valor}, e Titulos é o
array desses arrays. O atributo tipo é obrigatório
em cada campo e dispara a conversão AdvPL correspondente
(C=Caractere, N=Numérico,
D=Data).
Identificação do título. Os campos
E1_PREFIXO, E1_NUM,
E1_PARCELA e E1_TIPO compõem a chave
composta da SE1 e são obrigatórios
em cada item de Titulos. Ausência ou erro de
padding (índice SE1 exige PadR nos
componentes) provoca rejeição da linha com mensagem
"Titulo nao encontrado…".
Campos da baixa. AUTVALREC
(valor da baixa, N) é o único campo
obrigatório além da identificação. Não pode exceder
E1_SALDO; ultrapassar provoca erro do
MsExecAuto. AUTDTBAIXA e
AUTDTCREDITO são opcionais e defaultam para
dDataBase do servidor quando omitidos.
Formato de datas. Campos com
tipo: "D" aceitam string no formato
YYYYMMDD (convertida via SToD) ou
DD/MM/YYYY (fallback via CToD). Não
aceita objeto Date nem timestamp epoch.
Semântica de HTTP — execução parcial atômica.
200 quando todos os títulos foram baixados
com sucesso; 207 Multi-Status quando alguns
deram certo e outros falharam (a resposta detalha cada linha);
422 quando nenhum título foi baixado
(todas as linhas falharam) ou quando o envelope é semanticamente
inválido; 400 para JSON malformado;
500 para exceção interna não tratada.
Idempotência. A operação não é
idempotente: enviar o mesmo payload duas vezes baixa o título
duas vezes (até esgotar E1_SALDO) e gera dois
registros SE5 de movimento. O cliente é
responsável por deduplicar (chave de idempotência externa
ou conferência prévia de E1_SALDO).
Fixtures sentinelas. O smoke test usa
E1_PREFIXO="TST" e E1_NUM com sufixo
_TEST_, permitindo identificar e limpar resíduos
manualmente na SE1 em caso de interrupção. Fixture
de referência: fixtures/baixa.json.
Baixa
Baixa em lote de títulos a receber via FINA070Descrição
Processa a baixa de um ou mais títulos a receber em uma única
requisição. Para cada item de Titulos:
- Converte o array de
{campo, tipo, valor}para oaArrayaceito peloMsExecAuto FINA070(conversão dirigida portipo). - Delega ao wrapper
U_FN070Exe, que valida existência do título naSE1, saldo e valor antes de executar a baixa. - Acumula o resultado individual (sucesso/erro + RecNo + mensagem) para compor a resposta consolidada.
Não há transação global ao redor dos títulos — cada um é
baixado (ou rejeitado) de forma independente. Use 207
como sinal de execução parcial.
Request body
POST https://erpapi.jetme.com.br/api/99/01/WsBaixaReceber/ Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "Filial": "01", "Titulos": [ [ { "campo": "E1_PREFIXO", "tipo": "C", "valor": "TST" }, { "campo": "E1_NUM", "tipo": "C", "valor": "000001_TEST_" }, { "campo": "E1_PARCELA", "tipo": "C", "valor": "001" }, { "campo": "E1_TIPO", "tipo": "C", "valor": "NF" }, { "campo": "AUTVALREC", "tipo": "N", "valor": 100.00 }, { "campo": "AUTDTBAIXA", "tipo": "D", "valor": "20260504" }, { "campo": "AUTDTCREDITO", "tipo": "D", "valor": "20260504" } ] ] }
POST https://erpapi.jetme.com.br/api/99/01/WsBaixaReceber/ Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "Filial": "01", "Titulos": [ [ { "campo": "E1_PREFIXO", "tipo": "C", "valor": "TST" }, { "campo": "E1_NUM", "tipo": "C", "valor": "000001_TEST_" }, { "campo": "E1_PARCELA", "tipo": "C", "valor": "001" }, { "campo": "E1_TIPO", "tipo": "C", "valor": "NF" }, { "campo": "AUTVALREC", "tipo": "N", "valor": 100.00 } ], [ { "campo": "E1_PREFIXO", "tipo": "C", "valor": "TST" }, { "campo": "E1_NUM", "tipo": "C", "valor": "000002_TEST_" }, { "campo": "E1_PARCELA", "tipo": "C", "valor": "001" }, { "campo": "E1_TIPO", "tipo": "C", "valor": "NF" }, { "campo": "AUTVALREC", "tipo": "N", "valor": 250.50 } ] ] }
POST https://erpapi.jetme.com.br/api/99/01/WsBaixaReceber/ Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "Filial": "01", "Titulos": [ [ { "campo": "E1_PREFIXO", "tipo": "C", "valor": "TST" }, { "campo": "E1_NUM", "tipo": "C", "valor": "000001_TEST_" }, { "campo": "E1_PARCELA", "tipo": "C", "valor": "001" }, { "campo": "E1_TIPO", "tipo": "C", "valor": "NF" }, { "campo": "AUTVALREC", "tipo": "N", "valor": 100.00 } ], [ { "campo": "E1_PREFIXO", "tipo": "C", "valor": "TST" }, { "campo": "E1_NUM", "tipo": "C", "valor": "999999" }, { "campo": "E1_PARCELA", "tipo": "C", "valor": "001" }, { "campo": "E1_TIPO", "tipo": "C", "valor": "NF" }, { "campo": "AUTVALREC", "tipo": "N", "valor": 50.00 } ] ] }
Respostas
BaixaReceberResponse com success: true e data.erros = 0. Tier: happy-path.success: false, data.titulos[] detalha cada linha. Tier: edge-valid.ErroResponse. Tier: validation-error.Titulos ausente/vazio, ou todos os títulos falharam no MsExecAuto. Tier: business-error.FWJsonDeserialize, lock, etc). Tier: business-error.Exemplo de resposta — 200
{
"success": true,
"message": "Todos os titulos baixados com sucesso.",
"data": {
"total": 1,
"ok": 1,
"erros": 0,
"titulos": [
{
"linha": 1,
"ok": true,
"recno": 1234,
"msg": "Baixa realizada com sucesso."
}
]
}
}
{
"success": false,
"message": "Processamento finalizado com erros parciais.",
"data": {
"total": 2,
"ok": 1,
"erros": 1,
"titulos": [
{
"linha": 1,
"ok": true,
"recno": 1234,
"msg": "Baixa realizada com sucesso."
},
{
"linha": 2,
"ok": false,
"recno": 0,
"msg": "Titulo nao encontrado na base de dados. Prefixo=TST Num=999999 Parcela=001 Tipo=NF"
}
]
}
}
Schemas
Definições canônicas — campos com origemSE1 / FINA070 rastreável
Filial identifica o
contexto Protheus (espelha o segmento da URL /api/99/01);
Titulos é o array de títulos a baixar, cada item
um TituloArray.
"01"). Atualmente herdado da URL — mantido no payload por compatibilidade com integrações multi-filial.minItems: 1. Cada item é um TituloArray.minItems: 5 — pelo menos a identificação
(E1_PREFIXO, E1_NUM, E1_PARCELA,
E1_TIPO) e o valor (AUTVALREC) devem
estar presentes. Cada elemento é um
CampoTitulo.
_TEST_ facilita identificação."001"."NF", "DP", "BOL".E1_SALDO.YYYYMMDD ou DD/MM/YYYY. Default: dDataBase.AUTDTBAIXA.{campo, tipo, valor} aceita pelo
MsExecAuto FINA070. tipo dirige a
conversão AdvPL no servidor.
E1_* identificam o título; AUT* informam dados da baixa.CNDC e D; número para N (também aceita string numérica via Val()).200) e
multi-status (207). success é
true apenas quando todos os títulos foram
baixados.
true = todos os títulos baixados; false = pelo menos um título falhou.BaixaReceberData.len(Titulos)).ok + erros == total.TituloResultado.Titulos. A
ordem é preservada — linha espelha a posição
original (1-based) no array de entrada.
true = baixa efetuada; false = título rejeitado (não encontrado, saldo insuficiente, valor inválido, etc).0 em caso de erro). Útil para auditoria.NomeAutoLog do FINA070).400 / 422 /
500. Usado quando a requisição não chega a entrar
no loop de títulos (JSON inválido, envelope ausente, exceção
fatal). Erros por título usam
BaixaReceberResponse
com status 207 ou 422.
false.400, pode conter o offset do parser JSON.