> ## Documentation Index
> Fetch the complete documentation index at: https://developers.bonifiq.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Construindo sua Interface de Fidelidade

> Guia completo para desenvolvedores que querem criar sua própria interface de fidelidade usando a API Widget da BonifiQ

Este guia ensina como construir sua própria interface de fidelidade (widget, app mobile, seção no site) consumindo a API Widget da BonifiQ. O foco aqui é entender **o que cada funcionalidade resolve**, **quando usar**, e **como apresentar** ao consumidor final.

## O que você pode construir

<CardGroup cols={2}>
  <Card title="Widget Customizado" icon="window">
    Interface flutuante no seu e-commerce com sua identidade visual
  </Card>

  <Card title="Seção no App Mobile" icon="mobile">
    Tela de fidelidade integrada ao seu aplicativo nativo
  </Card>

  <Card title="Página de Fidelidade" icon="browser">
    Landing page completa do programa de fidelidade
  </Card>

  <Card title="Integração no Checkout" icon="cart-shopping">
    Aplicação de recompensas e cashback durante a compra
  </Card>
</CardGroup>

***

## Visão Geral das Funcionalidades

Cada funcionalidade da API Widget existe para resolver uma necessidade específica na jornada do consumidor. Antes de implementar, entenda o papel de cada uma:

<img src="https://mintcdn.com/bonifiq/0iGFX-naJYUQM5gx/images/widget-custom/01-jornada-consumidor.jpg?fit=max&auto=format&n=0iGFX-naJYUQM5gx&q=85&s=026742f7cfa06c9a5d953c9b76b012f6" alt="Jornada do consumidor" width="1376" height="768" data-path="images/widget-custom/01-jornada-consumidor.jpg" />

***

## Autenticação

**O que é:** Vincula o consumidor ao programa de fidelidade da BonifiQ, gerando um token seguro (`SecureToken`) que identifica o consumidor nas chamadas autenticadas.

**Quando usar:** Sempre que o consumidor acessar endpoints **autenticados** (ex.: saldo, resgate, cashback no checkout, afiliados). Para endpoints públicos, a autenticação não é obrigatória.

<Info>
  **Modelo de autenticação: você é o consumidor.** A API Widget funciona no contexto do consumidor final. O `SecureToken` gerado representa **aquele consumidor específico** — e todas as chamadas feitas com esse token só acessam os dados dele (saldo, histórico, recompensas). Isso é diferente de uma API de backend tradicional, onde você autentica com credenciais da sua aplicação e pode consultar/interagir com qualquer cliente. Na API Widget, o escopo é sempre limitado ao consumidor autenticado.
</Info>

<Note>
  Nem todos os endpoints da API Widget exigem `X-BQ-SecureToken`. A referência de cada endpoint informa explicitamente o status **Público** ou **Autenticado**.
</Note>

**O que você recebe após autenticar (em qualquer método):**

* `SecureToken` — token que identifica o consumidor (validade de 60 minutos)
* `Name`, `Email` — dados para personalizar a experiência

<Warning>
  O `SecureToken` expira em 60 minutos. Implemente renovação automática: se qualquer chamada retornar erro de autenticação, refaça o login silenciosamente.
</Warning>

### Opção 1: Token por E-mail (Challenge)

**O que é:** Autenticação universal via código de verificação enviado por e-mail. O consumidor informa o e-mail, recebe um código de 6 dígitos e valida para obter o `SecureToken`.

**Quando usar:** Ideal para **qualquer plataforma** — lojas próprias, apps mobile, plataformas sem integração nativa, ou quando você quer uma autenticação independente de plataforma de e-commerce.

**Onde exibir:** Tela de login visível com dois passos:

1. **Campo de e-mail** → consumidor digita o e-mail e clica em "Enviar código"
2. **Campo de código** (estilo OTP) → consumidor digita o código de 6 dígitos recebido no e-mail

**Fluxo:**

1. Chame `POST /account/challenge` com o e-mail do consumidor → um código é enviado ao e-mail
2. Chame `POST /account/validatechallenge` com o e-mail + código → receba o `SecureToken`

