> ## 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.

# Quiz

> Endpoints para gerenciar quizzes e enquetes do programa de fidelidade

Os endpoints de quiz permitem listar quizzes disponíveis e registrar respostas do cliente para ganhar pontos.

## Status de Autenticação dos Endpoints

| Endpoint                     | Status      |
| ---------------------------- | ----------- |
| `GET /pub/widget/quiz`       | Público     |
| `GET /pub/widget/quiz/{uid}` | Público     |
| `POST /pub/widget/answer`    | Autenticado |

***

## Listar Quizzes Disponíveis

Retorna todos os quizzes disponíveis para o cliente.

### Requisição

`GET /pub/widget/quiz`

**Headers**

<ParamField header="X-Bq-Tenant" type="string" required>
  Identificador público da loja.
</ParamField>

### Exemplo

```bash theme={null}
curl -X GET "https://api.bonifiq.com.br/pub/widget/quiz" \
  -H "X-Bq-Tenant: {tenant_key}"
```

### Resposta

```json theme={null}
{
  "HasError": false,
  "Message": null,
  "Item": [
    {
      "Uid": "quiz-001",
      "Title": "Conheça nossos produtos",
      "Description": "Responda o quiz e ganhe 100 pontos!",
      "Points": 100,
      "Questions": 5,
      "Completed": false,
      "ExpirationDate": "2025-03-01"
    },
    {
      "Uid": "quiz-002",
      "Title": "Pesquisa de satisfação",
      "Description": "Sua opinião vale 50 pontos!",
      "Points": 50,
      "Questions": 3,
      "Completed": true,
      "ExpirationDate": null
    }
  ]
}
```

***

## Obter Quiz Específico

Retorna os detalhes e perguntas de um quiz específico.

### Requisição

`GET /pub/widget/quiz/{uid}`

**Headers**

<ParamField header="X-Bq-Tenant" type="string" required>
  Identificador público da loja.
</ParamField>

**Path Parameters**

<ParamField path="uid" type="string" required>
  Identificador único do quiz.
</ParamField>

### Exemplo

```bash theme={null}
curl -X GET "https://api.bonifiq.com.br/pub/widget/quiz/quiz-001" \
  -H "X-Bq-Tenant: {tenant_key}"
```

### Resposta

```json theme={null}
{
  "HasError": false,
  "Message": null,
  "Item": {
    "Uid": "quiz-001",
    "Title": "Conheça nossos produtos",
    "Description": "Responda o quiz e ganhe 100 pontos!",
    "Points": 100,
    "Completed": false,
    "Questions": [
      {
        "Id": 1,
        "Text": "Qual é o principal benefício do nosso produto X?",
        "Type": "SingleChoice",
        "Options": [
          { "Id": 1, "Text": "Economia" },
          { "Id": 2, "Text": "Praticidade" },
          { "Id": 3, "Text": "Qualidade" },
          { "Id": 4, "Text": "Todas as anteriores" }
        ]
      },
      {
        "Id": 2,
        "Text": "Você já experimentou nosso produto Y?",
        "Type": "SingleChoice",
        "Options": [
          { "Id": 1, "Text": "Sim" },
          { "Id": 2, "Text": "Não" },
          { "Id": 3, "Text": "Pretendo experimentar" }
        ]
      },
      {
        "Id": 3,
        "Text": "O que você mais gosta na nossa marca?",
        "Type": "Text",
        "Options": []
      }
    ]
  }
}
```

***

## Responder Quiz

Envia as respostas do cliente para um quiz.

### Requisição

`POST /pub/widget/answer`

**Headers**

<ParamField header="X-Bq-Tenant" type="string" required>
  Identificador público da loja.
</ParamField>

<ParamField header="X-Bq-SecureToken" type="string" required>
  Token do usuário obtido no login seguro.
</ParamField>

**Body**

Array de respostas:

<ParamField body="QuizUid" type="string" required>
  Identificador único do quiz.
</ParamField>

<ParamField body="QuestionId" type="integer" required>
  ID da pergunta sendo respondida.
</ParamField>

<ParamField body="OptionId" type="integer">
  ID da opção selecionada (para perguntas de múltipla escolha).
</ParamField>

<ParamField body="TextAnswer" type="string">
  Resposta em texto (para perguntas abertas).
</ParamField>

### Exemplo

```bash theme={null}
curl -X POST "https://api.bonifiq.com.br/pub/widget/answer" \
  -H "X-Bq-Tenant: {tenant_key}" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "QuizUid": "quiz-001",
      "QuestionId": 1,
      "OptionId": 4
    },
    {
      "QuizUid": "quiz-001",
      "QuestionId": 2,
      "OptionId": 1
    },
    {
      "QuizUid": "quiz-001",
      "QuestionId": 3,
      "TextAnswer": "A qualidade dos produtos e o atendimento"
    }
  ]'
```

### Resposta

```json theme={null}
{
  "HasError": false,
  "Message": null,
  "Item": [
    {
      "Uid": "quiz-001",
      "Title": "Conheça nossos produtos",
      "Completed": true,
      "PointsEarned": 100
    }
  ]
}
```

<Note>
  Para crédito correto de pontos no `POST /pub/widget/answer`, envie identificação de cliente (ex.: `X-Bq-SecureToken`).
</Note>

<Note>
  Após responder todas as perguntas de um quiz, os pontos são creditados automaticamente na conta do cliente.
</Note>
