CandidateLaunch
https://us1.proctorapi.comBody
Die Kandidaten-Anfrage zur Erstellung einer Kandidaten-URL.
Muss ein regulärer Ausdruck sein, der die URLs der Prüfungsseiten (die URL der Prüfung) und alle Weiterleitungen abgleicht. In Fällen, in denen Fragen auf mehreren Seiten verteilt sind, ist dies wichtig. Alles andere, was besucht wird und weder diesem noch dem Parameter exam_end entspricht, wird als Verlassen der Prüfung betrachtet und die Sitzung gilt als abgeschlossen.
Falls URLs den Prüfungsstatus nicht widerspiegeln (Single-Page-Anwendungen), kann die postMessage-Methode verwendet werden, um den exam_take-Status über folgendes an die Proctorio-Erweiterung zu übermitteln:
window.top.postMessage( ["exam_state_change", "exam_take"], "https://getproctorio.com" );
Bei Verwendung der postMessage-Methode sollte "exam_take" einen "post_message_nofication"-Wert haben.
Muss ein regulärer Ausdruck sein, der die Abschlussseite der Prüfung (die URL, zu der der Kandidat nach Abschluss der Prüfung weitergeleitet wird) und mögliche Weiterleitungen abgleicht. Dies löst das Ende der Beaufsichtigungssitzung aus und bedeutet, dass die Prüfung eingereicht wurde. Alles andere, was besucht wird und weder diesem noch dem Parameter exam_take entspricht, wird als Verlassen der Prüfung betrachtet und die Beaufsichtigungssitzung wird beendet, aber der Versuch gilt nicht als ordnungsgemäß eingereicht.
Falls URLs den Prüfungsstatus nicht widerspiegeln (Single-Page-Anwendungen), kann die postMessage-Methode verwendet werden, um den exam_end-Status über folgendes an die Proctorio-Erweiterung zu übermitteln:
window.top.postMessage( ["exam_state_change", "exam_end"], "https://getproctorio.com" );
Bei Verwendung der postMessage-Methode sollte "exam_end" einen "post_message_nofication"-Wert haben.
1, Maximum value is 18000.^[a-zA-Z0-9-]*$.Der Parameter "domain" ist optional. Durch die Verwendung von "domain" werden die Prüfungsseiten sowie das Reviewer Center mit Ihrer gewünschten Domain geladen.
Die URL wird nicht mehr auf die Seite https://getproctorio.com verweisen. Stattdessen werden die Kandidaten/Reviewer zur neuen Route weitergeleitet, die Sie im Parameter angegeben haben, beispielsweise: https://yourdomain.com.
Dies ermöglicht die Nutzung zusätzlicher Cross-Origin-Sicherheitsmechanismen, die SameSite-Cookies oder den X-Frame-Options: SAMEORIGIN-Header verwenden. Es bietet auch die Möglichkeit, Datenverluste in Session- oder Local-Storage im Zusammenhang mit der Storage-Partitionierungsfunktion des Browsers zu verhindern.
Die Seite https://getproctorio.com hat folgende Funktionen: Prüfung, ob ein Kandidat/Reviewer den unterstützten Browser installiert hat. Prüfung, ob ein Kandidat/Reviewer die Proctorio-Erweiterung installiert hat. Um diese Funktionen beizubehalten, ist ein Link zu https://getproctorio.com mit einer Beschreibung des Zwecks von getproctorio.com auf der Seite der Institution erforderlich.
URL des Extension-Allowlist-Endpunkts. HTTP-Methode: GET. Die Antwort sollte ein JSON-stringifiziertes Array sein. Beispiel: '[extensionID1,extensionID2]'.
Die extension_allowlist_url kann für Kandidaten verwendet werden, deren Browser von der Institution erzwungene Erweiterungen enthält. Diese Erweiterungen können vom Kandidaten nicht manuell deaktiviert werden.
Der Wert 'extensionID' sollte der ID der Erweiterung entsprechen, die während des beaufsichtigten Versuchs aktiv bleiben darf.
^[a-zA-Z0-9-]*$.^(?!goodbye$|support$|update$|setup$|invalid$).*.Repräsentiert eine Kurs-ID oder einen Abschnitts-ID-Wert. Dieser Parameter ist optional. Er ermöglicht eine detailliertere Sortierung der Prüfungen.
Das bedeutet, dass Prüfungen mit dem gleichen "exam_tag", aber unterschiedlicher "section_id" als verschiedene Prüfungen behandelt werden.
Der Parameter "section_id" ist vom Parameter "roster_url" abhängig und kann nicht ohne diesen verwendet werden.
URL des Roster-Endpunkts. HTTP-Methode: GET. Die Antwort sollte ein JSON-stringifiziertes Array sein. Beispiel: '[["id1","name1"],["id2","name2"]]'
Der Wert "id" sollte dem Parameter "userId" entsprechen, für den Kandidaten eindeutig und innerhalb des Rosters nicht wiederholbar sein.
Der Roster-Endpunkt wird von Proctorio validiert. Das bedeutet, dass bei Angabe eines ungültigen Endpunkts oder wenn "userId" keinem "id"-Wert im Array entspricht, die Versuche im Review Center als "Nicht zugeordnet" markiert werden.
Die roster_url wird nur vom Endbenutzer abgerufen, der auf das Review Center oder die Prüfungsvereinbarungsseite zugreift, clientseitig, nicht direkt von Proctorio. Das bedeutet, dass sie mit der Sitzung für den jeweiligen Benutzer gesichert werden kann. Dies ist beabsichtigt, und daher müssen personenbezogene Daten zu keinem Zeitpunkt an Proctorio übermittelt werden, weder bei einer Candidate-Launch-Anfrage noch bei einer Reviewer-Launch-Anfrage.
Antworten200application/jsonZeigt Erfolg an und gibt eine Kandidaten-URL zurück.
400application/jsonZeigt eine fehlerhafte Anfrage an.
401application/jsonZeigt eine nicht autorisierte Antwort an.
2154 - Konto nicht aktiv.
2155 - Falsche Region.
2655 - Ungültiger api_key.
Zeigt Erfolg an und gibt eine Kandidaten-URL zurück.
Zeigt eine fehlerhafte Anfrage an.
Zeigt eine nicht autorisierte Antwort an.
2154 - Konto nicht aktiv.
2155 - Falsche Region.
2655 - Ungültiger api_key.
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"
}