Skip to content

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:

POST

Request headers:

Content-Type: application/json  
Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTI5OTQxMzF9.PRzN

The 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:

json
{
    "exp": 1234567890
}

Request body example:

json
{
  "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"
    }
  }
}
FieldTypeDescription
accountId*stringCompany ID in the client’s system.
sessionId*stringSession 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*stringAdditional proctor's notes.
scoreintValue of the score in range from 0 to 100.
threshold*JSONA JSON containing threshold values for the score: attention and rejected. * If score < attention — OK * If attention ≤ score ≤ rejected — suspicious * If score > rejected — rejected
sessionStartstring (datetime)Date and time when proctoring was started (UTC, ISO 8601).
sessionEnd*string (datetime)Date and time when proctoring was finished (UTC, ISO 8601).
warningsJSON (list)A list of warnings during the exam.
warningTitlesJSONTitles 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.