API – Exam

Menu

1. Dossiers / Questions

1.1. QuestionFolder

GET /api/question_folders

Description :

Récupère un ensemble de données sur les dossiers de questions présents dans le menu Evaluations > Questions.

Les Dossiers Tirage Au Sort (DTAS) ne sont pas concernés.

Paramètres d’entrée : 

title (string) : Chaine de caractères contenu dans le titre du/des dossiers

tags.name (string) : Chaine de caractères contenu dans le nom de l’/les étiquettes

createdAt[before] (string) : Dates inférieures ou égales pour lesquelles des dossiers ont été créés

createdAt[strictly_before] (string) : Dates strictement inférieures pour lesquelles des dossiers ont été créés

createdAt[after] (string) : Dates supérieures ou égales pour lesquelles des dossiers ont été créés

createdAt[strictly_after] (string) : Dates strictement supérieures pour lesquelles des dossiers ont été créés

archived (boolean) : Statut du dossier (archivé ou non)

page (integer) : 1 (Valeur par défaut)

Réponse : 

				
					{
...
  "hydra:member": [
    {
      "@id": "string", // Id du dossier
      "@type": "string", // Type de l'élément (=question_folders)
      "title": "string", // Titre du dossier
      "createdAt": "2023-08-21T13:28:26.171Z", // Date de création
      "type": "string", // Type de dossier (dl,dp,kfp,tcspool,lca)
      "independant": true, //True si le dossier est présent dans le menu Evaluations > Questions. Il est, par exemple, possible qu'il soit  créé dans une autoévaluation (False dans ce cas).
      "archived": true, // État d'archivage du dossier
      "status": 0, // Statut du dossier (Brouillon=0, Prêt à valider=1, Validé=2, Validé par la commisision=3, Visé par la scolarité=4, Obsolète=5)
      "weight": 0,
      "tags": [
        {
          "@id": "string", // Id de l'étiquette
          "@type": "string", // Type de l'élément (=Tag)
          "name": "string", // Nom de l'étiquette
          "category": "string" // Id de la catégorie de l'étiquette
        }
      ]
    }
  ],
...
}
				
			
GET /api/question_folders/{id}

Description :

Récupère un ensemble de données d’un dossier, dont la liste des questions présentes.

Les Dossiers Tirage Au Sort (DTAS) ne sont pas concernés.

Paramètres d’entrée : 

Id (string) : Identifiant du dossier.