**APIs:** [`POST /account/challenge`](/api-widget/01-authentication) + [`POST /account/validatechallenge`](/api-widget/01-authentication)

<Warning>
  O código de verificação expira em **10 minutos**. Se expirar, solicite um novo código refazendo a etapa 1.
</Warning>

### Opção 2: Via Plataforma (Wake e VTEX)

**O que é:** Autenticação transparente que usa a sessão que o consumidor **já tem** na plataforma de e-commerce. Não exige interação do usuário — acontece em background.

**Quando usar:** Quando sua loja roda em **VTEX** ou **Wake** e o consumidor já está logado na plataforma. A autenticação é automática e silenciosa.

**Onde exibir:** Não é uma tela visível. A autenticação deve acontecer **automaticamente em background** assim que o consumidor acessar a área de fidelidade. Se falhar (consumidor não está logado na plataforma), exiba: "Faça login na loja para acessar seus pontos".

| Plataforma | API                                                                | Dados necessários                              |
| ---------- | ------------------------------------------------------------------ | ---------------------------------------------- |
| **VTEX**   | [`POST /vendors/vtex/securelogin`](/api-widget/01-authentication)  | `sessionToken` + `segmentToken` da sessão VTEX |
| **Wake**   | [`POST /vendors/fbits/securelogin`](/api-widget/01-authentication) | Token de sessão do consumidor na Wake          |

**Como funciona:** A API da BonifiQ consulta a plataforma usando os tokens de sessão do consumidor para validar a identidade. Se o consumidor estiver logado na plataforma, o login seguro é bem-sucedido e retorna o `SecureToken`.

***

## Informações do Cliente

### Saldo de Pontos

**O que é:** O número de pontos (ou valor em cashback) que o consumidor tem disponível.

**Quando usar:** Em **toda tela** que envolva fidelidade. O saldo é a informação mais importante — é o que motiva o consumidor a engajar.

**Onde exibir:**

* **Tela inicial** do widget: destaque principal
* **Header** de navegação: sempre visível
* **Checkout**: ao lado das opções de resgate
* **Push notifications**: "Você tem 1.500 pontos! Resgate agora"

**API:** [`GET /customer/points`](/api-widget/02-customer) (saldo rápido) ou [`GET /customer/info`](/api-widget/02-customer) (saldo + dados completos)

<img src="https://mintcdn.com/bonifiq/0iGFX-naJYUQM5gx/images/widget-custom/02-card-saldo-pontos.jpg?fit=max&auto=format&n=0iGFX-naJYUQM5gx&q=85&s=2355b9d2c14caf4fe48f961270bf0509" alt="Card de saldo de pontos" width="1376" height="768" data-path="images/widget-custom/02-card-saldo-pontos.jpg" />

### Informações Completas

**O que é:** Dados do consumidor no programa: nome, saldo, nível/tier atual, data do último ponto.

**Quando usar:** Na **tela inicial/home** do widget para dar ao cliente uma visão geral completa do status dele.

**Onde exibir:** Tela principal de fidelidade, cabeçalho do perfil.

**API:** [`GET /customer/info`](/api-widget/02-customer)

***

## Histórico de Pontos

**O que é:** Extrato completo de todas as movimentações de pontos — ganhos, gastos, expirados.

**Quando usar:** Quando o consumidor quer **entender de onde vieram seus pontos** e como os usou. É essencial para **transparência e confiança** no programa.

**Onde exibir:**

* Aba "Extrato" ou "Histórico" no widget
* Tela dedicada acessível a partir da home
* Similar ao extrato bancário — lista paginada com data, descrição e valor

**Por que é importante:** Consumidores que entendem como ganham pontos tendem a engajar mais. Se ele vê "Compra #123: +150 pontos", entende a relação entre comprar e ganhar.

**API:** [`GET /customer/history?page={n}`](/api-widget/02-customer)

