Changelog
Histórico de versões da API EloFiel e desta documentação.
v1.6.0 — 2026-05-20 — Categoria de Benefício (issue #3)
⚠️ Breaking — VendaResponse substituiu campos singulares por beneficiosAplicados[]
A partir desta versão, cada loja pode operar com até 1 campanha de Cashback + 1 de Pontos simultaneamente. A venda passa a aplicar TODAS as campanhas elegíveis, retornando uma lista de benefícios em vez de um único.
Removidos do VendaResponse (dados):
movimentacaoId(singular) → usebeneficiosAplicados[].movimentacaoIdou o novovendaIdagregadorcampanhaDescricao→beneficiosAplicados[].campanhaDescricaotipoBeneficio→beneficiosAplicados[].tipoBeneficiostatusBeneficio→beneficiosAplicados[].statusBeneficiodataLiberacao→beneficiosAplicados[].dataLiberacaodataExpiracao→beneficiosAplicados[].dataExpiracao
Adicionados:
vendaId— UUID agrupador da venda (compartilhado por todas as movimentações geradas)beneficiosAplicados[]— lista com 1 ou 2 elementos, cada um com os 9 campos do benefíciopontosCreditados/cashbackCreditadocontinuam como agregados (soma da lista)
API — Novas funcionalidades
- Validação RF-1/RF-2: criar uma 2ª campanha ativa do mesmo
Tipopara a mesma loja retorna422com mensagem "Já existe uma campanha de cashback/pontos ativa nesta loja…" - Cancelamento bulk forçado:
POST /api/v1/venda/cancelaragora cancela TODAS as movimentações da venda (agrupadas porvendaId), em vez de apenas uma. UX previsível - Novos eventos de notificação:
CashbackEPontosCreditados(imediato) eCashbackPendenteEPontosCreditados(diferido) — venda com 2 benefícios envia 1 única notificação consolidada - Métrica OTel
elofiel_venda_movimentacoes_count: histograma que indica quantos benefícios cada venda gerou (1 ou 2). Use no Grafana para detectar regressão de stacking
Documentação
- Atualizado: Endpoints PDV — novo formato do
VendaResponse - Atualizado: Registrar Venda — cenários com 1 ou 2 benefícios
- Atualizado: Fluxo Completo — código JS itera sobre lista
- Atualizado: Modelo de Dados — tabela do
VendaResponsee novoBeneficioAplicado - Atualizado: Exemplos de Código — snippets JS, PHP, Python iterando sobre
beneficiosAplicados[] - Atualizado: Regras de Campanhas — seção 1 reescrita com Categoria de Benefício, RF-1/RF-2 e DP-1
- Atualizado: Arquitetura de Cancelamento — adendo DP-3 (bulk forçado)
- SDK Delphi (
exemplos-integracoes/delphi/) —TResultadoVendarefatorado paraTArray<TBeneficioAplicado>
Como migrar
- Substituir leituras
dados.movimentacaoIdpordados.vendaId(ou iterarbeneficiosAplicados[]se precisar do ID de cada movimentação) - Substituir
dados.campanhaDescricao/dados.tipoBeneficio/dados.statusBeneficio/dados.dataLiberacao/dados.dataExpiracaopor iteração sobredados.beneficiosAplicados[] dados.pontosCreditadosedados.cashbackCreditadocontinuam funcionando — agora como agregados da lista- Quem usa o SDK Delphi: pull do repo
exemplos-integracoes/delphi/traz a versão nova
v1.5.0 — 2026-04-01
API — Novas funcionalidades
- Modelo 3 — Desconto sobre cashback gerado (
usarCashbackGerado): campobooleanopcional emPOST /api/v1/venda. Quandotrue, o cashback que a venda geraria é aplicado como desconto imediato em vez de ser creditado ao saldo. RequerpermiteDescontoSobreCashbackGerado: truena campanha (configurado pelo admin) - Novo endpoint
POST /api/v1/venda/preview: simula o Modelo 3 sem gravar nada. RetornapermiteAplicarDesconto,motivoBloqueio,cashbackGeradoPrevisto,valorComDescontoecashbackSobreDesconto. Chamar antes de oferecer o desconto ao cliente para exibir os valores exatos - Campo
descontoGeradona resposta dePOST /api/v1/venda: valor do cashback desta venda aplicado como desconto (Modelo 3). Separado decashbackUsado(Modelo 2) - Campo
permiteDescontoSobreGeradoemGET /api/v1/configuracao: indica se o Modelo 3 está habilitado para a loja. Usar na inicialização do PDV para exibir ou ocultar o botão de desconto imediato - Exclusividade mútua entre Modelos 2 e 3: enviar
usarCashbackDisponivel: trueeusarCashbackGerado: truesimultaneamente retorna422 - Modelo 3 funciona na primeira compra: ao combinar
usarCashbackGerado: truecom o objetoclienteno body, o auto-cadastro e o desconto imediato ocorrem na mesma chamada atômica
Documentação
- Novo guia: Cenário 6 — Modelo 3 — fluxo completo com preview e venda
- Atualizado: Registrar Venda — tabela de campos com
usarCashbackGerado, aviso de exclusividade mútua, tabela de resposta comdescontoGerado - Atualizado: Configuração do PDV — campo
permiteDescontoSobreGeradona tabela e nos exemplos JSON - Atualizado: Fluxo Completo de PDV — tabela comparativa com os 3 modelos, diagrama de sequência do Modelo 3, exemplos de código em JavaScript e PHP
- Atualizado: Endpoints PDV — seção
POST /api/v1/venda/previewcompleta com request/response; campopermiteDescontoSobreGeradoemGET /api/v1/configuracao - Atualizado: Regras de Campanhas — nova seção 6.3 documentando
permiteDescontoSobreCashbackGeradoe o cálculo do Modelo 3 - Atualizado: Guia de Integração PDV/ERP (
docs/integracao-pdv-erp.md) — seção 4.1, preview endpoint, Fluxo 5 e tabela comparativa final
v1.4.0 — 2026-04-01
API — Novas funcionalidades
- Novo endpoint
GET /api/v1/configuracao: retorna o resumo da campanha ativa para a loja — tipo (CashbackouPontos), permissão de checkout de cashback na venda e configurações de resgate de pontos. Chamar na inicialização do PDV/ERP para adaptar a UI POST /api/v1/resgate— campodescricaoTroca: campo opcional (máx. 200 chars) para registrar o brinde ou produto entregue ao cliente no resgate de pontos. Exibido no histórico do app clube. Ignorado para CashbackPOST /api/v1/cliente—emailetelefoneobrigatórios: os campos passaram de opcionais para obrigatórios (enviar""quando o cliente não informar). Usados para notificações via WhatsApp e e-mail
Documentação
- Novo guia: Configuração do PDV —
GET /api/v1/configuracaocom exemplos em 4 linguagens - Novo guia: Cadastrar Cliente —
POST /api/v1/clientecom idempotência e regras LGPD - Atualizado:
POST /api/v1/resgate— campodescricaoTrocaem todos os guias e referências - Atualizado:
POST /api/v1/cliente—emailetelefonemarcados como obrigatórios - Atualizado: Modelo de Dados — novos tipos
CadastrarClientePdvRequest,CadastrarClienteResponseeConfiguracaoResponse - Atualizado: Coleção Postman — templates para
GET /configuracaoePOST /cliente - Documentado: Checkout Integrado (
usarCashbackDisponivel) — campoPOST /api/v1/vendaque permite aplicar o saldo de cashback como desconto na própria venda, em uma única chamada atômica. CamposcashbackUsadoevalorFinaladicionados à documentação da resposta. Guia Fluxo Completo atualizado com diagrama e exemplos do Modelo 2
v1.3.0 — 2026-03-31
API — Novas funcionalidades
- Auto-cadastro de cliente na venda (
POST /api/v1/venda): campo opcionalclientecomnome,emailetelefonepara registrar o cliente na mesma chamada da primeira venda - API Clube (consumidor): endpoints de login por PIN (WhatsApp/e-mail), saldo, histórico, perfil e QR Code — base para apps de fidelidade para o consumidor final
- QR Code: cliente gera QR via
POST /api/v1/clube/cliente/renovar-qr; operador identifica viaGET /api/v1/admin/cliente/identificar?qr={token} - Lotes ativos detalhados:
GET /api/v1/resgate/saldoagora retorna arraylotesAtivoscom detalhamento por lote (status, validade, valor disponível)
Documentação
- Novo guia: Identificar Cliente por QR Code
- Novo guia: Integração Clube (App do Consumidor)
- Nova referência: Endpoints Clube (Consumidor)
- Atualizado:
VendaPdvRequestcom campoclienteem todos os guias e referências - Atualizado:
ConsultaSaldoResponsecomlotesAtivos
v1.2.0 — 2026-03-31
API
- Integração PDV Delphi XE3: exemplo completo disponível em
exemplos-integracoes/delphi/ - Mini CRM interno: leads do formulário de contato captados automaticamente (backoffice interno, não exposto na API pública)
v1.1.0 — 2026-03-29
- OpenAPI spec completa disponível em
/openapi/elofiel-v1.yaml - Swagger UI interativo disponível em
/api
v1.0.0 — 2026-03-29
Lançamento inicial da API EloFiel e da documentação de integração para desenvolvedores.
API
- Endpoint
POST /api/v1/venda— registro de venda com crédito automático de cashback ou pontos - Endpoint
GET /api/v1/resgate/saldo— consulta de saldo do cliente - Endpoint
POST /api/v1/resgate— resgate de cashback ou pontos como desconto - Endpoint
POST /api/v1/authadmin/login— autenticação do painel administrativo - Suporte a cashback imediato (
statusBeneficio: "Disponivel") e diferido ("Pendente") - Criação automática de cliente na primeira venda por CPF
- Aceitação de CPF e CNPJ com ou sem formatação
- Resgate FIFO (lotes mais antigos consumidos primeiro)
- Envelope de resposta padronizado
ApiResult<T>em todos os endpoints - Rate limiting no login admin: 5 tentativas por minuto por IP
Documentação
- Quick Start com exemplos em cURL, JavaScript e PHP
- Guias de integração: registrar venda, consultar saldo, realizar resgate, fluxo completo
- Referência completa dos endpoints PDV/ERP e admin
- Documentação de códigos de erro e rate limiting
- Exemplos de código em cURL, JavaScript/Node.js, PHP e Python
- Instruções de configuração no Postman