CandidateLaunch
https://us1.proctorapi.comBody
La requête candidat pour créer une URL de candidat.
Doit être une expression régulière pour correspondre aux URL des pages en cours d'examen (l'URL de l'examen), ainsi qu'aux redirections. Dans les cas où les questions sont réparties sur plusieurs pages, cela est important. Tout autre site visité qui ne correspond pas à ce paramètre ou au paramètre exam_end sera considéré comme une sortie de l'examen et la session sera considérée comme terminée.
Dans le cas où les URL ne reflètent pas l'état de l'examen (applications monopage), la méthode postMessage peut être utilisée pour communiquer l'état exam_take à l'extension Proctorio via :
window.top.postMessage( ["exam_state_change", "exam_take"], "https://getproctorio.com" );
Lors de l'utilisation de la méthode postMessage, "exam_take" doit avoir une valeur "post_message_nofication".
Doit être une expression régulière pour correspondre à la page de fin d'examen (l'URL vers laquelle le candidat est redirigé une fois l'examen terminé) ainsi qu'aux redirections possibles. Cela déclenche la fin de la session de surveillance et considère que l'examen a été soumis. Tout autre site visité qui ne correspond pas à ce paramètre ou au paramètre exam_take sera considéré comme une sortie de l'examen et la session de surveillance se terminera, mais la tentative ne sera pas considérée comme soumise correctement.
Dans le cas où les URL ne reflètent pas l'état de l'examen (applications monopage), la méthode postMessage peut être utilisée pour communiquer l'état exam_end à l'extension Proctorio via :
window.top.postMessage( ["exam_state_change", "exam_end"], "https://getproctorio.com" );
Lors de l'utilisation de la méthode postMessage, "exam_end" doit avoir une valeur "post_message_nofication".
1, Maximum value is 18000.^[a-zA-Z0-9-]*$.Le paramètre "domain" est facultatif. En utilisant "domain", les pages d'examen ainsi que le Review Center se chargeront avec votre domaine souhaité.
L'URL ne pointera plus vers la page https://getproctorio.com. Au lieu de cela, les candidats/examinateurs seront dirigés vers la nouvelle route que vous avez fournie dans le paramètre, exemple : https://yourdomain.com.
Cela permet l'utilisation de mécanismes de sécurité cross-origin supplémentaires, qui utilisent les cookies SameSite ou l'en-tête X-Frame-Options: SAMEORIGIN. Cela permettra également d'éviter la perte de données dans le stockage de session ou local liée à la fonctionnalité de partitionnement du stockage du navigateur.
La page https://getproctorio.com possède les fonctionnalités suivantes : Vérifier si un candidat/examinateur a installé le navigateur pris en charge. Vérifier si un candidat/examinateur a installé l'extension Proctorio. Pour conserver ces fonctionnalités, un lien vers https://getproctorio.com avec un contenu décrivant l'objectif de getproctorio.com est nécessaire sur la page de l'institution.
URL du endpoint de la liste d'extensions autorisées. Méthode HTTP : GET. La réponse doit être un tableau JSON sous forme de chaîne. Par exemple : '[extensionID1,extensionID2]'.
Le extension_allowlist_url peut être utilisé pour les candidats dont les extensions sont activées de force dans le navigateur par l'institution. Ces extensions ne peuvent pas être désactivées manuellement par le candidat.
La valeur 'extensionID' doit correspondre à l'identifiant de l'extension qui sera autorisée à rester active pendant la tentative surveillée.
^[a-zA-Z0-9-]*$.^(?!goodbye$|support$|update$|setup$|invalid$).*.Représente un identifiant de cours ou une valeur d'identifiant de section. Ce paramètre est facultatif. Il permet un tri plus granulaire des examens.
Cela signifie que les examens ayant le même "exam_tag" mais un "section_id" différent seront traités comme des examens différents.
Le paramètre "section_id" dépend du paramètre "roster_url" et ne peut pas être utilisé sans celui-ci.
URL du endpoint du roster. Méthode HTTP : GET. La réponse doit être un tableau JSON sous forme de chaîne. Par exemple : '[["id1","name1"],["id2","name2"]]'
La valeur "id" doit correspondre au paramètre "userId", être unique pour le candidat et non répétable dans le roster.
Le endpoint du roster est validé par Proctorio, ce qui signifie que si un endpoint invalide est fourni ou si "userId" ne correspond à aucune valeur "id" dans le tableau, les tentatives seront marquées comme « Non appariées » dans le Review Center.
Le roster_url est uniquement récupéré par l'utilisateur final accédant au Review Center ou à la page d'accord d'examen, côté client, et non par Proctorio directement. Cela signifie qu'il peut être sécurisé avec la session de cet utilisateur particulier. C'est intentionnel, et il n'est donc pas nécessaire de transmettre les données personnelles à Proctorio à aucun moment, que ce soit dans une requête de lancement candidat ou une requête de lancement examinateur.
Réponses200application/jsonIndique le succès et renvoie une URL de candidat.
400application/jsonIndique une requête incorrecte.
401application/jsonIndique une réponse non autorisée.
2154 - Compte non actif.
2155 - Région incorrecte.
2655 - api_key invalide.
Indique le succès et renvoie une URL de candidat.
Indique une requête incorrecte.
Indique une réponse non autorisée.
2154 - Compte non actif.
2155 - Région incorrecte.
2655 - api_key invalide.
curl --request POST \
--url https://us1.proctorapi.com/v2/candidate/launch \
--header 'Content-Type: application/json' \
--header 'api_key: $API_KEY' \
--data '{"launch_url":"https://example.com/exam","exam_start":"https://example.com/exam","exam_take":"https://example.com/exam","exam_end":"https://example.com/exam","exam_settings":{"record_video":true,"record_audio":false,"record_screen":false,"verify_video":false},"user_id":"example-id-123"}' import requests
url = "https://us1.proctorapi.com/v2/candidate/launch"
payload = {
"launch_url": "https://example.com/exam",
"exam_start": "https://example.com/exam",
"exam_take": "https://example.com/exam",
"exam_end": "https://example.com/exam",
"exam_settings": {
"record_video": True,
"record_audio": False,
"record_screen": False,
"verify_video": False
},
"user_id": "example-id-123"
}
headers = {
"api_key": "$API_KEY",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json()) const fetch = require('node-fetch');
const url = 'https://us1.proctorapi.com/v2/candidate/launch';
const options = {
method: 'POST',
headers: {api_key: '$API_KEY', 'Content-Type': 'application/json'},
body: '{"launch_url":"https://example.com/exam","exam_start":"https://example.com/exam","exam_take":"https://example.com/exam","exam_end":"https://example.com/exam","exam_settings":{"record_video":true,"record_audio":false,"record_screen":false,"verify_video":false},"user_id":"example-id-123"}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
} using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://us1.proctorapi.com/v2/candidate/launch"),
Headers =
{
{ "api_key", "$API_KEY" },
},
Content = new StringContent("{\"launch_url\":\"https://example.com/exam\",\"exam_start\":\"https://example.com/exam\",\"exam_take\":\"https://example.com/exam\",\"exam_end\":\"https://example.com/exam\",\"exam_settings\":{\"record_video\":true,\"record_audio\":false,\"record_screen\":false,\"verify_video\":false},\"user_id\":\"example-id-123\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
} {
"launch_url": "https://example.com/exam",
"exam_start": "https://example.com/exam",
"exam_take": "https://example.com/exam",
"exam_end": "https://example.com/exam",
"exam_settings": {
"record_video": true,
"record_audio": false,
"record_screen": false,
"verify_video": false
},
"user_id": "example-id-123"
}