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

# Listar Quizzes Disponíveis

> Retorna a lista de quizzes disponíveis para o usuário nos últimos 3 dias

## Descrição

Lista todos os quizzes disponíveis para recuperação de streak nos últimos 3 dias. Para cada quiz, indica se o usuário já fez uma tentativa e qual foi o resultado.

Este endpoint é usado para mostrar ao usuário quais dias ele pode tentar recuperar seu streak através do quiz.

## Headers

<ParamField header="Authorization" type="string" required>
  Token JWT do usuário autenticado

  Formato: `Bearer {token}`
</ParamField>

## Response

<ResponseField name="success" type="boolean" required>
  Indica se a operação foi bem-sucedida
</ResponseField>

<ResponseField name="data" type="object" required>
  <Expandable title="Dados da resposta">
    <ResponseField name="quizzes" type="array" required>
      Lista de quizzes disponíveis

      <Expandable title="Estrutura de cada quiz">
        <ResponseField name="id" type="string">
          ID único do quiz
        </ResponseField>

        <ResponseField name="title" type="string">
          Título do quiz
        </ResponseField>

        <ResponseField name="description" type="string">
          Descrição do quiz
        </ResponseField>

        <ResponseField name="quizDate" type="string">
          Data do quiz (formato `YYYY-MM-DD` para matinal, `YYYY-MM-DD-night` para noturna)
        </ResponseField>

        <ResponseField name="edition" type="string">
          Edição do quiz: `morning` (matinal) ou `night` (noturna)
        </ResponseField>

        <ResponseField name="postId" type="string">
          ID do post do Beehiiv relacionado
        </ResponseField>

        <ResponseField name="minCorrectAnswers" type="number">
          Mínimo de acertos para passar (padrão: 6)
        </ResponseField>

        <ResponseField name="alreadyAttempted" type="boolean">
          Se o usuário já tentou este quiz
        </ResponseField>

        <ResponseField name="attemptResult" type="object">
          Resultado da tentativa anterior (null se não tentou)

          <Expandable title="Resultado da tentativa">
            <ResponseField name="passed" type="boolean">
              Se passou no quiz
            </ResponseField>

            <ResponseField name="correctAnswers" type="number">
              Quantidade de acertos
            </ResponseField>

            <ResponseField name="streakRecovered" type="boolean">
              Se o streak foi recuperado
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="rules" type="object" required>
      Regras do sistema de quiz

      <Expandable title="Regras">
        <ResponseField name="maxDaysRecovery" type="number">
          Máximo de dias para recuperação (3)
        </ResponseField>

        <ResponseField name="minCorrectAnswers" type="number">
          Mínimo de acertos para passar (6)
        </ResponseField>

        <ResponseField name="totalQuestions" type="number">
          Total de perguntas por quiz (10)
        </ResponseField>

        <ResponseField name="attemptsPerQuiz" type="number">
          Tentativas permitidas por quiz (1)
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET https://worker.thenewscc.com/quiz/available \
    -H "Authorization: Bearer seu_token_jwt"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://worker.thenewscc.com/quiz/available', {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer seu_token_jwt'
    }
  });

  const data = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json Success theme={null}
  {
    "success": true,
    "data": {
      "quizzes": [
        {
          "id": "quiz_abc123",
          "title": "quiz do dia - 18/01/2026 as 5 notícias mais importantes",
          "description": "teste seus conhecimentos sobre a edição de hoje do the news! acerte 6 de 10 para recuperar seu streak.",
          "quizDate": "2026-01-18",
          "edition": "morning",
          "postId": "post_xyz789",
          "minCorrectAnswers": 6,
          "alreadyAttempted": false,
          "attemptResult": null
        },
        {
          "id": "quiz_ghi789",
          "title": "quiz da night - night #146",
          "description": "teste seus conhecimentos sobre a edição noturna do the news! acerte 6 de 10 para recuperar seu streak.",
          "quizDate": "2026-01-18-night",
          "edition": "night",
          "postId": "post_night123",
          "minCorrectAnswers": 6,
          "alreadyAttempted": false,
          "attemptResult": null
        },
        {
          "id": "quiz_def456",
          "title": "quiz do dia - 17/01/2026 as 5 notícias mais importantes",
          "description": "teste seus conhecimentos sobre a edição de hoje do the news! acerte 6 de 10 para recuperar seu streak.",
          "quizDate": "2026-01-17",
          "edition": "morning",
          "postId": "post_uvw456",
          "minCorrectAnswers": 6,
          "alreadyAttempted": true,
          "attemptResult": {
            "passed": true,
            "correctAnswers": 8,
            "streakRecovered": true
          }
        }
      ],
      "rules": {
        "maxDaysRecovery": 3,
        "minCorrectAnswers": 6,
        "totalQuestions": 10,
        "attemptsPerQuiz": 1
      }
    }
  }
  ```

  ```json Unauthorized theme={null}
  {
    "success": false,
    "message": "Token de autenticação inválido ou ausente"
  }
  ```
</ResponseExample>
