Skip to content
Snippets Groups Projects

# Documentation API : Créer un Quiz

## Endpoint

**POST** `/quiz/create`

## Description

Cet endpoint permet de créer un nouveau quiz et retourne ses détails, y compris les questions, les réponses et les métadonnées associées.

Corps de la requête

Champ Type Requis Description
amount number Oui Nombre de questions dans le quiz.
category number Oui ID de la catégorie des questions.
difficulty string Oui Niveau de difficulté (easy, medium, hard).

Exemple de requête

{
  "amount": 5,
  "category": 22,
  "difficulty": "easy"
}

Corps de la réponse

Champ Type Description
id number Identifiant unique du quiz.
codeQuiz string Code unique identifiant le quiz.
score number Score actuel du quiz.
questionIndex number Index de la question actuelle (commence à 1).
questionCount number Nombre total de questions dans le quiz.
theme objet Thème associé au quiz.
- id number Identifiant unique du thème.
- name string Nom du thème.
difficulty objet Niveau de difficulté du quiz.
- id number Identifiant unique du niveau de difficulté.
- name string Nom du niveau de difficulté.
questions tableau d'objets Liste des questions du quiz.
- id number Identifiant unique de la question.
- text string Texte de la question.
- type string Type de la question (multiple, boolean).
- order number Ordre de la question dans le quiz.
- theme objet Thème de la question.
--- id number Identifiant unique du thème.
--- name string Nom du thème.
- answers tableau d'objets Liste des réponses possibles pour la question.
--- id number Identifiant unique de la réponse.
--- text string Texte de la réponse.

Exemple de réponse

{
  "id": 1,
  "codeQuiz": "1IRCXV",
  "score": 0,
  "questionIndex": 1,
  "questionCount": 5,
  "theme": {
    "id": 1,
    "name": "Geography"
  },
  "difficulty": {
    "id": 1,
    "name": "easy"
  },
  "questions": [
    {
      "id": 5,
      "text": "Quelle est la langue officielle du Costa Rica ?",
      "type": "multiple",
      "order": 1,
      "theme": {
        "id": 1,
        "name": "Geography"
      },
      "answers": [
        {
          "id": 13,
          "text": "Espagnol"
        },
        {
          "id": 14,
          "text": "Anglais"
        },
        {
          "id": 15,
          "text": "Portugais"
        },
        {
          "id": 16,
          "text": "Créole"
        }
      ]
    },
    {
      "id": 4,
      "text": "Toronto est la capitale du Canada.",
      "type": "boolean",
      "order": 2,
      "theme": {
        "id": 1,
        "name": "Geography"
      },
      "answers": [
        {
          "id": 11,
          "text": "Faux"
        },
        {
          "id": 12,
          "text": "Vrai"
        }
      ]
    }
  ]
}

Notes

  • Assurez-vous que les valeurs de category et difficulty correspondent aux valeurs valides fournies par l'API. Les entrées invalides renverront une erreur.
  • Le champ order dans le tableau questions indique l'ordre des questions dans le quiz.

Voici la documentation pour la route POST /quiz/answer :


Documentation API : Répondre à une Question

Endpoint

POST /quiz/answer

Description

Cet endpoint permet de vérifier si une réponse donnée est correcte, de mettre à jour le score du quiz, d'incrémenter l'index de la question actuelle, et de retourner les réponses à la question ainsi que le score actuel.


Corps de la requête

Champ Type Requis Description
codeQuiz string Oui Code unique identifiant le quiz.
questionID number Oui Identifiant unique de la question.
answerID number Oui Identifiant unique de la réponse.

Exemple de requête

{
  "codeQuiz": "1IRCXV",
  "questionID": 4,
  "answerID": 12
}

Corps de la réponse

Champ Type Description
score number Score actuel du quiz après mise à jour.
answers tableau d'objets Liste des réponses associées à la question.
- id number Identifiant unique de la réponse.
- text string Texte de la réponse.
- isCorrect boolean Indique si la réponse est correcte ou non.
- questionId number Identifiant de la question associée.

Exemple de réponse

{
  "score": 3,
  "answers": [
    {
      "id": 11,
      "text": "False",
      "isCorrect": false,
      "questionId": 4
    },
    {
      "id": 12,
      "text": "True",
      "isCorrect": true,
      "questionId": 4
    }
  ]
}

Fonctionnement

  1. Vérifie si la réponse donnée (via answerID) est correcte en se basant sur la question (questionID) et le quiz (codeQuiz).
  2. Si la réponse est correcte, incrémente le score du quiz.
  3. Incrémente l'index de la question actuelle dans le quiz.
  4. Récupère les réponses à la question spécifiée.
  5. Retourne un objet contenant le score actuel et les réponses à la question.

Notes

  • Le champ isCorrect dans les réponses permet d’identifier quelle réponse est correcte.
  • Si la réponse donnée est incorrecte, seul l'index de la question est incrémenté, le score reste inchangé.
  • Le code unique codeQuiz doit correspondre à un quiz existant.

