Method returns sessions which were modified since specified date and time.
Method can be used to sync sessions results between StartExam and external system by schedule:
modifiedSince
that makes sense, for example: 2024-01-01T00:00:00ZmodifiedUntil
.and use it in the next request as modifiedSince
parameter.modifiedSince
parameter to avoid data loss and 400 errors.modifiedUntil
.Method returns maximum 500 sessions in one response and supports paging with continuation token:
continuationToken
is returned by server instead of modifiedUntil
, it means that server has more pages to return.continuationToken
as a parameter.continuationToken
, so use it only once to avoid endless loops.modifiedUntil
instead of continuationToken
. Save it as usual. Paging finished.
GET https://api.startexam.com/v2/sessions?center={center}&modifiedSince={modifiedSince}&continuationToken={continuationToken}
center
- center unique name. The value can be retrieved from the center details page.
modifiedSince
- date and time since which all new and modified sessions should be retrieved, UTC, ISO 8601.
continuationToken
- ask next 500 sessions from the server using token from previous response, string.
None.
GET https://api.startexam.com/v2/sessions?center=mycenter&modifiedSince=2024-11-21T00:00:00Z HTTP/1.1
Host: api.startexam.com
Accept: application/json; charset=utf-8
Authorization: SharedKey 99:f52JP7GQd0xqrBzMO1NWTNVGzLENymgdUXu/Ie++NX4=
Content-Type: application/json; charset=utf-8
Date: Thu, 21 Nov 2024 06:36:43 GMT
GET https://api.startexam.com/v2/sessions?center=mycenter&modifiedSince=2024-11-21T00:00:00Z&continuationToken=se02331582210410564987 HTTP/1.1
Host: api.startexam.com
Accept: application/json; charset=utf-8
Authorization: SharedKey 99:f52JP7GQd0xqrBzMO1NWTNVGzLENymgdUXu/Ie++NX4=
Content-Type: application/json; charset=utf-8
Date: Thu, 21 Nov 2024 06:36:43 GMT
Date and Authorization headers are constructed in the standard way.
200 OK, 400 Bad Request, etc. according the response processing guide.
Json.
modifiedUntil
- last successful sync time, UTC, ISO 8601. Should be saved and used as modifiedSince
in the next request. NULL
.
continuationToken
- token to request next page of data, string.NULL
.
results
- array of test sessions, can be empty if there is nothing new.
participantId
- participant id, guid.
testId
- test id, guid.
testTitle
- test title, string.
started
- session started date-time in UTC, ISO 8601.
isFinished
- session finished flag, true/false.
autoClosed
- participant has left system and session was closed automatically by timeout, true/false.
elapsedTime
- testing time, HH:MM:SS, nullable.
score
- participant score, double, nullable.
maxScore
- maximum possible score, double, nullable.
percent
- percent, double with 2 decimals, nullable.
scaleLevel
- participant level from Test settings, nullable.
manualScoring
- manual scoring status. Supported values:
unknown
,
notRequired
,
required
,
completed
.
modified
- participant modified date-time in UTC, ISO 8601.
participantData
- personal data of a participant.
If a participant hasn't finished a session, some fields (elapsedTime, score, maxScore, percent, scaleLevel, outcomes) will be not returned as nullable.
modifiedUntil
which means there are no more sessions, everything synced. Client must save modifiedUntil
.continuationToken
which means there are more sessions. Client must request a new page with this continuationToken
.modifiedUntil
which means there are no new sessions, everything synced. Client must save modifiedUntil
.HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 1790
{
"modifiedUntil": "2024-11-21T06:36:13Z",
"continuationToken": null,
"results": [
{
"participantId": "7733daa5-ebda-498a-9e8c-4f96f3a19938",
"testId": "ff310632-a02b-4444-a999-73011612796c",
"testTitle": "MBA Preparation",
"started": "2024-11-20T20:36:13Z",
"isFinished": true,
"autoClosed": true,
"elapsedTime": "00:33:00",
"score": 17.0,
"maxScore": 20.0,
"percent": 85.0,
"scaleLevel": "Average Knowledge",
"manualScoring": "notRequired",
"modified": "2024-11-20T21:36:13Z",
"participantData": [
{
"name": "First Name",
"value": "John"
},
{
"name": "Last Name",
"value": "Lennon"
},
{
"name": "Email",
"value": "lennon@gmail.com"
},
{
"name": "My Custom Field Name",
"value": "000000001"
}
]
},
{
"participantId": "f362e101-e7b7-4b06-b72e-60c34e824208",
"testId": "83fbc667-6787-4458-a6fc-a6aff7d8925a",
"testTitle": "MBA Examination",
"started": "2024-11-20T21:36:13Z",
"isFinished": false,
"autoClosed": false,
"elapsedTime": null,
"score": null,
"maxScore": null,
"percent": null,
"scaleLevel": null,
"manualScoring": "required",
"modified": "2024-11-20T21:36:13Z",
"participantData": [
{
"name": "First Name",
"value": "Frank"
},
{
"name": "Last Name",
"value": "Sinatra"
},
{
"name": "Email",
"value": "frank@sinatra.com"
},
{
"name": "My Custom Field Name",
"value": "000000002"
}
]
}
]
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 1792
{
"modifiedUntil": null,
"continuationToken": "se02331582210410564987",
"results": [
{
"participantId": "71f4f125-b86e-4363-b0d7-fcd9f3fb69b4",
"testId": "7f13c181-ddea-46b3-a39e-c605dc021599",
"testTitle": "MBA Preparation",
"started": "2024-11-20T20:36:13Z",
"isFinished": true,
"autoClosed": true,
"elapsedTime": "00:33:00",
"score": 17.0,
"maxScore": 20.0,
"percent": 85.0,
"scaleLevel": "Average Knowledge",
"manualScoring": "notRequired",
"modified": "2024-11-20T21:36:13Z",
"participantData": [
{
"name": "First Name",
"value": "John"
},
{
"name": "Last Name",
"value": "Lennon"
},
{
"name": "Email",
"value": "lennon@gmail.com"
},
{
"name": "My Custom Field Name",
"value": "000000001"
}
]
},
{
"participantId": "ab57b1e0-0f2d-4253-b860-62b01e7d00f5",
"testId": "469aa2c3-9cd7-4baf-80e1-8fd439065e4b",
"testTitle": "MBA Examination",
"started": "2024-11-20T21:36:13Z",
"isFinished": false,
"autoClosed": false,
"elapsedTime": null,
"score": null,
"maxScore": null,
"percent": null,
"scaleLevel": null,
"manualScoring": "required",
"modified": "2024-11-20T21:36:13Z",
"participantData": [
{
"name": "First Name",
"value": "Frank"
},
{
"name": "Last Name",
"value": "Sinatra"
},
{
"name": "Email",
"value": "frank@sinatra.com"
},
{
"name": "My Custom Field Name",
"value": "000000002"
}
]
}
]
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 91
{
"modifiedUntil": "2024-11-21T06:36:13Z",
"continuationToken": null,
"results": []
}