4. Sending proctoring result to LMS
On the Constructor Proctor side, the session is inspected and the proctoring status is submitted. In case of online proctoring, the status is set immediately. In case of post-exam review, the status is going to be set later.
As soon as the proctoring result is known, Constructor Proctor makes a request to the client's system API, sending the proctoring results.
The values of some fields become known after some time, in this case, Constructor Proctor makes repeated calls to the customer's system with updated data.
API URL:
[review_url]Request method:
POSTRequest headers:
Content-Type: application/json
Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTI5OTQxMzF9.PRzNThe JWT signature is used to verify that the request sender is Constructor Proctor and that the token was generated exactly when the request was sent. In the payload the JWT contains the expiration date and time of the token in the numeric timestamp format.
JWT payload example:
{
"exp": 1234567890
}Request body example:
{
"accountId": "107",
"sessionId": "828331bda025",
"archive": "https://demo.proctor.example.com/video",
"conclusion": "accepted",
"comment": "person_is_absent, forbidden_software: Teamviewer",
"score": 65,
"threshold": {
"attention": 60,
"rejected": 80
},
"sessionStart": "2018-03-27T00:30:00Z",
"sessionEnd": "2018-03-27T00:45:10Z",
"warnings": [
{
"type": "WARNING_FORBIDDEN_DEVICE",
"start": "2018-07-19T12:00:01+00:00",
"end": "2018-07-19T12:00:30+00:00",
"cyber": false
},
{
"type": "WARNING_AVERT_EYES",
"start": "2018-07-19T12:05:25+00:00",
"end": "2018-07-19T12:06:01+00:00",
"cyber": true
}
],
"warningTitles": {
"WARNING_AVERT_EYES": {
"en": "Looking away from the screen",
"es": "Dirección de miarada equivocada"
},
"WARNING_PHONE": {
"en": "Phone is used"
}
}
}| Field | Type | Description |
|---|---|---|
| accountId* | string | Company ID in the client’s system. |
| sessionId* | string | Session ID in the system (ID that was passed to Constructor Proctor at the start of the test session). |
| archive* | string (URL) | Link to the Constructor Proctor video archive for the session. |
| conclusion* | string (enum) | Proctor's conclusion: * “accepted” — no violations detected * “rejected” — there were violations * “unknown” — not enough data to make a conclusion (the user disconnected during the test, other technical difficulties); in the * case of post-proctoring — the conclusion is not ready yet |
| comment* | string | Additional proctor's notes. |
| score | int | Value of the score in range from 0 to 100. |
| threshold* | JSON | A JSON containing threshold values for the score: attention and rejected. * If score < attention — OK * If attention ≤ score ≤ rejected — suspicious * If score > rejected — rejected |
| sessionStart | string (datetime) | Date and time when proctoring was started (UTC, ISO 8601). |
| sessionEnd* | string (datetime) | Date and time when proctoring was finished (UTC, ISO 8601). |
| warnings | JSON (list) | A list of warnings during the exam. |
| warningTitles | JSON | Titles for warnings in all languages. |
| reportUrl* | string (URL) | A link to the session warnings report. |
The client's system responds with the 200 OK or 201 Created status meaning that the result has been successfully saved.
If the connection between Constructor Proctor and the client's system was not established due to technical reasons, or the server responds with the 5xx status, Constructor Proctor repeatedly sends the results after a certain time period, that is, implements a retry logic.