<img src="https://mintcdn.com/bonifiq/68jMbmNWUvNtB2wZ/images/widget-custom/03-extrato-pontos.jpg?fit=max&auto=format&n=68jMbmNWUvNtB2wZ&q=85&s=c75de6b8d146e2c8cbecf47e83f0ceae" alt="Extrato de pontos" width="768" height="1376" data-path="images/widget-custom/03-extrato-pontos.jpg" />

### Pontos a Expirar

**O que é:** Lista de lotes de pontos com data de expiração próxima.

**Quando usar:** Para criar **urgência** e incentivar o resgate antes da expiração.

**Onde exibir:**

* Banner de alerta na home: "⚠️ 200 pontos expiram em 15 dias!"
* Push notification / email de lembrete
* Badge no ícone do widget

**Por que é importante:** É uma das maiores alavancas de conversão. Consumidores resgatam muito mais quando sabem que vão perder pontos.

**API:** [`GET /customer/expiringpoints`](/api-widget/02-customer)

***

## Níveis / Tiers

**O que é:** Sistema de progressão onde o consumidor sobe de nível conforme acumula pontos ou compras, desbloqueando benefícios melhores.

**Quando usar:** Apenas se o programa da loja **tem tiers configurados**. Verifique com o lojista.

**Onde exibir:**

* **Home**: badge com nível atual + barra de progresso até o próximo
* **Tela dedicada**: lista de todos os níveis com benefícios de cada um
* **Mensagem motivacional**: "Faltam 300 pontos para Ouro!"

**Por que é importante:** Tiers criam **aspiração**. O consumidor não quer apenas resgatar — ele quer **subir de nível**. Isso aumenta frequência de compra e ticket médio.

**API:** [`GET /tiers`](/api-widget/07-tiers) (lista todos os níveis) + [`GET /customer/info`](/api-widget/02-customer) (nível atual no campo `CurrentTier`)

<img src="https://mintcdn.com/bonifiq/68jMbmNWUvNtB2wZ/images/widget-custom/04-niveis-tiers.jpg?fit=max&auto=format&n=68jMbmNWUvNtB2wZ&q=85&s=85324493e79fc84e378303abfc4bfb40" alt="Componente de níveis e tiers" width="768" height="1376" data-path="images/widget-custom/04-niveis-tiers.jpg" />

***

## Recompensas

**O que é:** Prêmios que o consumidor pode trocar por seus pontos — cupons de desconto, frete grátis, cashback, recompensas customizadas.

**Quando usar:** É o **coração do programa**. Sem recompensas, não há motivo para acumular pontos.

**Onde exibir:**

* Aba "Recompensas" no widget — a mais acessada
* Destaque na home: "3 recompensas disponíveis!"
* Checkout: recompensas que se aplicam ao carrinho

### Tipos de Recompensa e Quando Usar Cada Um

| Tipo             | O que é                                | Quando Exibir     | Exemplo                               |
| ---------------- | -------------------------------------- | ----------------- | ------------------------------------- |
| **Desconto %**   | Cupom de desconto percentual           | Widget + Checkout | "10% de desconto por 100 pontos"      |
| **Desconto R\$** | Cupom de desconto em valor fixo        | Widget + Checkout | "R\$ 20 OFF por 200 pontos"           |
| **Frete Grátis** | Cupom de frete grátis                  | Widget + Checkout | "Frete grátis por 150 pontos"         |
| **Cashback**     | Conversão de pontos em saldo monetário | Widget + Checkout | "Converter pontos em cashback"        |
| **Customizada**  | Qualquer prêmio definido pela loja     | Widget            | "Brinde exclusivo", "Experiência VIP" |

### Elegibilidade

Cada recompensa retorna `CanUse` (boolean) e `UseReason` (motivo). Use isso para **comunicar claramente** ao consumidor:

