Examus

база знаний

API. Передача результатов прокторинга в тест-систему

На стороне Экзамуса происходит проверка сеанса и выставляется статус прокторинга. В случае с онлайн-проктором статус выставляется сразу. В случае с пост-просмотром записей при асинхронном прокторинге статус выставляется через некоторое время.

Когда результат прокторинга становится известен, Экзамус делает запрос к API системы заказчика, отправляя результаты прокторинга.

Значения некоторых полей становятся известны или уточняются через некоторое время, в этом случае Экзамус выполняет повторные вызовы системы с более полным набором данных.

API URL:

[review_url]

Тип запроса:

POST

Заголовки запроса:

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

Подпись JWT позволяет проверить, что запрос идет от Экзамуса и что токен сгенерирован в момент запроса. В payload токена содержится дата и время истечения токена в числовом формате Unix timestamp.

Пример JWT Payload:

{

"exp": 1612994131

}

JSON-тело запроса:

{

"accountId": "123",

"sessionId": "b3875623",

"archive": "https://server.examus.net/video/",

"conclusion": "accepted",

"comment": "All right.",

"score": 56,

"threshold": {"attention": 60, "rejected": 80},

"sessionStart": "2018-03-27T00:30:00Z",

"sessionEnd": "2018-03-27T00:45:10Z",

"reportUrl": "https://server.examus.net/video/report/session/",

"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": {

"ru": "Увод взгляда с экрана",

"en": "Looking away from the screen",

"es": "Dirección de miarada equivocada"

},

"WARNING_PHONE": {

"en": "Phone is used"

}

}

}

Поле

Тип

Описание

accountId*

string

Идентификатор организации в системе заказчика

sessionId*

string

Идентификатор сеанса в системе

(идентификатор, который был передан в Экзамус при запуске сеанса тестирования)

archive*

string (URL)

Секретная ссылка на видеоархив Экзамуса для организаторов (без авторизации)

conclusion*

string (enum)

Заключение проктора. Возможные значения:

accepted”: нарушений не обнаружено

rejected”: обнаружены нарушения

unknown”: в случае синхронного прокторинга — по имеющимся данным нельзя сделать вывод (пользователь отключился в процессе экзамена, технические неполадки);

в случае асинхронного (пост-)прокторинга — проктор еще не просмотрел запись и не отправил заключение

comment*

string

Комментарий к заключению проктора

score

int

Значение скоринга от 0 до 100

threshold*

JSON

Словарь с двумя порогами для score: attention и rejected.

Если score < attention — нормально
Если attention ≤ score ≤ rejected — подозрительно

Если score > rejected — отклонено

sessionStart

string (datetime)

Дата и время, когда был запущен сеанс прокторинга в формате UTC, ISO 8601

sessionEnd*

string (datetime)

Дата и время, когда был завершен сеанс прокторинга в формате UTC, ISO 8601

warnings

JSON (list)

Список нарушений во время экзамена

warningTitles

JSON

Переводы на все языки для каждого из нарушений

reportUrl*

string (URL)

Ссылка на отчет по нарушениям в сессии

Система заказчика отвечает успешным статусом 200 OK или 201 Created, означающим, что результаты успешно сохранены.

В случае, если по техническим причинам соединение между Экзамус и системой заказчика установить не удалось, или сервер возвращает ошибки 5xx, Экзамус будет повторно передавать результаты через заданный промежуток времени, т.е. реализует retry-логику