Pular para o conteúdo principal

Modelo de Dados

Documentação dos campos utilizados nas requisições e respostas da API EloFiel.

Envelope padrão

Todos os endpoints retornam o mesmo envelope ApiResult<T>:

{
"sucesso": true,
"dados": { ... },
"mensagem": "Mensagem descritiva.",
"erros": []
}
CampoTipoDescrição
sucessobooltrue se a operação foi bem-sucedida
dadosT (objeto)Payload da resposta; null em caso de erro
mensagemstringMensagem descritiva do resultado; pode ser null
errosstring[]Lista de erros de validação ou negócio; vazio em sucesso

Venda — VendaPdvRequest

Campos do body para POST /api/v1/venda:

CampoTipoObrigatórioFormato aceitoDescrição
cnpjLojastringSim"12.345.678/0001-90" ou "12345678000190"CNPJ do estabelecimento
cpfClientestringSim"123.456.789-09" ou "12345678909"CPF do cliente
valorVendanumberSimDecimal positivoValor total da venda em R$
documentoExternostringNãoTexto livre (máx. 100 chars)Identificador do PDV/ERP para rastreio
observacaostringNãoTexto livreObservação livre; null é aceito
usarCashbackDisponivelbooleanNãotrue / false (padrão false)Se true e a campanha permitir (permiteCheckoutCashbackNaVenda: true), aplica o saldo de cashback disponível como desconto na própria venda. O novo cashback é calculado sobre o valor líquido. Ignorado se campanha for Diferido.
clienteClienteAutoRequestNãoDados para auto-cadastro (se CPF não existir)

Sub-objeto cliente (opcional):

CampoTipoObrigatórioDescrição
cliente.nomestringSim (se cliente presente)Nome completo
cliente.emailstringNãoE-mail do cliente
cliente.telefonestringNãoTelefone do cliente
CPF e CNPJ com ou sem formatação

A API aceita CPF e CNPJ formatados ("123.456.789-09") ou apenas com dígitos ("12345678909"). Ambas as formas são equivalentes em todos os endpoints.

Venda — VendaResponse (campo dados)