| UseReason | O que significa               | Como comunicar                       |
| --------- | ----------------------------- | ------------------------------------ |
| 0         | Disponível                    | Botão "Resgatar" habilitado          |
| 1         | Pontos insuficientes          | "Faltam X pontos"                    |
| 2         | Valor mínimo não atingido     | "Válido para compras acima de R\$ X" |
| 5         | Recompensa maior que a compra | "Adicione mais itens ao carrinho"    |
| 7         | Cliente não cadastrado        | "Cadastre-se no programa"            |

**Regra de ouro:** Nunca esconda recompensas que o cliente não pode usar. Mostre-as **desabilitadas com o motivo** — isso cria aspiração ("preciso de mais 50 pontos!").

**APIs:**

* [`GET /rewards`](/api-widget/03-rewards) — listar recompensas (widget)
* [`GET /rewards/checkout?purchaseValue={valor}`](/api-widget/04-rewards-checkout) — listar para o checkout (filtra por valor do carrinho)
* [`POST /rewards/redeem/{id}`](/api-widget/03-rewards) — resgatar
* [`GET /rewards/redeemed`](/api-widget/03-rewards) — cupons já resgatados mas não utilizados

### Fluxo de Resgate

<img src="https://mintcdn.com/bonifiq/68jMbmNWUvNtB2wZ/images/widget-custom/05-fluxo-resgate.jpg?fit=max&auto=format&n=68jMbmNWUvNtB2wZ&q=85&s=a30337d1b1e315f2843812ff4bb7f8b0" alt="Fluxo de resgate de recompensas" width="1376" height="768" data-path="images/widget-custom/05-fluxo-resgate.jpg" />

### Recompensas já Resgatadas

**O que é:** Cupons que o consumidor já trocou por pontos mas **ainda não usou** em uma compra.

**Quando usar:** Para lembrar o consumidor que ele tem cupons pendentes. É comum o consumidor resgatar e esquecer de usar.

**Onde exibir:**

* Seção "Meus Cupons" ou "Carteira" no widget
* Lembrete no checkout: "Você tem um cupom de R\$ 10 disponível!"
* Push notification: "Seu cupom expira em 3 dias"

**API:** [`GET /rewards/redeemed`](/api-widget/03-rewards)

***

## Cashback

**O que é:** Modelo onde o consumidor acumula saldo em reais (não em pontos) e pode usar esse saldo como desconto em compras futuras.

**Quando usar:** Apenas se o programa **usa cashback** (verifique `UseCashback` na configuração do checkout).

**Onde exibir:**

* **Home**: "Saldo de cashback: R\$ 25,00"
* **Checkout**: componente de aplicação de cashback (ver [guia de checkout](/guias/vtex-cashback-checkout))

**Diferença entre pontos e cashback:**

* **Pontos**: consumidor troca por recompensas pré-definidas (cupom de 10%, R\$ 20 OFF)
* **Cashback**: consumidor escolhe o valor que quer usar (de R\$ 1 até o máximo permitido)

**Por que alguns programas preferem cashback:** É mais simples para o consumidor entender ("você tem R\$ 25 para usar") e dá mais flexibilidade (ele escolhe quanto usar).

**APIs de cashback:** Veja o [guia completo de checkout e cashback](/guias/vtex-cashback-checkout).

***

## Objetivos (Missões)

**O que é:** Ações que o consumidor pode realizar para ganhar pontos além de compras — indicar amigos, avaliar produtos, seguir redes sociais, responder quizzes.

**Quando usar:** Para **engajar** o consumidor fora do momento de compra. Missões mantêm o consumidor ativo no programa entre compras.

**Por que é importante:** Programas com missões têm 3x mais engajamento que programas só com compras. Cada missão cria um motivo para o consumidor voltar ao seu site/app.

**Onde exibir:** Aba "Missões" ou "Ganhar Pontos" — geralmente a segunda aba mais importante depois de Recompensas.

**API:** [`GET /objectives`](/api-widget/06-objectives)

### Tipos de Missão e Quando Usar

#### 🛒 Compra (Purchase)

**O que resolve:** Mostra ao consumidor **quanto ele ganha por comprar**. É informativo — os pontos são creditados automaticamente.

