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 — нормально Если 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-логику