CampoTipoDescrição
vendaIduuidID agrupador da venda (issue #3). Compartilhado por todas as movimentações em beneficiosAplicados[]; usado pelo cancelamento bulk
clienteIduuidID do cliente na plataforma
clienteNomestringNome do cliente (se cadastrado)
valorVendanumberValor bruto da venda registrado
cashbackUsadonumberCashback do saldo anterior aplicado como desconto nesta venda. 0 quando usarCashbackDisponivel não foi usado ou campanha não permite
valorFinalnumberValor líquido pago pelo cliente (valorVenda - cashbackUsado)
beneficiosAplicadosBeneficioAplicado[]1 a 2 benefícios aplicados (máx. 1 Cashback + 1 Pontos por loja — issue #3)
pontosCreditadosnumberAgregado — soma dos pontos creditados em todas as campanhas
cashbackCreditadonumberAgregado — soma do cashback creditado em todas as campanhas
saldoAtualSaldoResponseSaldo atualizado do cliente após a venda

Elemento de beneficiosAplicados[]:

CampoTipoDescrição
movimentacaoIduuidID único da movimentação gerada por esta campanha
campanhaIduuidID da campanha
campanhaDescricaostringNome da campanha
tipoBeneficiostring"Cashback" ou "Pontos"
pontosCreditadosnumberPontos por esta campanha (0 se Cashback)
cashbackCreditadonumberCashback em R$ por esta campanha (0 se Pontos)
statusBeneficiostring"Disponivel" ou "Pendente"
dataLiberacaodate | nullData de liberação do cashback diferido
dataExpiracaodate | nullData de expiração do lote

Saldo — ConsultaSaldoResponse (campo dados)

Resposta de GET /api/v1/resgate/saldo:

CampoTipoDescrição
clienteIduuidID do cliente
clienteNomestringNome do cliente
saldoPontosnumberTotal de pontos disponíveis para resgate
saldoCashbacknumberTotal de cashback em R$ disponível para resgate
saldoPendentenumberCashback diferido ainda bloqueado (não disponível)
lotesAtivosLoteResponse[]Detalhamento dos lotes ativos de crédito
Saldo pendente não pode ser resgatado

saldoPendente representa cashback que ainda não atingiu a data de liberação. Não inclua esse valor na oferta de desconto ao cliente — ele não será aceito em um resgate.


Resgate — ResgatePdvRequest

Campos do body para POST /api/v1/resgate:

CampoTipoObrigatórioValores aceitosDescrição
cnpjLojastringSimCNPJ formatado ou limpoCNPJ do estabelecimento
cpfClientestringSimCPF formatado ou limpoCPF do cliente
tipoBeneficiostringSim"Cashback" ou "Pontos"Tipo de benefício a resgatar
valorResgatenumber | nullCondicionalDecimal positivoValor em R$ a resgatar (apenas para Cashback). null = resgatar tudo disponível
pontosResgatenumber | nullCondicionalInteiro positivoQuantidade de pontos a resgatar (apenas para Pontos). null = resgatar tudo disponível
documentoExternostringNãoTexto livre (máx. 100 chars)Identificador do PDV/ERP
observacaostringNãoTexto livre (máx. 500 chars)Observação livre
descricaoTrocastringNãoTexto livre (máx. 200 chars)Descrição do brinde/produto entregue. Somente para tipoBeneficio: "Pontos" — exibido no histórico do app clube

Resgate — ResgateResponse (campo dados)

CampoTipoDescrição
movimentacaoIduuidID único da movimentação de resgate
clienteIduuidID do cliente
clienteNomestringNome do cliente
tipoBeneficiostring"Cashback" ou "Pontos"
pontosResgatadosnumberQuantidade de pontos resgatados (0 se Cashback)
cashbackResgatadonumberValor em R$ resgatado (0 se Pontos)
saldoAtualSaldoResponseSaldo atualizado após o resgate

SaldoResponse (sub-objeto)

Retornado como saldoAtual em VendaResponse e ResgateResponse:

CampoTipoDescrição
saldoPontosnumberPontos disponíveis
saldoCashbacknumberCashback em R$ disponível
saldoPendentenumberCashback diferido bloqueado


Cadastro de Cliente — CadastrarClientePdvRequest

Campos do body para POST /api/v1/cliente:

CampoTipoObrigatórioFormato aceitoDescrição
cpfstringSimCom ou sem formataçãoCPF do cliente (11-14 chars)
nomestringSimTexto livreNome completo (mín. 2, máx. 150 chars)
emailstringSimE-mail válidoE-mail (máx. 150 chars). Enviar "" quando não disponível
telefonestringSimTexto livreTelefone (máx. 20 chars). Enviar "" quando não disponível
dataNascimentostringNão"YYYY-MM-DD"Data de nascimento. Omitir quando não disponível
aceiteLgpdbooleanSimtrueConsentimento LGPD. Deve ser true
email e telefone são obrigatórios

Mesmo que o cliente não forneça esses dados, os campos devem ser enviados como string vazia "". Eles são usados para notificações de cashback e pontos e não podem ser null.

Cadastro de Cliente — CadastrarClienteResponse (campo dados)

CampoTipoDescrição
clienteIduuidID do cliente no EloFiel
cpfstringCPF normalizado (apenas dígitos)
nomestringNome do cliente
emailstringE-mail do cliente
telefonestringTelefone normalizado (apenas dígitos)
jaExistiabooleantrue se o CPF já estava cadastrado (dados não foram alterados)

Configuração — ConfiguracaoResponse (campo dados)

Resposta de GET /api/v1/configuracao:

CampoTipoDescrição
cnpjLojastringCNPJ normalizado (apenas dígitos)
nomeLojastringNome da loja
campanhaAtivabooleantrue se há campanha ativa para a loja
tipoCampanhastring | null"Cashback" ou "Pontos". null quando sem campanha
permiteCheckoutCashbackNaVendabooleantrue = exibir opção de usar cashback como desconto na venda
pontosMinimosParaResgatenumber | nullMínimo de pontos para resgate (apenas campanhas Pontos)
permiteUsoParcialDePontosboolean | nulltrue = resgate parcial permitido (apenas campanhas Pontos)

Formatos de data

Todas as datas retornadas pela API seguem o formato ISO 8601:

  • Data: "2026-09-29" (YYYY-MM-DD)
  • Data/hora: "2026-03-30T12:00:00Z" (UTC)