**Onde exibir:** Na lista de missões + no checkout ("Você ganhará 150 pontos nesta compra").

**Interação:** Não tem ação do usuário. É apenas informativo.

#### 🎂 Aniversário (Birthday)

**O que resolve:** Cria um **vínculo emocional** com o consumidor. Ele se sente valorizado ao receber um bônus no aniversário.

**Onde exibir:** Na lista de missões. A tela muda conforme o estado:

* **Não cadastrado** → Formulário para cadastrar data (DD/MM)
* **Cadastrado, fora do período** → "Seu bônus estará disponível em {mês}"
* **Bônus disponível** → Botão de resgatar com destaque
* **Já resgatado** → Card marcado como concluído

**Cuidado:** A data só pode ser cadastrada **uma vez**. Deixe isso claro na interface.

**API:** [`POST /customer/setbirthday?birthday={data}`](/api-widget/02-customer) + campo `BenefitStatus` do objetivo

#### 👥 Indicação (Referral)

**O que resolve:** Transforma o consumidor em **promotor da marca**. É a forma mais barata de aquisição de novos clientes.

**Onde exibir:** Na lista de missões. Ao clicar, abrir tela com:

* Campo para digitar email do amigo
* Botão de compartilhar via WhatsApp (usar `WhatsAppShareText`)
* Botão de copiar link
* Lista de indicações enviadas e status

**Por que é poderoso:** O consumidor indicado já chega com confiança (recomendação de amigo), e quem indicou ganha pontos. Todo mundo ganha.

**APIs:**

* [`POST /objectives/referral/refer`](/api-widget/06-objectives) — indicar por email
* [`POST /objectives/referral/friend`](/api-widget/06-objectives) — gerar link
* [`POST /objectives/referral/coupon`](/api-widget/06-objectives) — gerar cupom pro amigo
* [`GET /objectives/referral/sent`](/api-widget/06-objectives) — ver indicações enviadas

#### ⭐ Avaliação (Review)

**O que resolve:** Gera **prova social** para a loja (reviews) e engaja o consumidor com pontos extras.

**Onde exibir:** Na lista de missões. Pode ter pontuação extra por comentário e foto:

* Pontos base pela avaliação
* `+X` pontos por deixar comentário (`HasCommentPoint`)
* `+X` pontos por enviar foto (`HasPhotoPoint`)

**Interação:** Ao clicar, redirecionar para a URL de avaliação ([`GET /objectives/review/urls`](/api-widget/06-objectives)).

#### 📱 Redes Sociais (Social)

**O que resolve:** Aumenta **seguidores** da loja nas redes sociais.

**Onde exibir:** Na lista de missões, com ícone da rede social correspondente (Instagram, Facebook, LinkedIn, TikTok).

**Interação:** Ao clicar, abrir o perfil da loja na rede social em nova aba/app. Quando o consumidor voltar, registrar o follow via [`POST /objectives/createpointsfollowsocialmedia`](/api-widget/06-objectives).

<Note>
  A plataforma confia que o consumidor realmente seguiu. Não há verificação automática.
</Note>

#### 📝 Quiz

**O que resolve:** Coleta **dados qualitativos** do consumidor (preferências, feedback) enquanto engaja com pontos.

**Onde exibir:** Na lista de missões/objetivos, misturado com os outros tipos. Ao clicar, abrir tela de perguntas estilo wizard (uma por vez, com barra de progresso).

**Tipos de pergunta:**

* **Seleção única** — radio buttons
* **Múltipla escolha** — checkboxes
* **Resposta aberta** — campo de texto

**APIs:** [`GET /quiz`](/api-widget/08-quiz) (listar) → [`GET /quiz/{uid}`](/api-widget/08-quiz) (perguntas) → [`POST /answer`](/api-widget/08-quiz) (responder)

#### 🎯 Customizado (Custom)

**O que resolve:** Permite que a loja crie **qualquer tipo de missão** personalizada.

**Onde exibir:** Na lista de missões, com ícone customizado (`CustomIcon`) e botão de ação (`ActionButtonText`).