Voici la documentation pour la route POST /quiz/remaining :


Documentation API : Questions restantes pour un quiz

Endpoint

POST /quiz/remaining

Description

Cet endpoint renvoie les questions restantes d’un quiz en fonction de l’index actuel de la question (questionIndex). Les questions précédentes ne sont pas incluses, et les réponses ne contiennent pas le champ isCorrect.


Corps de la requête

Champ Type Requis Description
codeQuiz string Oui Code unique identifiant le quiz.

Exemple de requête

{
  "codeQuiz": "1IRCXV"
}

Corps de la réponse

Champ Type Description
id number Identifiant unique du quiz.
codeQuiz string Code unique du quiz.
score number Score actuel du quiz.
questionIndex number Index actuel de la question dans le quiz.
questionCount number Nombre total de questions dans le quiz.
theme objet Thème du quiz.
- id number Identifiant du thème.
- name string Nom du thème.
difficulty objet Niveau de difficulté du quiz.
- id number Identifiant du niveau de difficulté.
- name string Nom du niveau de difficulté.
questions tableau d'objets Liste des questions restantes dans le quiz.
- id number Identifiant unique de la question.
- text string Texte de la question.
- type string Type de la question (multiple ou boolean).
- order number Ordre de la question dans le quiz.
- theme objet Thème associé à la question.
-- id number Identifiant du thème.
-- name string Nom du thème.
- answers tableau d'objets Liste des réponses disponibles.
-- id number Identifiant unique de la réponse.
-- text string Texte de la réponse.

Exemple de réponse

{
  "id": 1,
  "codeQuiz": "1IRCXV",
  "score": 2,
  "questionIndex": 2,
  "questionCount": 5,
  "theme": {
    "id": 1,
    "name": "Geography"
  },
  "difficulty": {
    "id": 1,
    "name": "easy"
  },
  "questions": [
    {
      "id": 4,
      "text": "Toronto is the capital city of the North American country of Canada.",
      "type": "boolean",
      "order": 2,
      "theme": {
        "id": 1,
        "name": "Geography"
      },
      "answers": [
        {
          "id": 11,
          "text": "False"
        },
        {
          "id": 12,
          "text": "True"
        }
      ]
    },
    {
      "id": 3,
      "text": "Which of the following languages does NOT use the Latin alphabet?",
      "type": "multiple",
      "order": 3,
      "theme": {
        "id": 1,
        "name": "Geography"
      },
      "answers": [
        {
          "id": 7,
          "text": "Georgian"
        },
        {
          "id": 8,
          "text": "Turkish"
        },
        {
          "id": 9,
          "text": "Swahili"
        },
        {
          "id": 10,
          "text": "Vietnamese"
        }
      ]
    }
  ]
}

Fonctionnement

  1. Vérification du quiz : Récupère le quiz correspondant au codeQuiz.
  2. Filtrage des questions : Sélectionne les questions restantes en fonction de questionIndex.
  3. Exclusion de la propriété isCorrect : Toutes les réponses associées à une question sont renvoyées sans le champ isCorrect.
  4. Retourne le quiz modifié : Inclut les questions restantes avec leurs réponses simplifiées.

Notes

  • La route est conçue pour s'assurer que seules les questions restantes à jouer sont retournées, évitant de révéler des informations inutiles ou les questions déjà jouées.
  • Utile pour reprendre un quiz à un état sauvegardé.

Documentation API : Création Utilisateur

Endpoint

POST /user

Description

Cet endpoint permet de créer un nouvel utilisateur, avec des identifiants uniques.

Corps de la requête

Champ Type Requis Description
username string Oui Unique
email string Oui Unique
password string Oui

Exemple de requête

{
  "email": "arbre@gmail.com",
  "login": "yggdrasil",
  "password": "AAAHONMEMANGE"
}

Exemple de réponse

{
  "id": 1,
  "username": "yggdrasil",
  "email": "arbre@gmail.com"
}

Documentation API : Connexion Utilisateur

Endpoint

POST /auth/login

Description

Cet endpoint renvoie un cookie access_token permettant d'identifier l'utilisateur s'il renseigne ses identfifiants.


Corps de la requête

Champ Type Requis Description
login string Oui Nom d'utilisateur ou adresse e-mail
password string Oui Mot de passe

Exemple de requête

{
  "login": "yggdrasil",
  "password": "AAAHONMEMANGE"
}

Exemple de réponse

{
  "success": true
}

Documentation API : Infos Utilisateur

Endpoint

GET /user/:id

Description

Cet endpoint permet de récupérer les informations d'un utilisateur

Exemple de réponse

{
  "id": 1,
  "username": "yggdrasil",
  "email": "arbre@gmail.com"
}

Documentation API : Infos de l'utilisateur connecté

Endpoint

GET /user/me

Description

Cet endpoint renvoie les informations de l'utilisateur connecté, ou renvoie une erreur sinon.

Exemple de réponse

{
  "id": 1,
  "username": "yggdrasil",
  "email": "arbre@gmail.com"
}