Réponse : 

				
					{
  "@context": "string",
  "@id": "string", // Id du dossier
  "@type": "string", // Type de l'élément (=QuestionFolder)
  "introduction": [], // Elements qui composent l'introduction
  "folderQuestions": [
    {
      "@type": "string", // Type de l'élément (=FolderQuestionDto)
      "question": {
        "@id": "string", // Id de l'élément Question
        "@type": "string", // Type de l'élément (=Question)
        "title": "string", // Titre de la question
        "createdAt": "2024-08-12T14:38:20.421Z", // date et heure de création
        "type": "string", // Type de la question ("qrm", "qru", "textq" (QROC), "numeric", "listmatching" (ASSO), "qrp", "open_textq" (QROL), "zoning_question" (ZONE))
        "independant": true,
        "archived": true, // État d'archivage de la question
        "status": 0, // Statut du dossier (Brouillon=0, Prêt à valider=1, Validé=2, Validé par la commisision=3, Visé par la scolarité=4, Obsolète=5)
        "weight": 0,
        "tags": [
          {
            "@id": "string", // Id de l'étiquette
            "@type": "string", // Type de l'élément (=Tag)
            "name": "string",  // Nom de l'étiquette
            "category": "string" // Id de la catégorie de l'étiquette
          }
        ]
      },
      "position": 0,
      "obsoleteAt": "2024-08-12T14:38:20.421Z"
    }
  ],
  "title": "string", // Titre du dossier
  "createdAt": "2023-08-21T13:30:15.021Z", // Date de création
  "type": "string", // Type du dossier (dl,dp,kfp,tcspool,lca)
  "independant": true, //True si le dossier est présent dans le menu Evaluations > Questions. Il est, par exemple, possible qu'il soit  créé dans une autoévaluation (False dans ce cas).
  "archived": true, // État d'archivage du dossier
  "status": 0, // Statut du dossier (Brouillon=0, Prêt à valider=1, Validé=2, Validé par la commisision=3, Visé par la scolarité=4, Obsolète=5)
  "weight": 0,
  "tags": [
    {
      "@id": "string", // Id de l'étiquette
      "@type": "string", // Type de l'élément (=Tag)
      "name": "string", // Nom de l'étiquette
      "category": "string" // Id de la catégorie de l'étiquette
    }
  ]
}
```
				
			

1.2. RandomQuestionFolder

GET /api/random_question_folders

Description :

Récupère un ensemble de données sur les Dossiers Tirage Au Sort (DTAS) présents dans le menu Evaluations > Questions

Le DTAS est un dossier composé d’un ou plusieurs dossiers libres. L’objectif est de venir tirer au sort un certain nombre de questions dans chacun de ces dossiers libres.

Paramètres d’entrée : 

title (string) : Chaine de caractères contenu dans le titre du/des dossiers

tags.name (string) : Chaine de caractères contenu dans le nom de l’/les étiquettes

createdAt[before] (string) : Dates inférieures ou égales pour lesquelles des dossiers ont été créés

createdAt[strictly_before] (string) : Dates strictement inférieures pour lesquelles des dossiers ont été créés

createdAt[after] (string) : Dates supérieures ou égales pour lesquelles des dossiers ont été créés

createdAt[strictly_after] (string) : Dates strictement supérieures pour lesquelles des dossiers ont été créés

archived (boolean) : Statut du dossier (archivé ou non)

page (integer) : 1 (Valeur par défaut)

Réponse : 

				
					{
...
  "hydra:member": [
    {
      "@id": "string", // Id du dossier
      "@type": "string", // Type de l'a route'élément (=RandomQuestionFolder)
      "title": "string", // Titre du dossier
      "createdAt": "2023-08-21T13:59:52.577Z", // Date de création du dossier
      "type": "string", // Type de dossier (=rndpoolgroup)
      "independant": true, //True si le dossier est présent dans le menu Evaluations > Questions. Il est, par exemple, possible qu'il soit  créé dans une autoévaluation (False dans ce cas).
      "archived": true, // État d'archivage du dossier
      "status": 0, // Statut du dossier (Brouillon=0, Prêt à valider=1, Validé=2, Validé par la commisision=3, Visé par la scolarité=4, Obsolète=5)
      "weight": 0,
      "tags": [
        {
          "@id": "string", // Id de l'étiquette
          "@type": "string", // Type de l'élément (=Tag)
          "name": "string", // Nom de l'étiquette
          "category": "string" // Id de la catégorie de l'étiquette
        }
      ]
    }
  ],
...
}
				
			
GET /api/random_question_folders/{id}

Description :

Récupère un ensemble de données d’un Dossiers Tirage Au Sort (DTAS).

Le DTAS est un dossier composé d’un ou plusieurs dossiers libres. L’objectif est de venir tirer au sort un certain nombre de questions dans chacun de ces dossiers libres.

Paramètres : 

Id (string) : Identifiant du DTAS. Il est important de noter que l’identifiant correspond à celui renseigné sur la plateforme.

Réponse : 

				
					{
  "@context": "string",
  "@id": "string", // Id du dossier
  "@type": "string", // Type de la route
  "introduction": [],
  "folderQuestions": [
    {
		  "@id": "string", // Id du dossier libre
		  "@type": "string", // Type de l'élément (=RandomQuestionFolderQuestionFolder)
      "questionFolder": "string", // Identifiant du dossier libre au sein du DTAS
      "nbToPick": 0 // Nombre de questions piochées
    }
  ],
  "title": "string", // Titre du dossier
  "createdAt": "2023-08-21T13:59:00.387Z", // Date de création
  "type": "string", // Type de dossier (=rndpoolgroup)
  "independant": true, //True si le dossier est présent dans le menu Evaluations > Questions. Il est, par exemple, possible qu'il soit  créé dans une autoévaluation (False dans ce cas).
  "archived": true, // État d'archivage du dossier
  "status": 0, // Statut du dossier (Brouillon=0, Prêt à valider=1, Validé=2, Validé par la commisision=3, Visé par la scolarité=4, Obsolète=5)
  "weight": 0,
  "tags": [
    {
      "@id": "string", // Id de l'étiquette
      "@type": "string", // Type de l'élément (=Tag)
      "name": "string", // Nom de l'étiquette
      "category": "string" // Id de la catégorie de l'étiquette
    }
  ]
}
				
			

1.3. Question

GET /api/question

Description :

Récupère un ensemble de données concernant l’ensemble des questions

Paramètres : 

title (string) : Chaine de caractères contenu dans le titre de la/des questions

tags.name (string) : Chaine de caractères contenu dans le nom de l’/les étiquettes

createdAt[before] (string) : Dates inférieures ou égales pour lesquelles des questions ont été créés

createdAt[strictly_before] (string) : Dates strictement inférieures pour lesquelles des questions ont été créés

createdAt[after] (string) : Dates supérieures ou égales pour lesquelles des questions ont été créés

createdAt[strictly_after] (string) : Dates strictement supérieures pour lesquelles des questions ont été créés

archived (boolean) : Statut de la question (archivée ou non)

page (integer) : 1 (Valeur par défaut)

Réponse : 

				
					{
  "hydra:member": [
    {
      "@id": "string", // Id de la question
      "@type": "string", // Type de l'élément (=Question)
      "title": "string", // Titre de la question
      "createdAt": "2023-08-21T13:30:46.344Z", // Date de création de la question
      "type": "string", // Type de la question ("qrm", "qru", "textq" (QROC), "numeric", "listmatching" (ASSO), "qrp", "open_textq" (QROL), "zoning_question" (ZONE))
      "independant": true,
      "archived": true, // État d'archivage de la question
      "status": 0, // Statut du dossier (Brouillon=0, Prêt à valider=1, Validé=2, Validé par la commisision=3, Visé par la scolarité=4, Obsolète=5)
      "weight": null,
      "tags": [
        {
          "@id": "string", // Id de l'étiquette
          "@type": "string", // Type de l'élément (=Tag)
          "name": "string", // Nom de l'étiquette
          "category": "string" // Id de la catégorie de l'étiquette
        }
      ]
    }
  ],
...
}
				
			
GET /api/question/{id}

Description :

Récupère un ensemble données d’une question.

Paramètres : 

Id (string) : Identifiant de la question isolée. Il est important de noter que l’identifiant correspond à celui renseigné sur la plateforme.

Réponse : 

				
					{
  "@context": "string",
  "@id": "string", // Id de la question
  "@type": "string", // Type de l'élément (=Question)
  "statement": {
    "@type": "string", // Type de l'a route l'élément (=ContainerBlockDto)
    "@id": "string", // Id du ContainerBlockDto
    "textBlocks": [
      {
        "@type": "string", // Type de l'élément (=ContainerBlockDto)
        "@id": "string", // Id du bloc de texte
        "textContent": "string", // Contenu du bloc texte de l'enoncé
        "contentType": "string", // Type du contenu (=html)
        "position": 0 // Position du bloc
      }
    ],
    "imageBlocks": [
      {
        "@type": "string", // Type de l'élément (=ImageBlockDto)
        "@id": "string", // Id du bloc image
        "fileLink": {
          "@type": "string", // Type d'élément (=FileLinkDto)
          "@id": "string", // Id du fichier
          "fileUrl": "string" // URL du fichier utilisé
        },
        "position": 0 // Position du bloc
      }
    ],
    "videoBlocks": [
      {
        "@type": "string", // Type de l'élément (=VideoBlockDto)
        "@id": "string", // Id du bloc vidéo
        "fileLink": {
          "@type": "string", // Type d'élément (=FileLinkDto)
          "@id": "string", // Id du fichier
          "fileUrl": "string" // URL du fichier utilisé
        },
        "position": 0 // Position du bloc
      }
    ],
    "audioBlocks": [
      {
        "@type": "string", // Type de l'élément (=AudioBlockDto)
        "@id": "string", // Id du bloc audio
        "fileLink": {
          "@type": "string", // Type d'élément (=FileLinkDto)
          "@id": "string", // Id du fichier
          "fileUrl": "string" // URL du fichier utilisé
        },
        "position": 0 // Position du bloc
      }
    ],
    "position": 0 // Position du ContainerBlockDto
  },
  "title": "string", // Titre de la question
  "createdAt": "2023-08-21T13:31:47.342Z", // Date de création
  "type": "string", // Type de la question ("qrm", "qru", "textq" (QROC), "numeric", "listmatching" (ASSO), "qrp", "open_textq" (QROL), "zoning_question" (ZONE))
  "independant": true,
  "archived": true, // État d'archivage de la question
  "status": 0, // Statut du dossier (Brouillon=0, Prêt à valider=1, Validé=2, Validé par la commisision=3, Visé par la scolarité=4, Obsolète=5)
  "weight": null,
  "tags": [
    {
      "@id": "string", // Id de l'étiquette
      "@type": "string", // Type de l'élément (=Tag)
      "name": "string", // Nom de l'étiquette
      "category": "string" // Id de la catégorie de l'étiquette
    }
  ]
}
				
			

2. Examens

GET /api/exams

Description :

Récupère un ensemble de données concernant l’ensemble des examens et conférences présents dans le menu Evaluations > Epreuves.

Les entrainements et devoirs ne sont pas concernés.

Paramètres d’entrée : 

creator (string) : Chaine de caractères contenu dans l’identifiant complet de l’utilisateur ayant créé des épreuves (= « /api/groups/28743″)

creator[] (array[string]) : Tableau des identifiants des utilisateurs ayant créé des épreuves

title (string) : Chaine de caractères contenu dans le titre de l’épreuve

page (integer) : 1 (Valeur par défaut)

Réponse :

				
					{
...
  "hydra:member": [ 
    {
      "@id": "string", // Id de l'épreuve
      "@type": "string", // Type de l'élément (=Exam)
      "startDate": "2023-08-21T12:32:40.075Z", // Date de début de l'épreuve
      "endDate": "2023-08-21T12:32:40.075Z", // Date de fin de l'épreuve
      "accessCode": "string", // Code d'accès de l'épreuve (null si aucun code paramétré)
      "title": "string", // Titre de l'épreuve
      "creator": "string", // Id du créateur de l'épreuve
      "archived": true // État de l'archivage de l'examen
    }
  ],
...
}
				
			
GET /api/exams/{id}

Description :

Récupère un ensemble de données d’un examen ou d’une conférence.

Paramètres d’entrée : 

Id (string) : Identifiant de l’épreuve. Il est important de noter que l’identifiant correspond à celui renseigné sur la plateforme.

Réponse : 

				
					{
  "@context": "string",
  "@id": "string", // Id de l'épreuve
  "@type": "string", // Type l'élément (=Exam)
  "accessCode": "string", // Code d'accès de l'épreuve (null si aucun code paramétré)
  "title": "string", // Titre de l'épreuve
  "creator": "string", // Id du créateur de l'épreuve
  "assessmentOptions": "string", // Id de l'élément assessment_options
  "archived": true, // État d'archivage de l'examen
  "anticheatEnabled": true // État de l'option anti-triche
}
				
			
GET /api/exams/{id}/correction

Description :

Initie le calcul des notes pour l’ensemble des participants d’une épreuve terminée.

Une fois l’épreuve terminée, il est impératif d’appeler cette route afin de pouvoir exporter les notes.

Paramètres : 

Id (string) : Identifiant de l’épreuve.

Réponse : 

				
					{
  "@context": "string",
  "@id": "string", // Id de l'examen
  "@type": "string", // Type de l'élément (=Exam)
  "correction": [
	"pendingJobs": false, // Statut du processus de calcul de notes
    "pendingJobsResult": [],
    "correctionStatus": true, // Statut de génération des notes
    "isFinishedExam": true // Statut de fin d'examen
  ]
}
				
			
GET /api/exams/{id}/checkjobs

Description :

Récupère un ensemble de données concernant les processus asynchrones d’une épreuve.

Cette route permet de vérifier, par exemple, que le calcul des notes est bien terminé avant de réaliser un export.

Paramètres : 

Id (string) : Identifiant de l’épreuve.

Réponse : 

				
					{
  "@context": "string",
  "@id": "string", // Id de l'épreuve
  "@type": "string", // Type de l'élément (=Exam)
  "checkJobs": [
    "string" 
	"pendingJobs": false, // Statut du processus de calcul de notes
    "pendingJobsCount": null // Nombre de jobs en cours
  ]
}
				
			
GET /api/exams/{id}/participant_groups

Description :

Récupère la liste des participants d’un examen inscrits via l’inscription par groupe.

Les personnes inscrites via l’inscription individuelle ne sont pas concernées.

Paramètres : 

Id (string) : Identifiant de l’examen

page (integer) : 1 (Valeur par défaut)

Réponse : 

				
					{
...
  "hydra:member": [
    {
      "@id": "string", // Id de l'élément AssessmentParticipantGroup
      "@type": "string", // Type de l'élément (=AssessmentParticipantGroup)
      "assessment": {
        "@id": "string", // Id de l'épreuve
        "@type": "string" // Type de l'élément (=Exam)
      },
      "group": "string", // Id du groupe inscrit
      "participants": [
        "string" // Id des participants du groupe
      ]
    }
  ],
...
}
				
			
GET /api/exams/{id}/participants

Description :

Récupère un ensemble de données sur l’ensemble des participants à un examen ou une conférence qu’ils soient inscrits par groupe ou individuellement.

Paramètres : 

id (string) : Identifiant de l’épreuve

lastCorrectionDate[before] (string) : Dates inférieures ou égales des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

lastCorrectionDate[strictly_before] (string) : Dates strictement inférieures des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

lastCorrectionDate[after] (string) : Dates supérieures ou égales des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

lastCorrectionDate[strictly_after] (string) : Dates strictement supérieures ou égales des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

user (string) : Chaine de caractères contenu dans l’identifiant complet de l’utilisateur ayant participé à l’épreuves (= « /api/groups/28743″)

user[] (array[string]) : Tableau des identifiants des utilisateurs ayant participé à l’épreuve

page (integer) : 1 (Valeur par défaut)
 

Réponse : 

				
					{
...
  "hydra:member": [
    {
      "@id": "string", // Id de l'élément ExamParticipant
      "@type": "string", // Type de l'élément (=ExamParticipant)
      "additionalTime": 0,
      "status": 0,
      "placeNumber": 0, // Numéro de place du participant
      "participantGroups": [], // Id du groupe inscrit à l'épreuve de l'utilisateur
      "user": "string" // Id de l'utilisateur
    }
  ],
...
}
				
			
GET /api/exams/{id}/participants_results

Description :

Récupère les résultats de l’ensemble des participants.

Il est important de noter que les notes finales ne sont pas fournies dans la réponse. En effet, grâce aux attributs Score et Weight qui représentent respectivement la note /1 et la pondération de chaque question, il est possible de calculer la note final de chaque étudiant en utilisant le barème final souhaité (/10, /20, /100, …).

Il suffit simplement de multiplier Score par Weight et d’additionner le résultat de chaque question. La dernière étape sera d’appliquer le coefficient adéquat afin d’obtenir le barème final souhaité. Cette manipulation devra être effectuée pour l’ensemble des étudiants.

Paramètres : 

id (string) : Identifiant de l’épreuve

lastCorrectionDate[before] (string) : Dates inférieures ou égales des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

lastCorrectionDate[strictly_before] (string) : Dates strictement inférieures des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

lastCorrectionDate[after] (string) : Dates supérieures ou égales des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

lastCorrectionDate[strictly_after] (string) : Dates strictement supérieures ou égales des dernières générations de copies corrigées (= »2023-09-20T15:55:59+00:00″)

user (string) : Chaine de caractères contenu dans l’identifiant complet de l’utilisateur ayant participé à l’épreuves (= « /api/groups/28743″)

user[] (array[string]) : Tableau des identifiants des utilisateurs ayant participé à l’épreuve

page (integer) : 1 (Valeur par défaut)

 

Réponse : 

				
					{
...
  "hydra:member": [
    {
      "@id": "string", // Id de l'élément ExamParticipant
      "@type": "string", // Type de l'élément (=ExamParticipant)
      "additionalTime": 0,
      "status": 0,
      "placeNumber": 0, // Numéro de places du participant
      "assessmentSessions": [
        {
          "@id": "string", // Id de l'élément AssessmentSession
          "@type": "string", // Type de l'élément (=AssessmentSession) 
          "status": 0, // Statut de la session d'examen
          "createdAt": "string", // Date et heure de création de la session d'examen. Il s'agit de la date à laquelle le participant a cliqué sur l'icone de démarrage. 
          "beginDate": "string", // Date de départ de la session d'examen (*)
          "endDate": "string", // Date de soumission. null si la copie n'est pas soumise.
          "score": "string",
          "questionFoldersResults": [
            {
              "@type": "string", // Type de l'élément (=QuestionFolderResultDto)
              "@id": "string", // Id de l'élément QuestionFolderResultDto
              "correctionConfiguration": {
                "@type": "string", // Type de l'élément (=QuestionFolderCorrectionConfigurationDto)
                "@id": "string", // Id de l'élément QuestionFolderCorrectionConfigurationDto
                "questionnaireQuestionFolder": "string", // Id de l'élément QuestionnaireFolder
                "weight": 0, // Pondération du dossier au sein de l'épreuve
                "markScheme": "string"
              },
              "questionResults": [
                {
                  "@type": "string", // Type de l'élément (=QuestionResultDto)
                  "@id": "string", // Id de l'élément QuestionResultDto
                  "correctionConfiguration": {
                    "@type": "string", // Type de l'élément (=QuestionCorrectionConfigurationDto)
                    "@id": "string", // Id de l'élément QuestionCorrectionConfigurationDto
                    "question": "string", // Id de la question
                    "weight": 0 // Pondération de la question dans l'épreuve
                  },
                  "score": 0, // Score obtenu /1 à la question
                  "answered": true, // État d'enregistrement de la réponse
                  "discordanceCount": 0, // Nombre de discordance à la question
                  "fatalResponded": "string" // Au niveau du QRM, true si le
                  //participant a coché une case inacceptable ou indispensable
                },
							}
	          ]
	        }
	      ],
	      "firstScore": "string", 
	      "lastScore": "string", 
	      "lastCorrectionDate": "string",
	      "firstCorrectionDate": "string"
	    },
],
...
  }
				
			

* BeginDate : Pour une conférence, createdAt sera équivalente à begindate. Pour un examen, la différence entre ces deux dates et heures correspond au temps mis par l’étudiant pour renseigner le code d’accès ou passé dans la salle d’attente.

GET /api/exams/{id}/questionnaire

Description :

Récupère les données concernant l’organisation des dossiers d’une autoévaluation appelée dans une session de formation. 

Paramètres : 

Id (string) : Identifiant de l’épreuve

Réponse : 

				
					{
...
  "hydra:member": [
    {
      "@id": "string", // Id de l'élément questionnaire
      "@type": "string", // Type de l'élément (=Questionnaire)
      "questionFolders": [
        {
          "@id": "string", // Id de l'élément QuestionnaireFolder
          "@type": "string", // Type de l'élément (=QuestionnaireFolder
          "folder": {
            "@id": "string", // Id du dossier
            "@type": "string" // Type de l'élément (=QuestionFolder)
          },
          "position": 0 // Position du dossier dans l'examen
        }
      ]
    }
  ],
...
}
				
			
POST /api/exams/{id}/participant_groups

Description :

Inscrit un groupe d’utilisateurs à une épreuve.

Paramètres d’entrée : 

Id (string) : Identifiant de l’épreuve

Corps de la requête :

				
					{
  "participantGroups": [
    {
      "group": "string" //Id complet du groupe (Ex : /api/groups/28737)
    }
  ]
}
				
			

Réponse : 

				
					{
  "@context": "string",
  "@id": "string", // Id de l'épreuve
  "@type": "string", // Type de l'élément (=exam)
  "participantGroups": [
    {
      "@id": "string", // Id de l'élément assessment_participant_groups
      "@type": "string", // Type de l'élément (AssessmentParticipantGroup)
      "group": "string" // Id du groupe
    }
  ]
}