**Interação:** Ao clicar, redirecionar para `ActionButtonURL`. Pode ser qualquer coisa: participar de evento, preencher formulário, baixar app.

***

## Regulamento (Terms)

**O que é:** Texto legal do programa de fidelidade — regras, condições de uso, política de privacidade, como funciona o acúmulo e resgate.

**Quando usar:** É **obrigatório** em qualquer programa de fidelidade. O regulamento protege juridicamente tanto a loja quanto o consumidor.

**Onde exibir:**

* **Link no rodapé** do widget: "Regulamento do Programa"
* **Tela dedicada** com scroll, acessível a qualquer momento
* **Durante o cadastro**: "Ao participar, você concorda com o \[regulamento]"
* **Antes de resgatar** (opcional): link discreto nas regras da recompensa

**Por que é importante:**

* Exigência legal para programas de fidelidade
* O consumidor deve ter acesso fácil às regras
* Evita disputas sobre como funciona o programa

**API:** [`GET /terms`](/api-widget/10-terms)

**O que você recebe:**

* `Content` — HTML do regulamento, pronto para renderizar

<img src="https://mintcdn.com/bonifiq/68jMbmNWUvNtB2wZ/images/widget-custom/06-regulamento-terms.jpg?fit=max&auto=format&n=68jMbmNWUvNtB2wZ&q=85&s=55c7874833858c6196f04f0a05648329" alt="Exemplo de tela de regulamento" width="768" height="1376" data-path="images/widget-custom/06-regulamento-terms.jpg" />

***

## Configuração do Checkout

**O que é:** Informações sobre como o programa funciona no checkout — cores, nome, se usa pontos ou cashback.

**Quando usar:** Para **configurar visualmente** o componente de fidelidade no checkout da loja.

**Onde exibir:** No checkout, para estilizar o componente de fidelidade com as cores e textos do programa.

**Campos importantes:**

* `ProgramName` — nome para exibir ("Programa Fidelidade")
* `Color` — cor principal para botões e destaques
* `UseCashback` / `UsePoints` — determina qual fluxo exibir
* `Active` — se `false`, não exibir nada no checkout

**API:** [`GET /rewards/checkout/configuration`](/api-widget/04-rewards-checkout)

***

## Afiliados

**O que é:** Informações sobre o programa de afiliados — histórico de comissões e vendas geradas pelo consumidor como afiliado.

**Quando usar:** Apenas se a loja **tem programa de afiliados** configurado. Não é comum em todos os programas.

**Onde exibir:** Seção separada "Meus Ganhos como Afiliado" — disponível apenas para consumidores que são afiliados (`IsAffiliate = true` em `/customer/info`).

**API:** [`GET /affiliate/infohistory`](/api-widget/09-affiliate)

***

## Configuração Técnica

### Setup do Cliente HTTP

Nem toda requisição precisa dos dois headers:

| Header             | Quando                             | Descrição                     |
| ------------------ | ---------------------------------- | ----------------------------- |
| `X-BQ-Tenant`      | **Sempre**                         | Identificador público da loja |
| `X-BQ-SecureToken` | **Somente endpoints autenticados** | Token do consumidor (60min)   |

<CodeGroup>
  ```javascript JavaScript (Axios) theme={null}
  const bonifiqApi = axios.create({
    baseURL: 'https://api.bonifiq.com.br/pub/widget',
    headers: { 'X-BQ-Tenant': 'SUA_TENANT_KEY' }
  });

  // Após login seguro, adicionar o SecureToken
  bonifiqApi.defaults.headers['X-BQ-SecureToken'] = customer.SecureToken;
  ```

  ```swift Swift (iOS) theme={null}
  var request = URLRequest(url: URL(string: "https://api.bonifiq.com.br/pub/widget/...")!)
  request.setValue("SUA_TENANT_KEY", forHTTPHeaderField: "X-BQ-Tenant")
  request.setValue(secureToken, forHTTPHeaderField: "X-BQ-SecureToken")
  ```

  ```kotlin Kotlin (Android) theme={null}
  val request = Request.Builder()
      .url("https://api.bonifiq.com.br/pub/widget/...")
      .addHeader("X-BQ-Tenant", "SUA_TENANT_KEY")
      .addHeader("X-BQ-SecureToken", secureToken)
      .build()
  ```
