Principais Etapas
- Login seguro: Autenticação do usuário e obtenção de token de segurança.
- Configuração do checkout: Obtenção das configurações do programa de fidelidade.
- Consulta de pontos da compra: Verificação de quantos pontos o cliente ganhará na compra.
- Consulta de recompensas: Verificação do saldo e regras para utilização da recompensa.
- Aplicação de recompensa: Resgate de recompensa no carrinho.
- Consulta de recompensa aplicada: Verificação do estado da recompensa no carrinho.
- Remoção de recompensa: Remover a recompensa aplicada a um carrinho.
- Objetivos: Consultar e interagir com missões de fidelidade (compra, aniversário, indicação, review, redes sociais, quiz, etc.).
Guia Visual: Como Construir as Interfaces
Cada endpoint retorna dados que precisam ser traduzidos em interfaces. Abaixo está um guia prático de como o widget BonifiQ utiliza esses dados para construir cada tela.Tela de Recompensas
A lista de recompensas deve exibir cards com as informações retornadas pela API. Cada tipo de recompensa tem um tratamento visual diferente:Tela de Detalhe da Recompensa
Ao clicar em uma recompensa, exibir detalhes e botão de resgate:- Se
customer == null→ mostrar “Participar do Programa” (redirecionar para cadastro) - Se
PointsBalance < reward.Points→ desabilitar botão - Se já resgatou → desabilitar botão
- Ao resgatar: chamar
POST /rewards/redeem/{id}→ exibir cupom gerado
Tela de Objetivos (Missões)
Cada tipo de objetivo tem um card com ícone e comportamento diferentes:Tela de Aniversário (Birthday)
A tela muda completamente baseado noBenefitStatus:
Tela de Indicação (Referral)
- Email:
POST /objectives/referral/refercom email - Link/WhatsApp:
POST /objectives/referral/friend→ gera link para compartilhar - O campo
WhatsAppShareTextdo objetivo contém o texto pré-formatado
Tela de Quiz
Type = 0 (Multiple)→ Checkboxes (múltipla seleção)Type = 1 (Selection)→ Radio buttons (seleção única)Type = 2 (Open)→ Campo de texto livre
Checkout: Cashback
Estados de Interface
Toda tela deve considerar estes estados:1. Fazer Login Seguro
O primeiro passo é realizar o login do usuário e obter o seu token de segurança. Esse token de segurança será utilizado em todas as chamadas subsequentes. OsessionToken e o segmentToken deverão ser obtidos mediante login na VTEX.
O
SecureToken tem validade limitada e deve ser atualizado periodicamente.Requisição
POST /pub/widget/vendors/vtex/securelogin
Headers
string
required
Identificador público da loja.
string
required
Gerado pela plataforma de e-commerce após o login do consumidor.
string
required
Gerado pela plataforma de e-commerce.
Exemplo
Resposta
boolean
Indica se houve erro na requisição.
object
2. Obter Configuração do Checkout
Essa etapa é utilizada para obter as configurações do programa de fidelidade para o checkout, como cores, nome do programa e se utiliza pontos ou cashback.Requisição
GET /pub/widget/rewards/checkout/configuration
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Exemplo
Resposta
string
Texto customizado para exibição no checkout.
string
Nome do programa de fidelidade.
string
Cor principal do programa (hexadecimal).
boolean
Indica se o programa está ativo.
boolean
Indica se o programa utiliza cashback.
boolean
Indica se o programa utiliza pontos.
3. Consultar Pontos da Compra
Essa etapa é utilizada para exibir ao cliente quantos pontos (ou cashback) ele ganhará na compra atual. Ideal para exibir mensagens como “Você ganhará X pontos nesta compra”.Requisição
GET /pub/widget/rewards/checkout/purchase-points
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
number
required
Valor da compra.
string
Identificador do carrinho (order_form_id). Opcional.
Exemplo
Resposta
number
Valor mínimo da compra para receber pontos.
integer
Quantidade de pontos que o cliente ganhará nesta compra.
number
Valor de cashback que o cliente ganhará nesta compra (se aplicável).
boolean
Indica se existe um objetivo de compra configurado.
4. Buscar Recompensas
Essa etapa será utilizada para a listagem de recompensas disponíveis para o usuário logado.Requisição
GET /pub/widget/rewards/checkout
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
number
required
Valor da compra. É utilizado para determinar quais recompensas (e valores) são válidos para o carrinho.
Exemplo
Resposta
string
Nome do programa de fidelidade.
integer
Saldo de pontos do cliente.
boolean
Indica se houve erro na requisição.
array
Lista de recompensas.
Enumeração UseReason
4.1. Buscar Recompensas já Resgatadas
Essa etapa será utilizada para a listagem de recompensas já resgatadas e não utilizadas pelo consumidor.Requisição
GET /pub/widget/rewards/checkout/redeemed
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
number
required
Valor da compra.
Exemplo
Resposta
5. Aplicar Recompensa
Essa etapa será utilizada para a aplicação de recompensas ainda não resgatadas.Requisição
POST /pub/widget/rewards/redeem/{reward_id}
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
integer
required
ID da recompensa a ser resgatada.
string
Identificador do carrinho (order_form_id).
Exemplo
Resposta
5.1. Aplicar Recompensa já Resgatada
Essa etapa será utilizada para a aplicação de recompensas já resgatadas.Requisição
POST /pub/widget/rewardredeemed/checkout/redeem/{reward_redeemed_id}
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
integer
required
ID da recompensa resgatada.
string
Identificador do carrinho (order_form_id).
Exemplo
6. Validar Cashback
Essa etapa é utilizada para verificar se o cliente pode utilizar cashback e qual o valor disponível. Deve ser chamada antes de aplicar o cashback.Requisição
GET /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}
ou
POST /pub/widget/rewards/checkout/cashback
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
string
required
Identificador do carrinho.
string
required
Identificador do carrinho (order_form_id).
Exemplo (GET)
Exemplo (POST)
Resposta
number
Saldo total de cashback do cliente.
number
Valor de cashback que pode ser utilizado nesta compra.
number
Valor máximo de cashback permitido para esta compra.
string
Regras de utilização do cashback (texto para exibição).
boolean
Indica se o cliente pode usar cashback nesta compra.
string
Texto informando quanto cashback o cliente receberá.
string
Texto informando quanto falta para usar o cashback.
boolean
Indica se o cashback está disponível.
number
Valor restante para usar todo o cashback.
number
Valor restante para atingir o mínimo necessário.
boolean
Indica se há produtos no carrinho que não são elegíveis para cashback.
number
Valor mínimo do carrinho para usar cashback.
6.1. Aplicar Cashback
Essa etapa será utilizada para a aplicação de cashback.Requisição
POST /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/redeem
ou
POST /pub/widget/rewards/checkout/cashback/redeem
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
string
required
Identificador do carrinho.
string
Identificador do carrinho (order_form_id). Obrigatório na segunda opção (sem path param).
number
required
Valor do cashback a ser resgatado.
integer
required
Origem do resgate. Use
3 para checkout mobile.number
required
Valor do carrinho (sem descontos ou frete).
Exemplo (com path param)
Exemplo (com body)
Resposta
6.2. Consultar Cashback Aplicado
Essa etapa é utilizada para verificar se há cashback aplicado ao carrinho.Requisição
GET /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/redeemed
ou
POST /pub/widget/rewards/checkout/cashback/redeemed
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
string
required
Identificador do carrinho.
string
required
Identificador do carrinho (order_form_id).
Exemplo (GET)
Resposta
6.3. Atualizar Cashback (Refresh)
Essa etapa é utilizada para recalcular o cashback quando o carrinho é alterado (itens adicionados/removidos).Requisição
POST /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/refresh
ou
POST /pub/widget/rewards/checkout/cashback/refresh
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
string
required
Identificador do carrinho.
string
required
Identificador do carrinho (order_form_id).
Exemplo
Resposta
boolean
Indica se o cashback foi removido (por exemplo, se o carrinho ficou abaixo do mínimo).
string
Mensagem para exibir ao cliente.
7. Consultar Recompensa Aplicada
Esta etapa será utilizada para o caso do cliente sair da tela do checkout e seja necessário reaplicar o estado de recompensa resgatada a ele.Requisição (GET)
GET /pub/widget/rewards/checkout/{checkoutCode}
Requisição (POST)
POST /pub/widget/rewards/checkout
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
string
required
Identificador do carrinho (order_form_id).
string
required
Identificador do carrinho (order_form_id).
Exemplo (GET)
Exemplo (POST)
Resposta
8. Remover Recompensa Aplicada
Esta etapa será utilizada para remoção de uma recompensa que foi aplicada ao carrinho.Requisição
POST /pub/widget/rewards/checkout/{reward_redeemed_id}/reverse
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
integer
required
ID da recompensa resgatada a ser removida do carrinho.
Exemplo
8.1. Remover Cashback Aplicado
Esta etapa será utilizada para remoção de um cashback que foi aplicado ao carrinho.Requisição
DELETE /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/redeem
ou
POST /pub/widget/rewards/checkout/cashback/redeem/remove
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
string
required
Identificador do carrinho.
string
required
Identificador do carrinho (order_form_id).
number
Valor do carrinho (sem descontos ou frete). Opcional.
Exemplo (DELETE)
Exemplo (POST)
Resposta
boolean
Indica se a operação foi bem sucedida.
string
Mensagem para exibir ao cliente.
9. Consultar Objetivos
Essa etapa é utilizada para listar os objetivos (missões) disponíveis para o cliente no programa de fidelidade. Objetivos são formas de ganhar pontos como compras, indicações, aniversário, etc.Requisição
GET /pub/widget/objectives
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Exemplo
Resposta
boolean
Indica se houve erro na requisição.
array
Lista de objetivos disponíveis.
Enumeração ObjectiveType
9.1. Objetivo de Compra (Purchase)
O objetivo de compra informa ao cliente quantos pontos ele ganhará ao realizar compras. Os pontos são atribuídos automaticamente quando a compra é confirmada.Este objetivo é informativo. Os pontos são creditados automaticamente pela plataforma ao confirmar o pedido. Não é necessário chamar nenhum endpoint para “completar” este objetivo.
Exemplo de exibição:
“Ganhe de 10 a 500 pontos a cada compra realizada”
9.2. Objetivo de Aniversário (Birthday)
O objetivo de aniversário permite ao cliente cadastrar sua data de nascimento e receber um bônus. O bônus pode ser em pontos ou em recompensa (cupom de desconto).Fluxo
- Verificar o
BenefitStatusdo objetivo - Se
BenefitStatus = 0, exibir formulário para cadastrar data - Chamar endpoint para salvar aniversário
- Se
BenefitStatus = 2, o bônus está disponível para resgate
Enumeração BenefitStatus
Cadastrar Aniversário
POST /pub/widget/customer/setbirthday
Query Parameters
string
required
Data de aniversário no formato
dd/MM ou yyyy-MM-dd.Exemplo
9.3. Objetivo de Indicação (Referral)
O objetivo de indicação permite que o cliente indique amigos e ganhe pontos quando o amigo indicado realiza uma compra.9.3.1. Indicar Amigo por Email
POST /pub/widget/objectives/referral/refer
Body
string
required
E-mail do amigo a ser indicado.
Exemplo
9.3.2. Gerar Link de Indicação
POST /pub/widget/objectives/referral/friend
Gera um link de indicação que pode ser compartilhado via WhatsApp, redes sociais ou copiado.
Body
string
Canal de compartilhamento (ex:
whatsapp, copy).Exemplo
9.3.3. Gerar Cupom para Amigo
POST /pub/widget/objectives/referral/coupon
Gera um cupom de desconto que será utilizado pelo amigo indicado na primeira compra.
Exemplo
9.3.4. Consultar Indicações Enviadas
GET /pub/widget/objectives/referral/sent
Retorna a lista de indicações feitas pelo cliente e o status de cada uma.
Exemplo
9.4. Objetivo de Review (Review)
O objetivo de review recompensa o cliente por avaliar produtos ou a loja.Consultar URLs de Avaliação
GET /pub/widget/objectives/review/urls
Retorna as URLs de avaliação disponíveis para o cliente (ex: avaliações de pedidos recentes).
Exemplo
Resposta
Exemplo de exibição:
“Avalie sua compra e ganhe 50 pontos + 20 pontos extras por comentário + 30 pontos extras por foto”
9.5. Objetivos de Redes Sociais
Esses objetivos recompensam o cliente por seguir a loja nas redes sociais.Registrar Follow
POST /pub/widget/objectives/createpointsfollowsocialmedia
Body
integer
required
Tipo da rede social (ver tabela abaixo).
Tipos de Rede Social
Exemplo
Resposta
Os pontos de redes sociais são baseados na confiança — a plataforma registra que o cliente clicou para seguir, mas não verifica automaticamente se ele realmente seguiu.
9.6. Quiz
Quizzes são enquetes interativas que recompensam o cliente por responder perguntas.9.6.1. Listar Quizzes
GET /pub/widget/quiz
Exemplo
Resposta
Tipos de Questão
9.6.2. Obter Quiz Específico
GET /pub/widget/quiz/{uid}
Path Parameters
string
required
Identificador único do quiz.
9.6.3. Responder Quiz
POST /pub/widget/answer
Body
Array de respostas, onde cada item contém:
integer
required
ID da questão sendo respondida.
array
IDs das opções selecionadas (para questões Multiple e Selection).
string
Resposta em texto livre (para questões Open).
Exemplo
9.7. Objetivo Customizado (Custom)
Objetivos customizados são configurados pela loja e podem representar qualquer ação personalizada. Eles possuem um botão de ação que redireciona o cliente para uma URL externa. Campos específicos:
Exemplo de exibição:
“Participe do evento exclusivo e ganhe 300 pontos” [Botão: “Participar” → redireciona para URL]
9.8. Resgatar Objetivo
Para objetivos que permitem resgate manual (como aniversário ou signup), utilize este endpoint.Requisição
GET /pub/widget/objectives/{objectiveType}/redeem
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
integer
required
Tipo do objetivo a ser resgatado (ver tabela
ObjectiveType).