</CodeGroup>

### Tratamento de Erros

Todas as respostas seguem o mesmo formato. Use `HasError` para determinar sucesso/falha:

```json theme={null}
{
  "HasError": false,    // true = erro
  "Message": null,      // mensagem de erro quando HasError = true
  "Item": { ... }       // dados da resposta
}
```

**Cenários de erro comuns:**

| Cenário              | Como detectar                  | O que fazer                            |
| -------------------- | ------------------------------ | -------------------------------------- |
| Token expirado       | Status 401 ou `HasError: true` | Refazer login silenciosamente          |
| Pontos insuficientes | `UseReason = 1`                | Mostrar "Faltam X pontos"              |
| Programa inativo     | `Active = false`               | Não exibir componente de fidelidade    |
| Erro de rede         | Timeout / erro HTTP            | Exibir "Tente novamente" + botão retry |

### Estados de Interface

Toda tela deve considerar estes estados:

| Estado              | Quando               | O que exibir                                     |
| ------------------- | -------------------- | ------------------------------------------------ |
| **Loading**         | Aguardando API       | Skeleton/shimmer nos cards                       |
| **Sucesso**         | Dados carregados     | Conteúdo normal                                  |
| **Lista vazia**     | `Item` é array vazio | "Nenhuma recompensa disponível" (com ilustração) |
| **Erro**            | `HasError = true`    | Mensagem de erro + botão "Tentar novamente"      |
| **Não autenticado** | Sem SecureToken      | "Faça login para ver seus pontos"                |

***

## Estrutura de Navegação Recomendada

<img src="https://mintcdn.com/bonifiq/68jMbmNWUvNtB2wZ/images/widget-custom/07-navegacao-recomendada.jpg?fit=max&auto=format&n=68jMbmNWUvNtB2wZ&q=85&s=d79e4656530f414b6c3fca01f0cc615f" alt="Estrutura de navegacao recomendada" width="1376" height="768" data-path="images/widget-custom/07-navegacao-recomendada.jpg" />

| Seção           | O que mostra                 | APIs                                                                                                       |
| --------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------- |
| **Home**        | Saldo + alertas + atalhos    | [`GET /customer/info`](/api-widget/02-customer), [`GET /customer/expiringpoints`](/api-widget/02-customer) |
| **Missões**     | Formas de ganhar pontos      | [`GET /objectives`](/api-widget/06-objectives), [`GET /quiz`](/api-widget/08-quiz)                         |
| **Recompensas** | Formas de gastar pontos      | [`GET /rewards`](/api-widget/03-rewards)                                                                   |
| **Carteira**    | Cupons resgatados não usados | [`GET /rewards/redeemed`](/api-widget/03-rewards)                                                          |
| **Extrato**     | Histórico de movimentações   | [`GET /customer/history`](/api-widget/02-customer)                                                         |
| **Níveis**      | Progressão do consumidor     | [`GET /tiers`](/api-widget/07-tiers)                                                                       |
| **Regulamento** | Regras do programa           | [`GET /terms`](/api-widget/10-terms)                                                                       |

***

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Checkout e Cashback" icon="cart-shopping" href="/guias/vtex-cashback-checkout">
    Integre recompensas e cashback no checkout
  </Card>

  <Card title="Quando Usar Cada API" icon="map" href="/guias/quando-usar">
    Entenda a diferença entre API Widget, Pública, Privada e Webhooks
  </Card>

  <Card title="Referência da API Widget" icon="book" href="/api-widget/00-introduction">
    Documentação completa de todos os endpoints
  </Card>

  <Card title="Webhooks" icon="webhook" href="/webhooks/01-introducao">
    Receba notificações em tempo real
  </Card>
</CardGroup>
