Result API
Results contain all of the information from a candidate’s completed script, including the candidate’s responses and interactions with the test driver. For a more concise overview of results information, read SummaryResult API.
Result is a submitted, marked, and moderated test session available within the Test Administration screens in Surpass. This result is then exported to our Reporting screens where further rescoring changes may take place.
The Result resource does not return data that has been modified in Reporting; the Result resource always return the latest information available within Test Administration. Read AnalyticsResult API and HistoricalResult API for result information after any rescoring sessions.
The Result API resource is used to list and retrieve results, list and retrieve candidate responses, and retrieve candidate interactions, client information, and a state change audit.
This article explains what calls can be made to the Surpass API using the Result resource.
Import this API into your Postman Workspace
In This Article
Listing results
Send a request to the endpoint to retrieve a list of results. Refer to the available parameters to influence the response. No request body is required.
Parameters
Parameters are passed with the endpoint to influence the response. Header parameters are included in the request header. Path parameters are extensions of the endpoint, and query parameters follow ? after any path parameters.
Name |
Parameter |
Input |
Description |
---|---|---|---|
authorization |
header MANDATORY |
Basic {credentials} |
Basic authentication details must be passed to authorise the user’s request, where {credentials} is a Base64 encoded username:password string. |
accept |
header OPTIONAL |
application/json or application/xml |
Determines data format of the response, which can be either JSON or XML. |
top |
query OPTIONAL |
/api/v2/Result?$top={top} |
Defines number of responses to return when paging a response, where {top} is a number between 1 and 40. |
skip |
query OPTIONAL |
/api/v2/Result?$skip={skip} |
Defines how many responses to skip when paging a response, where {skip} is a number that should not exceed the total number of responses. |
filter |
query OPTIONAL |
/api/v2/Result?$filter={filter} {operator} {value} |
Filters results, searching either for an exact match or for the data to contain a defined value. For an exact match: {filter} is one of subject/id, subject/reference, centre/id, centre/reference, test/id, test/reference, testForm/id, testForm/reference, candidate/id, candidate/reference, keycode; {operator} is eq (equal to); and {value} is the string or integer the filter query looks for an exact match for in the request. For a greater than query: {filter} is startedDate, submittedDate, warehousedDate; {operator} is ge (greater than); and {value} is the string (in DD/MM/YYYY format) the filter looks for more than in the request. For a less than query: {filter} is startedDate, submittedDate, warehousedDate; {operator} is le (less than); and {value} is the string (in DD/MM/YYYY format) the filter looks for less than in the request. |
markedExternally |
query OPTIONAL |
/api/v2/Result?markedExternally={Boolean} |
Determines whether to include results for test sessions with the markedExternally property set to true (at the point of scheduling) in the response, where {Boolean} is one of true or false. |
includeExamsInMarking |
query OPTIONAL |
/api/v2/Result?includeExamsInMarking={Boolean} |
Determines whether to include results awaiting to be released from SecureMarker in the response, where {Boolean} is one of true or false. |
Sample response
If successful, the HTTP status code will be 200 and the response body will contain the information in either JSON or XML format as requested.
{
"count": 3711,
"top": 10,
"skip": 0,
"pageCount": 372,
"nextPageLink": "https://{your Surpass instance}.surpass.com:443/api/v2/Result?$skip=10",
"prevPageLink": null,
"response": [
{
"id": 1,
"reference": "3RTTPP4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1"
},
{
"id": 2,
"reference": "9B7BPM4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/2"
},
{
"id": 3,
"reference": "VHMYVW4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/3"
},
{
"id": 4,
"reference": "FD6R6F4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/4"
},
{
"id": 5,
"reference": "QDGNCM4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/5"
},
{
"id": 6,
"reference": "RFBF6D4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/6"
},
{
"id": 7,
"reference": "QMQ64G4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/7"
},
{
"id": 8,
"reference": "GYN7XB4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/8"
},
{
"id": 9,
"reference": "ND73Q94S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/9"
},
{
"id": 10,
"reference": "8TMKK44S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/10"
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Response schema
The response schema contains a description of every property that can be returned for this endpoint.
count integer
Details how many results there are in total.
top integer
Details number of results returned in the response.
skip integer
Details how many results were skipped to display those in the response.
pageCount integer
Details how many pages of results there are.
nextPageLink string
The endpoint to call the next page of results. If null, the response is the last page of results.
prevPageLink string
The endpoint to call the previous page of results. If null, the response is the first page of results.
response array
Contains the rest of the response.
id integer
The result’s unique identifier.
reference string
The result’s unique reference code.
href string
The endpoint to call the result’s information, such as /api/v2/Result/{id} where {id} is the result’s unique identifier.
errors string
Information about any errors that occurred during the request.
serverTimeZone enumeration
The timezone of the server sending the response.
Retrieving result information
Send a request to the endpoint to retrieve information for a specific result using either its ID or the candidate’s unique keycode. No request body is required.
Parameters
Parameters are passed with the endpoint to influence the response. Header parameters are included in the request header. Path parameters are extensions of the endpoint, and query parameters follow ? after any path parameters.
Name |
Parameter |
Input |
Description |
---|---|---|---|
authorization |
header MANDATORY |
Basic {credentials} |
Basic authentication details must be passed to authorise the user’s request, where {credentials} is a Base64 encoded username:password string. |
accept |
header OPTIONAL |
application/json or application/xml |
Determines data format of the response, which can be either JSON or XML. |
id |
path OPTIONAL |
/api/v2/Result/{id} |
Returns information for the specified result, where {id} is the result’s unique identifier. |
keycode |
path OPTIONAL |
/api/v2/Result/{keycode} |
Returns information for the specified result, where {keycode} is the candidate’s unique keycode used to enter the test. |
showItemResponses |
query OPTIONAL |
/api/v2/Result/{id}?showItemResponses={Boolean} |
Determines whether to include the candidate’s responses to items in the response, where {id} is the result’s unique identifier (or candidate’s unique keycode), and {Boolean} is one of true or false.
NOTE: This includes the information found in the 'Retrieving item responses' response schema within the itemResponse object in the response to calling this endpoint.
|
usePipeLoSeparator |
query OPTIONAL |
/api/v2/Result/{id}?usePipeLoSeparator={Boolean} |
Determines whether to use the pipe symbol (‘|‘) to separate learning outcomes in the response (instead of commas), where {id} is the result’s unique identifier (or candidate’s unique keycode), and {Boolean} is one of true or false. |
showAnalysis |
query OPTIONAL |
/api/v2/Result/{id}?showAnalysis={Boolean} |
Determines whether to include a breakdown by Unit and Learning Outcomes in the response, where {id} is the result’s unique identifier (or candidate’s unique keycode), and {Boolean} is one of true or false. |
returnDownloadData |
query OPTIONAL |
/api/v2/Result/{id}?returnDownloadData={Boolean} |
Determines whether to include test session download data in the response, where {id} is the result’s unique identifier (or candidate’s unique keycode), and {Boolean} is one of true or false. |
Sample response
If successful, the HTTP status code will be 200 and the response body will contain the information in either JSON or XML format as requested.
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"scaleScoreMapping": null,
"test": {
"reference": "Test1",
"name": "Final Year Geography Test",
"id": 1,
"href": "https://{your Surpass instance}.surpass.com/api/v2/Test/1"
},
"testForm": {
"reference": "TestForm1",
"name": "Final Year Geography Test Form January 2022",
"id": 1,
"href": "https://{your Surpass instance}.surpass.com/api/v2/TestForm/1"
},
"subject": {
"reference": "Subject1",
"name": "Geography Subject",
"id": 1,
"href": "https://{your Surpass instance}.surpass.com/api/v2/Subject/1"
},
"externalReference": "",
"passMark": 0.0,
"passMarkType": "Percentage",
"percentageMark": 0.0,
"passPercentage": 0.0,
"IRTScore": null,
"passIRTScore": null,
"keycode": "KYP7DQ4S",
"resultsReleased": false,
"resultsSampled": false,
"scaleScore": null,
"pass": true,
"durationMode": "Untimed",
"isManuallySubmittedInLocal": false,
"sections": [
{
"id": 1,
"name": "",
"mark": 0.0,
"percentageMark": 0.0,
"availableMarks": 10,
"pass": true,
"passMark": 0.0,
"passPercentage": 0.0,
"passIRTScore": null,
"passMarkType": "Percentage",
"IRTScore": null,
"viewingTime": 0,
"items": [
{
"name": "Geography MCQ1",
"version": 3,
"mark": 0.0,
"awardedMark": 0.0,
"availableMarks": 5,
"viewingTime": "",
"learningOutcome": "",
"markBreakdown": [],
"unit": "",
"surpassReference": "5007P1",
"nonScored": false,
"type": "Question",
"candidateResponse": {
"Value": ""
},
"itemResponse": {
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5007P1"
},
"marker": null,
"displayNumber": null,
"markingType": "0",
"itemSetId": null,
"itemSetName": null
},
{
"name": "Geography MCQ2",
"version": 3,
"mark": 0.0,
"awardedMark": 0.0,
"availableMarks": 2,
"viewingTime": "",
"learningOutcome": "",
"markBreakdown": [],
"unit": "",
"surpassReference": "5007P2",
"nonScored": false,
"type": "Question",
"candidateResponse": {
"Value": ""
},
"itemResponse": {
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5007P2"
},
"marker": null,
"displayNumber": null,
"markingType": "0",
"itemSetId": null,
"itemSetName": null
},
{
"name": "Geography MCQ3",
"version": 3,
"mark": 0.0,
"awardedMark": 0.0,
"availableMarks": 3,
"viewingTime": "",
"learningOutcome": "",
"markBreakdown": [],
"unit": "",
"surpassReference": "5007P3",
"nonScored": false,
"type": "Question",
"candidateResponse": {
"Value": ""
},
"itemResponse": {
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5007P3"
},
"marker": null,
"displayNumber": null,
"markingType": "0",
"itemSetId": null,
"itemSetName": null
}
],
"sectionSelectorId": null,
"selected": null,
"startTime": null,
"endTime": null,
"isPoolTimeSection": false,
"poolName": null,
"isSurveySection": false,
"decisionPoint": null
}
],
"centre": {
"id": 1,
"reference": "Centre1",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Centre/1"
},
"candidate": {
"id": 1,
"reference": "Candidate1",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Candidate/1"
},
"mark": 0.0,
"availableMarks": 10,
"grade": "Voided",
"startedDate": null,
"submittedDate": "2022-04-27T00:00:00",
"warehousedDate": "2022-04-27T00:00:08.303",
"id": 1,
"reference": "KYP7DQ4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1",
"learningOutcomeThreshold": 0,
"learningOutcomeBoundariesApplied": false,
"learningOutcomes": [],
"learningOutcomeBoundaries": [],
"sectionSelectors": [],
"IRTDomain": [],
"examWindowStartTime": "2022-04-27T00:00:00",
"allowedDuration": 0,
"reasonableAdjustments": {
"totalTimeAdded": 0,
"reasonForAdjustment": ""
},
"re-mark": "No",
"voidReason": "Auto Void, absent",
"actualDuration": 0,
"cutScoreAvailableMarks": 0,
"purchaseOrder": "",
"started": false,
"isReview": false
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Response schema
The response schema contains a description of every property that can be returned for this endpoint.
count integer
Details how many results there are in total. This is null because the information retrieved is for a specific result.
top integer
Details number of results returned in the response. This is null because the information retrieved is for a specific result.
skip integer
Details how many results were skipped to display those in the response. This is null because the information retrieved is for a specific result.
pageCount integer
Details how many pages of results there are. This is null because the information retrieved is for a specific result.
nextPageLink string
The endpoint to call the next page of results. This is null because the information retrieved is for a specific result.
prevPageLink string
The endpoint to call the previous page of results. This is null because the information retrieved is for a specific result.
response array
Contains the rest of the response.
scaleScoreMapping object
test object
Contains the test’s information.
test/reference string
The test’s unique reference code.
test/name string
The test’s name.
test/id integer
The test’s unique identifier.
test/href string
The endpoint to call the test’s information, such as /api/v2/Test/{id} where {id} is the test’s unique identifier.
testForm object
Contains the test form’s information.
testForm/reference string
The test form’s unique reference code.
testForm/name string
The test form’s name.
testForm/id integer
The test form’s unique identifier.
testForm/href string
The endpoint to call the test form’s information, such as /api/v2/TestForm/{id} where {id} is the test form’s unique identifier.
subject object
Contains the subject’s information.
subject/reference string
The subject’s unique reference code.
subject/name string
The subject’s name.
subject/id integer
The subject’s unique identifier.
subject/href string
The endpoint to call the subject’s information, such as /api/v2/Subject/{id} where {id} is the subject’s unique identifier.
externalReference string
An external reference used for cross-referencing between systems. This is defined when the test is scheduled using the TestSchedule API.
passMark integer
The test form’s pass mark.
passMarkType enumeration
Determines whether the test form grade boundary type is Percentage, Score, or Irt Theta.
percentageMark integer
The candidate’s total mark as a percentage.
passPercentage integer
The percentage required to achieve the lowest grade boundary and pass the test.
IRTScore integer
The candidate’s IRT score for the test. For more information on IRT grade boundaries, read Setting up grade boundaries and About IRT tags.
passIRTScore integer
The IRT score required to pass the test. For more information on IRT grade boundaries, read Setting up grade boundaries and About IRT tags.
keycode string
The candidate’s unique keycode, used to enter their test.
resultsReleased Boolean
Determines whether the candidate’s script was moderated and therefore released from the Moderate screen. If true, the candidate’s script was moderated.
resultsSampled Boolean
Determines whether the candidate’s script was moderated and released from the Moderate screen in a group of scripts. If true, the candidate’s script was moderated and released in a group of scripts.
scaleScore integer
pass Boolean
Determines whether the candidate passed the test. If true, the candidate passed the test.
durationMode enumeration
Determines the test form’s timing type. The available options are:
- Untimed – Candidates have unlimited time to complete and submit their responses.
- Timed – The whole test form has a specified time limit in which candidates must complete and submit their responses.
- Timed Sections – Each section in the test form has an individual time limit. Candidates can only work in one timed section at a time. If the candidate decides to leave the section, they cannot return and their remaining time in that section is lost. You can combine timed sections into pools to allow candidates to manage their time between them.
isManuallySubmittedInLocal Boolean
sections array
Contains the test form’s sections’ information (the candidate’s script).
sections/id integer
The section’s unique identifier.
sections/name string
The section’s name.
sections/mark integer
The candidate’s mark for the section.
sections/percentageMark integer
The candidate’s mark for the section as a percentage.
sections/availableMark integer
The total marks available for the section.
sections/pass Boolean
Determines whether the candidate passed the section. If true, the candidate passed the section.
sections/passMark integer
The section’s pass mark.
sections/passPercentage integer
The section’s pass mark as a percentage.
sections/passIRTScore integer
The IRT score required to pass the section.
sections/passMarkType enumeration
Determines whether the pass mark type for the section is Percentage or Score.
sections/viewingTime integer
The time the candidate spent on the section, in seconds.
sections/items array
Contains the information for the items in the section.
sections/items/name string
The item’s name.
sections/items/version integer
The item’s version number.
sections/items/mark integer
The number of marks assigned to the item.
sections/items/awardedMark integer
The mark achieved by the candidate for the item.
sections/items/viewingTime integer
The time the candidate spent on the item, in seconds.
sections/items/learningOutcome string
The Learning Outcome(s) assigned to the item. Multiple Learning Outcomes are separated by commas, unless the usePipeLoSeparator header parameter is passed in the request.
sections/items/markBreakdown array
Contains any Marked Learning Outcome’s information.
sections/items/markBreakdown/name string
The Marked Learning Outcome’s name.
sections/items/markBreakdown/mark string
The mark achieved by the candidate for the Marked Learning Outcome.
sections/items/markBreakdown/availableMarks string
The total marks available for the Marked Learning Outcome.
sections/items/unit string
The Unit tag value assigned to the item.
sections/items/surpassReference string
The item’s Surpass unique reference code (ID). A Surpass item ID is the item ID prefixed with the subject ID.
section/items/nonScored Boolean
Determines whether the item is a scored (false) or non-scored (true) item.
sections/items/type enumeration
Determines whether item is a Question or a Survey item.
sections/items/candidateResponse object
Contains the candidate’s response information.
sections/items/candidateResponse/Value string
The candidate’s response, in XML format. If the test form was in QualityReview state, this property contains any comments added by the test reviewer between the qualityreviewitemcomment and qualityreviewexamcomment nodes.
sections/items/itemResponse object
Contains the candidate’s item responses’ information. See the ‘Retrieving item responses’ response schema for all of the properties that can be returned in this object.
sections/items/itemResponse/href string
The endpoint to call the item response’s information, such as /api/v2/Result/{id}/ItemResponse/{id} where {id} is the result’s unique identifier and {id} is the item response’s unique identifier.
If opened in a browser, this URL returns the item response’s information in XML format.
sections/items/marker string
The marker’s username.
sections/items/displayNumber integer
If the item is an item set, displays its numerical position in the test driver breadcrumb.
sections/items/markingType enumeration
Determines how the item was marked. The available options are:
- 0 – Item was computer-marked.
- 1 – Item was human-marked.
- 3 – Item was imported from an external system.
sections/items/itemSetId integer
If the item is an item set, displays the item set’s unique identifier.
sections/items/itemSetName string
If the item is an item set, displays the item set’s name.
sections/sectionSelectorId integer
If the section is a section selector section, displays the section selector’s unique identifier.
sections/selected Boolean
If the section is a section selector section, determines whether the candidate selected the section. If true, the candidate selected the section as part of the section selector.
sections/startTime string
The time at which the section was started, in HH:MM format.
sections/endTime string
The time at which the section was finished, in HH:MM format.
sections/isPoolTimeSection Boolean
Determines whether the section is in a pool of timed section. If true, the section is pooled.
sections/poolName string
If the section is in a pool of timed sections, displays the pool’s name.
sections/isSurveySection Boolean
Determines whether the section is an unmarked, survey section. If true, the section is a survey section.
sections/decisionPoint object
centre object
Contains the centre’s information.
centre/id integer
The centre’s unique identifier.
centre/reference string
The candidate’s unique reference code.
centre/href string
The endpoint to call the centre’s information, such as /api/v2/Centre/{id} where {id} is the centre’s unique identifier.
candidate object
Contains the candidate’s information.
candidate/id integer
The candidate’s unique identifier.
candidate/reference string
The candidate’s unique reference code.
candidate/href string
The endpoint to call the candidate’s information, such as /api/v2/Candidate/{id} where {id} is the candidate’s unique identifier.
mark integer
The total mark achieved by the candidate.
availableMarks integer
The total available marks.
grade string
The grade the candidate achieved.
startedDate string
The date and time the candidate started the test, in YYYY-MM-DDTHH:SS format.
submittedDate string
The date and time the candidate submitted the test, in YYYY-MM-DDTHH:SS format.
warehousedDate string
The date and time the test was warehoused, in YYYY-MM-DDTHH:SS format.
id integer
The result’s unique identifier.
reference string
The result’s unique reference code. This is the same as the candidate’s unique keycode used to enter the test.
href string
The endpoint to call the result’s information, such as /api/v2/Result/{id} where {id} is the result’s unique identifier.
learningOutcomeThreshold integer
Determines the minimum number of marks that must be allocated to a Learning Outcome before it is affected by a Learning Outcome Boundary. If the threshold is met, and a Learning Outcome Boundary is set up at test form level, the candidate’s performance against a Learning Outcome will affect the final test result. This value is defined in Site Settings and is 0 by default.
For more information on grade boundaries, read ‘About Test Settings’ in About Site Settings options, and Setting up grade boundaries.
learningOutcomeBoundariesApplied Boolean
Determines whether Learning Outcome Boundaries have been applied (the learningOutcomeThreshold value has been exceeded). If true, Learning Outcome Boundaries have been applied.
For more information on grade boundaries, read Setting up grade boundaries.
learningOutcomes array
Contains the information of any Learning Outcomes included in Learning Outcome Boundaries assigned to items in the test. For more information on grade boundaries, read Setting up grade boundaries.
learningOutcomes/name string
The Learning Outcome’s name.
learningOutcomes/pass Boolean
Determines whether the candidate has passed the Learning Outcome. If true, the candidate passed the Learning Outcome.
learningOutcomes/mark integer
The mark the candidate achieved for the Learning Outcome.
learningOutcomes/totalMark integer
The total number of available marks for the Learning Outcome.
learningOutcomes/percentageMark integer
The mark the candidate achieved for the Learning Outcome in percentage format.
learningOutcomes/passPercentage integer
The pass percentage required to pass the Learning Outcome.
learningOutcomes/thresholdExceeded Boolean
Determines whether the Learning Outcome threshold (learningOutcomeThreshold) has been exceeded and therefore the Learning Outcome counts towards the final result. If true, the Learning Outcome threshold has been exceeded.
learningOutcomes/defaultPassMarkApplied Boolean
Determines whether the default pass mark for Learning Outcome Boundaries was applied. If false, a custom Learning Outcome Boundary pass mark was applied by the test creator.
learningOutcomeBoundaries array
Contains the information of any Learning Outcome Boundaries. A separate object is returned for each Learning Outcome Boundary. For more information on grade boundaries, read Setting up grade boundaries.
learningOutcomeBoundaries/isDefault Boolean
Determines whether the default pass mark for Learning Outcome Boundaries was applied. If false, a custom Learning Outcome Boundary pass mark was applied by the test creator.
learningOutcomeBoundaries/text string
The Learning Boundary’s name. This must match the Learning Outcome tag value for Learning Outcome Boundaries to work correctly.
learningOutcomeBoundaries/passPercentage integer
The pass percentage required to pass the Learning Outcome.
sectionSelectors array
Contains the information of any section selector sections. A separate object is returned for each section selector section.
sectionSelectors/id integer
The section selector section’s unique identifier.
sectionSelectors/name string
The section selector section’s name.
sectionSelectors/description string
The description displayed to the candidate for the section selector section.
sectionSelectors/duration integer
The time the candidate had to select a section, in minutes.
sectionSelectors/requiredSections integer
The number of sections the candidate must complete within the section selector section.
IRTDomain array
If the passMarkType is IRT Theta, contains the information of any IRT_Domain tags. For more information on IRT grade boundaries, read Setting up grade boundaries and About IRT tags.
IRTDomain/name string
The tag value’s name.
IRTDomain/IRTScore integer
The score achieved by the candidate.
IRTDomain/scaleScore integer
examWindowStartTime string
The test session’s Start Time, in HH:MM format.
allowedDuration integer
reasonableAdjustments object
Contains the information for any reasonable adjustments applied to the test session.
reasonableAdjustments/totalTimeAdded integer
The additional time awarded to the candidate.
reasonableAdjustments/reasonForAdjustment string
The reason provided for awarding additional time to the candidate.
re-mark Boolean
Determines whether test has been re-marked. If true, the test has been re-marked.
voidReason enumeration
The reason the test is being voided. The available options are NotYetStarted, Absent, Withdrawn, PartiallyCompleted, and Other.
actualDuration integer
cutScoreAvailableMarks integer
purchaseOrder string
The external invoice number stored against the test session, if stored during scheduling.
started Boolean
Determines whether the test was started. If true, the candidate started the test.
isReview Boolean
Determines whether the test is a quality review test (in QualityReview state). If true, the test is a quality review test.
analysis array
Contains the Learning Outcome and Unit candidate breakdown information.
analysis/unitName string
The Unit’s name.
analysis/attemptCount integer
The number of times an item with the Unit was attempted.
analysis/correctCount integer
The number of times an item with the Unit was answered correctly.
analysis/totalMark integer
The total number of marks available for all items with the Unit.
analysis/userMark integer
The total number of marks the candidate achieved for all items with the Unit.
analysis/learningOutcomes object
Contains the information of any Learning Outcomes assigned to items in the test.
analysis/learningOutcomes/learningOutcomeName string
The Learning Outcome’s name.
analysis/learningOutcomes/attemptCount integer
The number of times an item with this Learning Outcome was attempted.
analysis/learningOutcomes/correctCount integer
The number of times an item with this Learning Outcome was answered correctly.
analysis/learningOutcomes/totalMark integer
The total number of marks available for all items with this Learning Outcome.
analysis/learningOutcomes/userMark integer
The total number of marks the candidate achieved for all items with this Learning Outcome.
analysis/learningOutcomes/score integer
The score shown in Results if Show ‘Result’ Column is enabled in test settings.
downloads array
Contains the download data if the test was downloaded to SecureClient. For more information, read Downloading a test to take later in SecureClient.
downloads/os string
The operating system used to download the test.
downloads/ipAddress string
The IP address used to download the test.
downloads/machineName string
The name of the machine used to download the test.
downloads/dateTime string
The date and time the test was downloaded, in HH:MM:SS Day DD Month YYYY format.
downloads/local Boolean
downloads/userName string
The username of the user who downloaded the test.
errors string
Information about any errors that occurred during the request.
serverTimeZone enumeration
The timezone of the server sending the response.
Listing item responses
Send a request to the endpoint to retrieve a list of item responses for the specified result. Refer to the available parameters to influence the response. No request body is required.
Parameters
Parameters are passed with the endpoint to influence the response. Header parameters are included in the request header. Path parameters are extensions of the endpoint, and query parameters follow ? after any path parameters.
Name |
Parameter |
Input |
Description |
---|---|---|---|
authorization |
header MANDATORY |
Basic {credentials} |
Basic authentication details must be passed to authorise the user’s request, where {credentials} is a Base64 encoded username:password string. |
accept |
header OPTIONAL |
application/json or application/xml |
Determines data format of the response, which can be either JSON or XML. |
id |
path OPTIONAL |
/api/v2/Result/{id}/ItemResponse |
Returns item response information for the specified result, where {id} is the result’s unique identifier. |
keycode |
path OPTIONAL |
/api/v2/Result/{keycode}/ItemResponse |
Returns item response information for the specified result, where {keycode} is the candidate’s unique keycode used to enter the test. |
top |
query OPTIONAL |
/api/v2/Result/{id}/ItemResponse?$top={top} |
Defines number of responses to return when paging a response, where {id} is the result’s unique identifier (or candidate’s unique keycode) and {top} is a number between 1 and 40. |
skip |
query OPTIONAL |
/api/v2/Result/{id}/ItemResponse?$skip={skip} |
Defines how many responses to skip when paging a response, where {id} is the result’s unique identifier (or candidate’s unique keycode) and {skip} is a number that should not exceed the total number of responses. |
markedExternally |
query OPTIONAL |
/api/v2/Result/{id}/ItemResponse?markedExternally={Boolean} |
Determines whether to include results for test sessions with the markedExternally property set to true (at the point of scheduling) in the response, where {id} is the result’s unique identifier (or candidate’s unique keycode), and {Boolean} is one of true or false. |
Sample response
If successful, the HTTP status code will be 200 and the response body will contain the information in either JSON or XML format as requested.
{
"count": 13,
"top": 10,
"skip": 0,
"pageCount": 2,
"nextPageLink": "https://{your Surpass instance}.surpass.com:443/api/v2/Result/H8JBWWX8/ItemResponse?$skip=10",
"prevPageLink": null,
"response": [
{
"id": 1,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"itemId": "5194P1"
},
{
"id": 2,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P2",
"itemId": "5194P2"
},
{
"id": 3,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P3",
"itemId": "5194P3"
},
{
"id": 4,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P4",
"itemId": "5194P4"
},
{
"id": 5,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P5",
"itemId": "5194P5"
},
{
"id": 6,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P6",
"itemId": "5194P6"
},
{
"id": 7,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P7",
"itemId": "5194P7"
},
{
"id": 8,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P8",
"itemId": "5194P8"
},
{
"id": 9,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P9",
"itemId": "5194P9"
},
{
"id": 10,
"reference": "H8JBWWX8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P10",
"itemId": "5194P10"
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Response schema
The response schema contains a description of every property that can be returned for this endpoint.
count integer
Details how many responses there are in total.
top integer
Details number of responses returned in the response.
skip integer
Details how many responses were skipped to display those in the response.
pageCount integer
Details how many pages of responses there are.
nextPageLink string
The endpoint to call the next page of responses. If null, the response is the last page of responses.
prevPageLink string
The endpoint to call the previous page of responses. If null, the response is the first page of responses.
response array
Contains the rest of the response.
id integer
The result’s unique identifier.
reference string
The result’s unique reference code. This is the same as the candidate’s unique keycode used to enter the test.
href string
The endpoint to call the item response’s information, such as /api/v2/Result/{id}/ItemResponse/{id} where {id} is the result’s unique identifier and {id} is the item response’s unique identifier.
If opened in a browser, this URL returns the item response’s information in XML format.
itemId string
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
errors string
Information about any errors that occurred during the request.
serverTimeZone enumeration
The timezone of the server sending the response.
Retrieving item responses
Send a request to the endpoint to retrieve information for the specified item response. Refer to the available parameters to influence the response. No request body is required.
Parameters
Parameters are passed with the endpoint to influence the response. Header parameters are included in the request header. Path parameters are extensions of the endpoint, and query parameters follow ? after any path parameters.
Name |
Parameter |
Input |
Description |
---|---|---|---|
authorization |
header MANDATORY |
Basic {credentials} |
Basic authentication details must be passed to authorise the user’s request, where {credentials} is a Base64 encoded username:password string. |
accept |
header OPTIONAL |
application/json or application/xml |
Determines data format of the response, which can be either JSON or XML. |
id |
path OPTIONAL |
/api/v2/Result/{id}/ItemResponse/{id} |
Returns item response information for the specified result, where {id} is the result’s unique identifier (or candidate’s unique keycode) and {id} is the response’s unique identifier. |
surpassReference |
path OPTIONAL |
/api/v2/Result/{id}/ItemResponse/{surpassReference} |
Returns item response information for the specified result, where {id} is the result’s unique identifier (or candidate’s unique keycode) and {surpassReference} is the response’s unique reference code (the item’s unique identifier). |
Sample responses
If successful, the HTTP status code will be 200 and the response body will contain the information in either JSON or XML format as requested.
The following responses contain an example response for each item type.
Multiple Choice questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [
{
"optionList": [
{
"id": 1,
"correct": true,
"selected": true,
"label": "A",
"weightedMark": null,
"requiresExtraInfo": false,
"extraInfo": "",
"extraInfoLabel": ""
},
{
"id": 2,
"correct": false,
"selected": false,
"label": "B",
"weightedMark": null,
"requiresExtraInfo": false,
"extraInfo": "",
"extraInfoLabel": ""
},
{
"id": 3,
"correct": false,
"selected": false,
"label": "C",
"weightedMark": null,
"requiresExtraInfo": false,
"extraInfo": "",
"extraInfoLabel": ""
}
],
"userMark": 1.000,
"type": "Question",
"markType": "Standard",
"awardedMark": 1.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true
}
],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Multiple Response questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [
{
"combinations": [],
"partialMarks": true,
"maxSelections": 2,
"optionList": [
{
"id": 1,
"correct": true,
"selected": true,
"htmlText": "<p>Maastricht</p>",
"label": "A",
"weightedMark": null,
"requiresExtraInfo": false,
"extraInfo": "",
"extraInfoLabel": "",
"exclusiveOption": false
},
{
"id": 2,
"correct": false,
"selected": false,
"htmlText": "<p>Ghent</p>",
"label": "B",
"weightedMark": null,
"requiresExtraInfo": false,
"extraInfo": "",
"extraInfoLabel": "",
"exclusiveOption": false
},
{
"id": 3,
"correct": true,
"selected": true,
"htmlText": "<p>Utrecht</p>",
"label": "C",
"weightedMark": null,
"requiresExtraInfo": false,
"extraInfo": "",
"extraInfoLabel": "",
"exclusiveOption": false
}
],
"userMark": 0.250,
"type": "Question",
"markType": "Standard",
"awardedMark": 1.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true
}
],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Essay questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [
{
"userMark": 0.800,
"type": "None",
"awardedMark": 1.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true,
"candidateResponse": {
"response": "<p>The key differences between Aldous Huxley's 'Brave New World' and George Orwell's '1984' are...</p>"
}
}
],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Short Answer questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [
{
"userMark": 1.000,
"type": "Question",
"awardedMark": 1.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true,
"candidateResponse": [
{
"response": "London",
"answers": [
"London",
"Londres",
"Landan"
]
},
{
"response": "Belfast",
"answers": [
"Belfast",
"Belphast",
"Bellfast"
]
}
]
}
],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Either/Or questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [
{
"userMark": 1.000,
"type": "Question",
"optionList": [
{
"id": 1,
"correct": true,
"selected": true,
"htmlText": "<p>True</p>",
"label": "A"
},
{
"id": 2,
"correct": false,
"selected": false,
"label": "B"
}
],
"awardedMark": 1.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true
}
],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Numerical Entry questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [
{
"type": "Question",
"awardedMark": 0.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true,
"candidateResponse": [
{
"response": 5.0,
"answers": [
0.0
]
},
{
"response": 21.0,
"answers": [
0.0
]
}
]
},
{
"type": "Question",
"awardedMark": 0.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": false
},
{
"type": "Question",
"awardedMark": 0.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": false
}
],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Audio Capture questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [
{
"response": "",
"type": "Question",
"awardedMark": 0.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": false
}
],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Likert questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [
{
"type": "Survey",
"awardedMark": 0.0,
"id": "5194P1",
"attempted": true,
"options": [
{
"id": 1,
"htmlText": "<p>Not satisfied</p>"
},
{
"id": 2,
"htmlText": "<p>Satisfied</p>"
},
{
"id": 3,
"htmlText": "<p>Very satisfied</p>"
}
],
"statements": [
{
"id": 1,
"htmlText": "<p>Materials</p>"
},
{
"id": 2,
"htmlText": "<p>Teaching</p>"
},
{
"id": 3,
"htmlText": "<p>Assessment</p>"
}
],
"selections": [
{
"optionId": 1,
"statementId": 2
},
{
"optionId": 2,
"statementId": 2
},
{
"optionId": 3,
"statementId": 1
}
]
}
],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Extended Matching questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [
{
"type": "Question",
"awardedMark": 0.0,
"id": "5194P1",
"attempted": true,
"linkingType": "OneToOne",
"leftBoxes": [
{
"Id": 1,
"Text": "One Flew Over the Cuckoo's Nest"
},
{
"Id": 2,
"Text": "Gone Girl"
},
{
"Id": 3,
"Text": "The Handmaid's Tale"
}
],
"rightBoxes": [
{
"Id": 1,
"Text": "Margaret Atwood"
},
{
"Id": 2,
"Text": "Ken Kesey"
},
{
"Id": 3,
"Text": "Gillian Flynn"
}
],
"correctLinks": [
{
"LeftOption": 1,
"RightOption": 2
},
{
"LeftOption": 2,
"RightOption": 3
},
{
"LeftOption": 3,
"RightOption": 1
}
],
"candidateResponse": [
{
"LeftOption": 2,
"RightOption": 2
},
{
"LeftOption": 1,
"RightOption": 3
},
{
"LeftOption": 3,
"RightOption": 1
}
]
}
],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Select From a List questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": [
{
"type": "Question",
"optionLists": [
{
"options": [
{
"id": 1,
"text": "Manchester",
"correct": false,
"selected": true
},
{
"id": 2,
"text": "London",
"correct": true,
"selected": false
}
],
"userMark": 0.0,
"id": "1",
"attempted": true
}
],
"awardedMark": 0.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true
}
]
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
File Attach questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [
{
"files": [
{
"fileName": "Geography Question Response.txt",
"content": "QEBA"
}
],
"userMark": 0.300,
"type": "Question",
"awardedMark": 1.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true
}
],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Drag and Drop questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [
{
"userMark": 1.000,
"type": "Question",
"awardedMark": 3.0,
"id": "5194P68043",
"weighting": 1.0,
"attempted": true,
"marking": "PartialMark",
"weightedMarking": false,
"dropZones": [
{
"id": "1",
"title": "Brazil",
"maxOptions": 1,
"correctDragOptions": [
{
"id": "1",
"value": null,
"mark": null,
"mediaId": 1,
"mediaName": "Brazil Flag"
}
],
"candidateResponse": [
{
"id": "1",
"mediaId": 1,
"mediaName": "Brazil Flag",
"awardedMark": null,
"isCorrect": true
}
]
},
{
"id": "2",
"title": "France",
"maxOptions": 1,
"correctDragOptions": [
{
"id": "2",
"value": null,
"mark": null,
"mediaId": 2,
"mediaName": "France Flag"
}
],
"candidateResponse": [
{
"id": "2",
"mediaId": 2,
"mediaName": "France Flag",
"awardedMark": null,
"isCorrect": true
}
]
},
{
"id": "3",
"title": "South Africa",
"maxOptions": 1,
"correctDragOptions": [
{
"id": "3",
"value": null,
"mark": null,
"mediaId": 3,
"mediaName": "South Africa Flag"
}
],
"candidateResponse": [
{
"id": "3",
"mediaId": 3,
"mediaName": "South Africa Flag",
"awardedMark": null,
"isCorrect": true
}
]
}
],
"unassignedDragOptions": []
}
],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Hotspot questions
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"multipleChoiceQuestions": [],
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/ItemResponse/5194P1",
"multipleResponseQuestions": [],
"eitherOrQuestions": [],
"unsupportedQuestionTypes": [],
"voiceCaptureQuestions": [],
"fileAttachQuestions": [],
"likertQuestions": [],
"dragAndDropQuestions": [],
"numericalEntryQuestions": [],
"shortAnswerQuestions": [],
"extendedMatchingQuestions": [],
"hotSpotQuestions": [
{
"type": "Question",
"awardedMark": 0.0,
"id": "5194P1",
"weighting": 1.0,
"attempted": true,
"areaType": "polygon",
"candidateResponse": {
"co-ordinates": "536, 136"
}
}
],
"essayQuestions": [],
"selectFromAListQuestions": []
"itemVersion": 1
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Response schema
The response schema contains a description of every property that can be returned for this endpoint.
count integer
Details how many responses there are in total. This is null because the information retrieved is for a specific response.
top integer
Details number of responses returned in the response. This is null because the information retrieved is for a specific response.
skip integer
Details how many responses were skipped to display those in the response. This is null because the information retrieved is for a specific response.
pageCount integer
Details how many pages of responses there are. This is null because the information retrieved is for a specific response.
nextPageLink string
The endpoint to call the next page of responses. This is null because the information retrieved is for a specific response.
prevPageLink string
The endpoint to call the previous page of responses. This is null because the information retrieved is for a specific response.
response array
Contains the rest of the response.
multipleChoiceQuestions array
Contains information relating to the Multiple Choice question type.
A Multiple Choice question offers candidates a set of possible answers to a problem. One of these answers is the correct answer and the others are plausible but incorrect answers (also known as “distractors”). Candidates can select one answer option as their response.
If null, the item is not a Multiple Choice question.
multipleChoiceQuestions/optionList array
Contains the answer options’ information. A separate object is returned for each answer option.
multipleChoiceQuestions/optionList/id integer
The answer option’s unique identifier.
multipleChoiceQuestions/optionList/correct Boolean
Determines whether the answer option is the correct answer if the Marking type is set to Standard. If true, the answer option is the correct answer.
multipleChoiceQuestions/optionList/selected Boolean
Determines whether the answer option was selected by the candidate. If true, the candidate selected the answer option.
multipleChoiceQuestions/optionList/label string
The label text for the answer option if Add Labels for Candidate Delivery has been enabled.
multipleChoiceQuestions/optionList/weightedMark integer
The mark assigned to the answer option if the Marking type is set to Weighted.
multipleChoiceQuestions/optionList/requiresExtraInfo Boolean
If the item is a Multiple Choice survey item, determines whether the candidate is required to provide more information if selecting this answer option. If true, the candidate was required to provide more information.
multipleChoiceQuestions/optionList/extraInfo string
Extra information provided by the candidate if the item is a Multiple Choice survey item and the candidate was required to provide more information.
multipleChoiceQuestions/optionList/extraInfoLabel string
The text displayed to the candidate to indicate they needed to provide more information if the item is a Multiple Choice survey item and the candidate was required to provide more information.
multipleChoiceQuestions/userMark integer
The mark awarded for the item between 0-1.
multipleChoiceQuestions/type enumeration
Determines whether item is a Question or a Survey item.
multipleChoiceQuestions/markType enumeration
Determines whether the Marking type for the question is Standard or Weighted.
multipleChoiceQuestions/awardedMark integer
The mark achieved by the candidate for the item.
multipleChoiceQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
multipleChoiceQuestions/weighting integer
The weighting applied to the item.
multipleChoiceQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
href string
The endpoint to call the item response’s information, such as /api/v2/Result/{id}/ItemResponse/{id} where {id} is the result’s unique identifier and {id} is the item response’s unique identifier.
If opened in a browser, this URL returns the item response’s information in XML format.
multipleResponseQuestions array
Contains information relating to the Multiple Response question type.
A Multiple Response question offers candidates a set of possible answers to a question. The options contain correct answers and plausible but incorrect answers (also known as distractors). Candidates can select multiple answer options as their response.
If null, the item is not a Multiple Response question.
multipleResponseQuestions/combinations array
Contains the answer option combinations’ information if the Marking type is set to Combination.
multipleResponseQuestions/combinations/mark integer
The number of marks for the answer option combination.
multipleResponseQuestions/combinations/selected Boolean
Determines whether the answer option combination was selected by the candidate. If true, the candidate selected the answer option combination.
multipleResponseQuestions/combinations/Options array
Contains the information for the individual answer options that make up the answer option combination.
multipleResponseQuestions/combinations/Options/Id integer
The answer options’ unique identifiers.
multipleResponseQuestions/partialMarks Boolean
Determines whether the Only award mark if candidate selects all correct options setting is enabled (false) or not (true).
multipleResponseQuestions/maxSelections integer
The maximum number of answer options the candidate can select. This is determined by the Maximum number of candidate selections setting, the options for which are Equal to correct options, No Limit, or Custom.
multipleResponseQuestions/optionList array
Contains the answer options’ information. A separate object is returned for each answer option.
multipleResponseQuestions/optionList/id string
The answer option’s unique identifier.
multipleResponseQuestions/optionList/correct Boolean
Determines whether the answer option is the correct answer if the Marking type is set to Standard. If true, the answer option is the correct answer.
multipleResponseQuestions/optionList/selected Boolean
Determines whether the answer option was selected by the candidate. If true, the candidate selected the answer option.
multipleResponseQuestions/optionList/htmlText string
The answer option text, in HTML format.
multipleResponseQuestions/optionList/label string
The label text for the answer option if Add Labels for Candidate Delivery has been enabled.
multipleResponseQuestions/optionList/weightedMark integer
The mark assigned to the answer option if the Marking type is set to Weighted.
multipleResponseQuestions/optionList/requiresExtraInfo Boolean
If the item is a Multiple Response survey item, determines whether the candidate is required to provide more information if selecting this answer option. If true, the candidate was required to provide more information.
multipleResponseQuestions/optionList/extraInfo string
Extra information provided by the candidate if the item is a Multiple Response survey item and the candidate was required to provide more information.
multipleResponseQuestions/optionList/extraInfoLabel string
The text displayed to the candidate to indicate they needed to provide more information if the item is a Multiple Response survey item and the candidate was required to provide more information.
multipleResponseQuestions/optionList/exclusiveOption Boolean
Determines whether the answer option is set to be an Exclusive Option, meaning it cannot be selected in conjunction with other answer options. If true, the answer option is exclusive.
multipleResponseQuestions/userMark integer
The mark awarded for the item between 0-1.
multipleResponseQuestions/type enumeration
Determines whether item is a Question or a Survey item.
multipleResponseQuestions/markType enumeration
Determines whether the Marking type for the question is Standard or Weighted.
multipleResponseQuestions/awardedMark integer
The mark achieved by the candidate for the item.
multipleResponseQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
multipleResponseQuestions/weighting integer
The weighting applied to the item.
multipleResponseQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
eitherOrQuestions array
Contains information relating to the Either/Or question type.
An Either/Or question offers candidates two possible answers to a problem: one of these is the correct answer and the other is a plausible but incorrect answer (also known as a distractor). Candidates can select one answer option as their response.
If null, the item is not an Either/Or question.
eitherOrQuestions/userMark integer
The mark awarded for the item between 0-1.
eitherOrQuestions/type enumeration
Determines whether item is a Question or a Survey item. Either/Or questions cannot be survey items.
eitherOrQuestions/optionList array
Contains the answer options’ information. A separate object is returned for each answer option.
eitherOrQuestions/optionList/id string
The answer option’s unique identifier.
eitherOrQuestions/optionList/correct Boolean
Determines whether the answer option is the correct answer if the Marking type is set to Standard. If true, the answer option is the correct answer.
eitherOrQuestions/optionList/selected Boolean
Determines whether the answer option was selected by the candidate. If true, the candidate selected the answer option.
eitherOrQuestions/optionList/htmlText string
The answer option text, in HTML format.
eitherOrQuestions/optionList/label string
The label text for the answer option if Add Labels for Candidate Delivery has been enabled.
eitherOrQuestions/awardedMark integer
The mark achieved by the candidate for the item.
eitherOrQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
eitherOrQuestions/weighting integer
The weighting applied to the item.
eitherOrQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
unsupportedQuestionTypes array
Contains information relating to any unsupported item types.
If null, the item is a supported item type.
unsupportedQuestionTypes/userMark integer
The mark awarded for the item between 0-1.
unsupportedQuestionTypes/type enumeration
Determines whether item is a Question or a Survey item.
unsupportedQuestionTypes/awardedMark integer
The mark achieved by the candidate for the item.
unsupportedQuestionTypes/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
unsupportedQuestionTypes/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
voiceCaptureQuestions array
Contains information relating to the Audio Capture question type.
An Audio Capture question allows candidates to record a verbal response to a prompt.
If null, the item is not an Audio Capture question.
voiceCaptureQuestions/response string
The audio file data in encoded Base64 format.
voiceCaptureQuestions/fileType string
The audio file’s filetype.
voiceCaptureQuestions/userMark integer
The mark awarded for the item between 0-1.
voiceCaptureQuestions/type enumeration
Determines whether item is a Question or a Survey item. Audio Capture questions cannot be survey items.
voiceCaptureQuestions/awardedMark integer
The mark achieved by the candidate for the item.
voiceCaptureQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
voiceCaptureQuestions/weighting integer
The weighting applied to the item.
voiceCaptureQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
fileAttachQuestions array
Contains information relating to the File Attach question type.
A File Attach question allows candidates to work in an external app (like a word processor or spreadsheet editor) and upload a file as their response. Candidates can be provided a template file to complete, let candidates work from a blank file, or ask candidates to provide their own files.
If null, the item is not a File Attach question.
fileAttachQuestions/files array
Contains the information for any files uploaded by the candidate.
fileAttachQuestions/files/fileName string
The file name.
fileAttachQuestions/files/content string
The file data in encoded Base64 format.
fileAttachQuestions/userMark integer
The mark awarded for the item between 0-1.
fileAttachQuestions/type enumeration
Determines whether item is a Question or a Survey item. File Attach questions cannot be survey items.
fileAttachQuestions/awardedMark integer
The mark achieved by the candidate for the item.
fileAttachQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
fileAttachQuestions/weighting integer
The weighting applied to the item.
fileAttachQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
likertQuestions array
Contains information relating to the Likert survey question type.
A Likert survey item is a non-scored question type that lets candidates respond to a statement along a scale (for example, “1, 2, 3, 4, 5” or “Poor, Fair, Average, Good, Great”). Likert scales are used to measure candidates’ opinions on a given topic.
If null, the item is not a File Attach question.
likertQuestions/type enumeration
Determines whether item is a Question or a Survey item.
likertQuestions/awardedMark integer
The mark achieved by the candidate for the item.
likertQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
likertQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
likertQuestions/options array
Contains the answer options’ information. A separate object is returned for each answer option.
likertQuestions/options/id string
The answer option’s unique identifier.
likertQuestions/options/htmlText string
The answer option text, in HTML format.
likertQuestions/statements array
Contains the statement’s information if the likertQuestions/isMatrixMode is set to true.
likertQuestions/statements/id integer
The statement’s unique identifier.
likertQuestions/statements/text string
The statement’s text, in HTML format.
likertQuestions/selections array
Contains the combination of answer option and statement the candidate selected if the likertQuestions/isMatrixMode is set to true.
likertQuestions/selections/optionId integer
The answer option’s unique identifier.
likertQuestions/selections/statementId integer
The statement’s unique identifier.
dragAndDropQuestions array
Contains information relating to the Drag and Drop question type.
A Drag and Drop question consists of text-based “drag options” that candidates must place in the appropriate “drop zones”. The available drag options might include distractors that are not associated with any drop zone.
If null, the item is not a Drag and Drop question.
dragAndDropQuestions/userMark integer
The mark awarded for the item between 0-1.
dragAndDropQuestions/type enumeration
Determines whether item is a Question or a Survey item. Drag and Drop questions cannot be survey items.
dragAndDropQuestions/awardedMark integer
The mark achieved by the candidate for the item.
dragAndDropQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
dragAndDropQuestions/weighting integer
The weighting applied to the item.
dragAndDropQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
dragAndDropQuestions/marking enumeration
Determines whether the Only award mark if candidate selects all correct options setting is enabled. If PartialMark, this setting is disabled.
dragAndDropQuestions/weightedMarking Boolean
Determines whether the Marking type is set to Standard (false) or Weighted marking (true).
dragAndDropQuestions/dropZones array
Contains the drop zones’ information.
dragAndDropQuestions/dropZones/id integer
The drop zone’s unique identifier.
dragAndDropQuestions/dropZones/title string
The drop zone’s title.
dragAndDropQuestions/dropZones/maxOptions integer
The maximum number of drag options for the drop zone.
dragAndDropQuestions/dropZones/correctDragOptions array
Contains the correct drag options’ information. A separate object is returned for each drag option.
dragAndDropQuestions/dropZones/correctDragOptions/id integer
The drag option’s unique identifier.
dragAndDropQuestions/dropZones/correctDragOptions/value integer
The drag option’s text, in HTML format. If null, the item is an Advanced Drag and Drop question.
dragAndDropQuestions/dropZones/correctDragOptions/mark integer
The mark available for the drag option.
dragAndDropQuestions/dropZones/correctDragOptions/mediaId integer
The media’s unique identifier.
dragAndDropQuestions/dropZones/correctDragOptions/mediaName string
The media’s name.
dragAndDropQuestions/dropZones/candidateResponse array
Contains the candidate’s response (the drag option(s) placed in the drop zone). A separate object is returned for each response.
dragAndDropQuestions/dropZones/candidateResponse/id integer
The drag option’s unique identifier.
dragAndDropQuestions/dropZones/candidateResponse/mediaId integer
The media’s unique identifier.
dragAndDropQuestions/dropZones/candidateResponse/mediaName string
The media’s name.
dragAndDropQuestions/dropZones/candidateResponse/awardedMark integer
The mark awarded to the candidate.
dragAndDropQuestions/dropZones/candidateResponse/isCorrect Boolean
Determines whether the candidate placed the correct drag option in the drop zone. If true, the candidate answered correctly.
numericalEntryQuestions array
Contains information relating to the Numerical Entry question type.
An Either/Or question offers candidates two possible answers to a problem: one of these is the correct answer and the other is a A Numerical Entry question requires candidates to submit a number in response to a prompt.
If null, the item is not a Numerical Entry question.
numericalEntryQuestions/type enumeration
Determines whether item is a Question or a Survey item. Numerical Entry questions cannot be survey items.
numericalEntryQuestions/awardedMark integer
The mark achieved by the candidate for the item.
numericalEntryQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
numericalEntryQuestions/weighting integer
The weighting applied to the item.
numericalEntryQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
numericalEntryQuestions/candidateResponse array
Contains the candidate’s response. A separate object is returned for each response.
numericalEntryQuestions/candidateResponse/response integer
The candidate’s response.
numericalEntryQuestions/candidateResponse/answers array
The question’s correct answers.
numericalEntryQuestions/candidateResponse/answerRange object
If the question is set to Range, contains the information for the range of values.
numericalEntryQuestions/candidateResponse/answerRange/minValue integer
The range’s Min Value.
numericalEntryQuestions/candidateResponse/answerRange/maxValue integer
The range’s Max Value.
shortAnswerQuestions array
Contains information relating to the Short Answer question type.
A Short Answer question requires candidates to submit a word in response to a prompt.
If null, the item is not a Short Answer question.
shortAnswerQuestions/userMark integer
The mark awarded for the item between 0-1.
shortAnswerQuestions/type enumeration
Determines whether item is a Question or a Survey item. Short Answer questions cannot be survey items.
shortAnswerQuestions/awardedMark integer
The mark achieved by the candidate for the item.
shortAnswerQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
shortAnswerQuestions/weighting integer
The weighting applied to the item.
shortAnswerQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
shortAnswerQuestions/candidateResponse array
Contains the candidate’s response. A separate object is returned for each response.
shortAnswerQuestions/candidateResponse/response integer
The candidate’s response.
shortAnswerQuestions/candidateResponse/answers array
The question’s correct answers.
extendedMatchingQuestions array
Contains information relating to the Extended Matching question type.
An Extended Matching question asks candidates to draw links between two lists of content. Candidates may be able to draw one or many links from and to each answer option. Candidates can delete links by right-clicking on links in legacy tests and selecting Remove in standard tests.
If null, the item is not an Extended Matching question.
extendedMatchingQuestions/type enumeration
Determines whether item is a Question or a Survey item. Extended Matching questions cannot be survey items.
extendedMatchingQuestions/awardedMark integer
The mark achieved by the candidate for the item.
extendedMatchingQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
extendedMatchingQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
extendedMatchingQuestions/linkingType enumeration
Determines what linking type is being used: OneToOne, OneToMany, ManyToOne, or ManyToMany.
extendedMatchingQuestions/leftBoxes array
Contains all the answer options on the left’s information.
extendedMatchingQuestions/leftBoxes/id integer
The answer option’s unique identifier.
extendedMatchingQuestions/leftBoxes/text string
The answer option’s text. If null, the item is in an HTML subject and the answer option is an image.
extendedMatchingQuestions/rightBoxes array
Contains all the answer options on the right’s information.
extendedMatchingQuestions/rightBoxes/id integer
The answer option’s unique reference code.
extendedMatchingQuestions/rightBoxes/text string
The answer option’s text. If null, the item is in an HTML subject and the answer option is an image.
extendedMatchingQuestions/correctLinks array
Contains all the matching answer option combinations’ information.
extendedMatchingQuestions/correctLinks/LeftOption integer
The left answer option’s unique identifier.
extendedMatchingQuestions/correctLinks/RightOption integer
The right answer option’s unique identifier.
extendedMatchingQuestions/candidateResponse array
Contains the candidate’s response. A separate object is returned for each response.
extendedMatchingQuestions/candidateResponse/LeftOption integer
The unique identifier for the left answer option selected by the candidate.
extendedMatchingQuestions/candidateResponse/RightOption integer
The unique identifier for the right answer option selected by thecandidate.
hotSpotQuestions array
Contains information relating to the Hotspot question type.
A Hotspot question asks candidates to find and select a specific part of an image. The correct area can be either rectangular or polygonal.
If null, the item is not a Hotspot question.
hotSpotQuestions/type enumeration
Determines whether item is a Question or a Survey item. Hotspot questions cannot be survey items.
hotSpotQuestions/awardedMark integer
The mark achieved by the candidate for the item.
hotSpotQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
hotSpotQuestions/weighting integer
The weighting applied to the item.
hotSpotQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
hotSpotQuestions/areaType enumeration
The Hotspot answer area type. This is either rectangle or polygon.
hotSpotQuestions/candidateResponse object
Contains the candidate’s response.
hotSpotQuestions/candidateResponse/co-ordinates string
The co-ordinates (in PX) of the point on the image selected by the candidate.
essayQuestions array
Contains information relating to the Essay question type.
An Essay question asks candidates to provide an extended written response to a prompt.
If null, the item is not an Essay question.
essayQuestions/userMark integer
The mark awarded for the item between 0-1.
essayQuestions/type enumeration
Determines whether item is a Question or a Survey item.
essayQuestions/awardedMark integer
The mark achieved by the candidate for the item.
essayQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
essayQuestions/weighting integer
The weighting applied to the item.
essayQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
essayQuestions/candidateResponse array
Contains the candidate’s response.
essayQuestions/candidateResponse/response string
The candidate’s response in JSON format.
selectFromAListQuestions array
Contains information relating to the Select From a List question type.
A Select From a List question presents candidates with a string of text with certain words replaced by drop-down lists containing possible answers. At least one of these list items is the correct answer. The other list items are plausible but incorrect answers (also known as distractors).
If null, the item is not a Select From a List question.
selectFromAListQuestions/type enumeration
Determines whether item is a Question or a Survey item. Select From a List questions cannot be survey items.
selectFromAListQuestions/optionLists array
Contains the placeholders’ information.
selectFromAListQuestions/optionLists/options array
Contains the placeholder options’ information.
selectFromAListQuestions/optionLists/options/id integer
The placeholder option’s unique identifier.
selectFromAListQuestions/optionLists/options/text string
The placeholder option’s text.
selectFromAListQuestions/optionLists/options/correct Boolean
Determines whether the placeholder option is the correct answer option. If true, the placeholder option is the correct answer option.
selectFromAListQuestions/optionLists/options/selected Boolean
Determines whether the placeholder option was selected by the candidate. If true, the candidate selected the placeholder option.
selectFromAListQuestions/optionLists/userMark integer
The mark awarded for the placeholder between 0-1.
selectFromAListQuestions/optionLists/id integer
The placeholder’s unique identifier.
selectFromAListQuestions/optionList/attempted Boolean
Determines whether the candidate selected an option for the placeholder. If true, the candidate selected an option for the placeholder.
selectFromAListQuestions/awardedMark integer
The mark achieved by the candidate for the item.
selectFromAListQuestions/id integer
The item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
selectFromAListQuestions/weighting integer
The weighting applied to the item.
selectFromAListQuestions/attempted Boolean
Determines whether the item was attempted by the candidate. If true, the candidate attempted the item.
itemVersion integer
The version of the item attempted by the candidate.
errors string
Information about any errors that occurred during the request.
serverTimeZone enumeration
The timezone of the server sending the response.
Retrieving candidate interactions
Send a request to the endpoint to retrieve information on how the candidate interacted with the test session for the specified result. Refer to the available parameters to influence the response. No request body is required.
Parameters
Parameters are passed with the endpoint to influence the response. Header parameters are included in the request header. Path parameters are extensions of the endpoint, and query parameters follow ? after any path parameters.
Name |
Parameter |
Input |
Description |
---|---|---|---|
authorization |
header MANDATORY |
Basic {credentials} |
Basic authentication details must be passed to authorise the user’s request, where {credentials} is a Base64 encoded username:password string. |
accept |
header OPTIONAL |
application/json or application/xml |
Determines data format of the response, which can be either JSON or XML. |
id |
path OPTIONAL |
/api/v2/Result/{id}/CandidateInteractions |
Returns candidate interaction information for the specified result, where {id} is the result’s unique identifier. |
keycode |
path OPTIONAL |
/api/v2/Result/{keycode}/CandidateInteractions |
Returns candidate interaction information for the specified result, where {keycode} is the candidate’s unique keycode used to enter the test. |
includeDebugEvents |
query OPTIONAL |
/api/v2/Result/{id}/CandidateInteractions?includeDebugEvents={Boolean} |
Determines whether to include debug events in the response, where {id} is the result’s unique identifier (or candidate’s unique keycode), and {Boolean} is one of true or false. |
Sample response
If successful, the HTTP status code will be 200 and the response body will contain the information in either JSON or XML format as requested.
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"id": 1,
"reference": "8KC7QD4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/CandidateInteractions",
"interactions": [
{
"type": "key code validated",
"data": "<data>keyCode success: 8KC7QD4S</data>",
"time": "2016-12-14T10:46:11",
"itemId": ""
},
{
"type": "Exam Script Downloaded",
"data": "<data>success</data>",
"time": "2016-12-14T10:46:13",
"itemId": ""
},
{
"type": "All items downloaded",
"data": "<data>success</data>",
"time": "2016-12-14T10:46:14",
"itemId": ""
},
{
"type": "PUV",
"data": "<data>Exam Locked By PIN</data>",
"time": "2016-12-14T10:46:21",
"itemId": ""
},
{
"type": "MCQ Selection",
"data": "<data>Selected Answers:Scene Id: 1 Component Id:1 </data>",
"time": "2016-12-14T10:46:39",
"itemId": "5135P1477"
},
{
"type": "Button Clicked",
"data": "<data>m_nextBtn Section:Section 1 Question:3</data>",
"time": "2016-12-14T10:46:40",
"itemId": ""
},
{
"type": "MCQ Selection",
"data": "<data>Selected Answers:Scene Id: 1 Component Id:1 Item Id:1 A </data>",
"time": "2016-12-14T10:46:40",
"itemId": "5135P1"
},
{
"type": "Dirty Data Sent to The Server",
"data": "<data>success</data>",
"time": "2016-12-14T10:46:43",
"itemId": ""
},
{
"type": "MCQ Selection",
"data": "<data>Selected Answers:Scene Id: 1 Component Id:1 Item Id:1 A </data>",
"time": "2016-12-14T10:46:44",
"itemId": "5135P2"
},
{
"type": "Button Clicked",
"data": "<data>Button:@Name=CSelfSizingButton1401@Id=m_exitBtn@Label=Finish</data>",
"time": "2016-12-14T10:46:45",
"itemId": ""
},
{
"type": "Dialog Opened",
"data": "<data>CConfirmDialog2657 Title:Confirm Finish Label:Finish Message:Are you sure you would like to finish?</data>",
"time": "2016-12-14T10:46:45",
"itemId": ""
},
{
"type": "Button Clicked",
"data": "<data>Button:@Name=CButton2658@Id=m_confirmBtn@Label=Finish</data>",
"time": "2016-12-14T10:46:46",
"itemId": ""
},
{
"type": "Dialog Closed",
"data": "<data>CConfirmDialog2657 Title:Confirm Finish Label:Finish Message:Are you sure you would like to finish?</data>",
"time": "2016-12-14T10:46:46",
"itemId": ""
},
{
"type": "Dialog Opened",
"data": "<data>CConfirmDialog2718 Title:Confirm Finish Label:Cancel Message:If you select Finish, your answers will be submitted and you will not be able to return to the exam.</data>",
"time": "2016-12-14T10:46:46",
"itemId": ""
},
{
"type": "Button Clicked",
"data": "<data>Button:@Name=CButton2721@Id=m_cancelBtn@Label=Finish</data>",
"time": "2016-12-14T10:46:47",
"itemId": ""
},
{
"type": "Dialog Closed",
"data": "<data>CConfirmDialog2718 Title:Confirm Finish Label:Cancel Message:If you select Finish, your answers will be submitted and you will not be able to return to the exam.</data>",
"time": "2016-12-14T10:46:47",
"itemId": ""
},
{
"type": "Submitted Exam",
"data": "<data />",
"time": "2016-12-14T10:46:47",
"itemId": ""
}
]
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Response schema
The response schema contains a description of every property that can be returned for this endpoint.
count integer
Details how many candidate interactions there are in total. This is null because the information retrieved is for a specific set of candidate interactions.
top integer
Details number of candidate interactions returned in the response. This is null because the information retrieved is for a specific set of candidate interactions.
skip integer
Details how many candidate interactions were skipped to display those in the response. This is null because the information retrieved is for a specific set of candidate interactions.
pageCount integer
Details how many pages of candidate interactions there are. This is null because the information retrieved is for a specific set of candidate interactions.
nextPageLink string
The endpoint to call the next page of candidate interactions. This is null because the information retrieved is for a specific set of candidate interactions.
prevPageLink string
The endpoint to call the previous page of candidate interactions. This is null because the information retrieved is for a specific set of candidate interactions.
response array
Contains the rest of the response.
id integer
The result’s unique identifier.
reference string
The result’s unique reference code. This is the same as the candidate’s unique keycode used to enter the test.
href string
The endpoint to call the set of candidate interactions’ information, such as /api/v2/Result/{id}/CandidateInteractions where {id} is the result’s unique identifier.
interactions array
Contains the candidate interactions’ information.
interactions/type enumeration
The type of interaction. Refer to the table of candidate interaction events below this section for all possible event types.
interactions/data string
The details of the interaction, in XML format.
interactions/time string
The time of the interaction.
interactions/itemId string
If the interaction refers to an item, the item’s Surpass unique identifier (ID). A Surpass item ID is the item ID prefixed with the subject ID.
errors string
Information about any errors that occurred during the request.
serverTimeZone enumeration
The timezone of the server sending the response.
Candidate interactions table
The following table contains a description of every candidate interaction event that can be logged.
Event No. | Event Name | Data Description |
---|---|---|
10 |
MCQ Selection |
Logs whether the candidate selected a Multiple Choice, Multiple Response, or Either/Or answer option. The id refers to the answer option’s position in the test driver, as opposed to how it was authored. |
11 |
Gap Fill |
Logs whether the candidate interacted with a legacy Numerical Entry, Essay, or Short Answer question. The number of characters inputted by the candidate is also captured. |
99 |
Other Question |
Logs whether the candidate interacted with an unsupported question type. |
100 |
Button Clicked |
Logs whether the candidate selected a button in the test driver, including any other buttons thereafter. The name of each button and a timestamp are also captured. |
101 |
Dialog Opened |
Logs whether a dialog was opened in the test driver. The name and information included in the dialog are also captured. |
102 |
Dialog Closed |
Logs whether a dialog was closed in the test driver. The name and information included in the dialog are also captured. |
103 |
Tool Opened |
Logs whether a tool (or piece of source material) was opened by the candidate. The media type, file name and id are also captured. |
104 |
Tool Closed |
Logs whether a tool (or piece of source material) was closed by the candidate. The media type, file name and id are also captured. |
105 |
Submitted Exam |
Logs whether the candidate submitted their test (by selecting the Finish Test button). |
106 |
PUV |
Logs whether the test session was paused, unpaused, or voided by an invigilator. |
107 |
Keycode parameter received |
Logs whether the candidate is on the Confirm Details screen. |
108 |
key code validated |
Logs whether the candidate’s unique keycode used to enter the test was validated. The candidate’s keycode is captured. |
109 |
Exam Script Downloaded |
Logs whether the candidate’s script was downloaded after the candidate entered their keycode. |
110 |
All items downloaded |
Logs whether all the items in the candidate’s script were downloaded after the candidate entered their keycode. |
111 |
Pin Entered |
Logs whether the candidate entered a PIN or an invigilator manually unlocked the test. |
112 |
Dirty Data Sent to The Server |
To ensure resilience, SecureClient synchronises its responses to Surpass in case the candidate needs to switch machines during a test session. These requests are encrypted and unreadable, but their success (or lack of) is captured. |
113 | Resilience Mode |
Logs whether SecureClient’s resilience mode is enabled or not. If enabled, this means that connection was lost during the test session and SecureClient is working offline. |
114 |
Strike through |
Logs whether the candidate striked through a Multiple Choice, Multiple Response, or Either/Or answer option. The item’s id is captured. The optionId refers to the answer option’s position in the test driver, as opposed to how it was authored. |
115 |
Remove strike through |
Logs whether the candidate removed their strike through of a Multiple Choice, Multiple Response, or Either/Or answer option. The item’s id is captured. The optionId refers to the answer option’s position in the test driver, as opposed to how it was authored. |
116 |
Section selector opened |
Logs whether the candidate opened a section selector section. |
117 |
Section selector closed |
Logs whether the candidate closed a section selector section. |
118 |
Section selector section was selected |
Logs whether the candidate selected a section from within a section selector section. |
119 |
Section selector time expired |
Logs whether the section selector section timer expired. |
120 |
External Tool |
Logs whether an external tool was loaded. |
121 |
External Tool Opened By User |
Logs whether an external tool was opened by the candidate. |
122 |
External Tool Closed By User |
Logs whether an external tool was closed by the candidate. |
123 |
External Tool Closed By System |
Logs whether an external tool was closed by the system. |
124 |
Section Start Time |
Logs what time the candidate started the section. The section’s id is captured. |
125 |
Section End Time |
Logs what time the candidate started the section. The section’s id is captured. |
126 |
Scheduled Break Started |
Logs what time the candidate started their scheduled break. |
127 |
Scheduled Break Ended |
Logs what time the candidate ended their scheduled break. |
128 |
Scheduled Break Expired |
Logs whether the candidate’s scheduled break timer expired. |
129 |
Unscheduled Break Started |
Logs what time the candidate started their scheduled break.
NOTE: This is retired data.
|
130 |
Unscheduled Break Ended |
Logs what time the candidate ended their scheduled break.
NOTE: This is retired data.
|
131 |
Unscheduled Break Expired |
Logs whether the candidate’s scheduled break timer expired.
NOTE: This is retired data.
|
132 |
Resume Code Success |
Logs whether the candidate entered a resume code. |
133 |
Resume Code Failure |
Logs whether the candidate entered a resume code and the test session failed to resume. |
134 |
Security |
Logs whether the candidate’s computer user has changed, for example when they have logged out, their computer has shut down, or was accessed remotely. |
135 |
Closing |
Logs whether SecureClient was closed. |
136 |
Power |
Logs the candidate’s computer’s battery power levels. |
137 |
UnexpectedProcessStarted |
Logs whether an unexpected process was started, such as an external programme being used as a resource in the test. |
138 |
UnexpectedProcessStopped |
Logs whether an unexpected process was stopped, such as an external programme being used as a resource in the test. |
139 |
ExpectedProcessStarted |
Logs whether an expected process was started, such as an external programme being used as a resource in the test. |
140 | ExpectedProcessStopped |
Logs whether an expected process was stopped, such as an external programme being used as a resource in the test. |
141 | VirtualDesktopMode |
Logs whether the test was launched on a virtual desktop. |
142 | NonVirtualDesktopMode |
Logs whether the test was launched on a non-virtual desktop. |
143 DEBUG EVENT |
Intro Timer started |
Logs what time the introduction section was started and how many minutes are remaining. The section’s id is captured. |
144 DEBUG EVENT |
Intro Timer stopped |
Logs what time the introduction section was closed and how many minutes were remaining. The section’s id is captured. |
145 DEBUG EVENT |
Finish Timer started |
Logs what time the finish section was started and how many minutes are remaining. The section’s id is captured. |
146 DEBUG EVENT |
Finish Timer stopped |
Logs what time the finish section was closed and how many minutes were remaining. The section’s id is captured. |
147 DEBUG EVENT |
Test Timer started |
Logs what time the test was started and how many minutes are remaining. |
148 DEBUG EVENT |
Test Timer stopped |
Logs what time the test was closed and how many minutes were remaining. |
149 DEBUG EVENT |
Section Timer started |
Logs what time the section was started and how many minutes are remaining. The section’s id is captured. |
150 DEBUG EVENT |
Section Timer stopped |
Logs what time the section was closed and how many minutes were remaining. The section’s id is captured. |
151 DEBUG EVENT |
Scheduled Break Timer started |
Logs what time the candidate’s scheduled break started and how many minutes were remaining. |
152 DEBUG EVENT |
Scheduled Break Timer stopped |
Logs what time the candidate’s scheduled break was finished and how many minutes were remaining. |
153 DEBUG EVENT |
Unscheduled Break Timer started |
Logs what time the candidate’s unscheduled break started and how many minutes were remaining.
NOTE: This is retired data.
|
154 DEBUG EVENT |
Unscheduled Break Timer stopped |
Logs what time the candidate’s unscheduled break was finished and how many minutes were remaining.
NOTE: This is retired data.
|
155 DEBUG EVENT |
Section Selector Timer started |
Logs what time the section selector section was started and how many minutes are remaining. The section’s id is captured. |
156 DEBUG EVENT |
Section Selector Timer stopped |
Logs what time the section selector section was closed and how many minutes were remaining. The section’s id is captured. |
157 DEBUG EVENT |
Item opened in Read-Only mode |
Logs whether the candidate opened a read-only item; items can be viewed in read-only mode if a forward only section has the Allow item review setting enabled. The item’s name and id are also captured. |
158 DEBUG EVENT |
Item started loading |
Logs when an item begins loading. For example, when the candidate clicks Next. The item’s name and id are also captured. |
159 DEBUG EVENT |
Item successfully loaded |
Logs whether an item was successfully loaded and presented to the candidate. The item’s name and id are also captured. |
160 DEBUG EVENT |
Item successfully rendered |
Logs whether an item was successfully rendered and presented to the candidate. The item’s name and id are also captured. |
161 DEBUG EVENT |
Item failed to load or render |
Logs whether an item failed to load or render. The item’s name and id are also captured. |
162 DEBUG EVENT |
Survey Section Timer started |
Logs what time the survey section was started and how many minutes are remaining. The section’s id is captured. |
163 DEBUG EVENT |
Survey Section Timer stopped |
Logs what time the survey section was closed and how many minutes were remaining. The section’s id is captured. |
164 | Survey Option Additional Information |
Logs any additional information the candidate left in a survey answer option requiring additional information. |
165 | Recording Started |
Logs what time the candidate started recording audio. |
166 | Recording Completed |
Logs what time the candidate completed recording audio. |
167 | Recording Paused |
Logs whether the candidate paused their recording audio. |
168 | Microphone error |
Logs whether the candidate had an error with their microphone. |
169 | Recording Resumed |
Logs what time the candidate resumed recording audio. |
170 | Item Content Loaded |
Logs whether an item’s content was successfully loaded and presented to the candidate. The item’s name and id are also captured. |
171 | Item Timer Started |
Logs what time the item’s timer started and how many minutes are remaining. The item’s name and id are also captured. |
172 | Item Timer Stopped |
Logs what time the item’s timer stopped and how many minutes were remaining. The item’s name and id are also captured. |
173 | End Question and Move to Next Clicked |
Logs whether the candidate selected the End Question and Move to Next button.
NOTE: This is retired data.
|
174 DEBUG EVENT |
Short Answer key logging |
Logs whether the candidate interacted with a Short Answer question. The answer given and the number of characters inputted by the candidate are also captured. |
175 DEBUG EVENT |
Section Started |
Logs what time the section was started and how many minutes are remaining. The section’s id is captured. |
176 DEBUG EVENT |
Section Stopped |
Logs what time the section was finished and how many minutes were remaining. The section’s id is captured. |
177 DEBUG EVENT |
Numerical Entry Answer Key logging |
Logs whether the candidate interacted with a Numerical Entry question. The answer given and the number of characters inputted by the candidate are also captured. |
178 DEBUG EVENT |
Essay Answer Key logging |
Logs whether the candidate interacted with an Essay question. The answer given and the number of characters inputted by the candidate are also captured. |
179 DEBUG EVENT |
Survey Section Started |
Logs what time the survey section was started and how many minutes are remaining. The section’s id is captured. |
180 DEBUG EVENT |
Survey Section Stopped |
Logs what time the survey section was finished and how many minutes were remaining. The section’s id is captured. |
184 DEBUG EVENT |
Section Timed Out |
Logs whether the section timed out. |
186 DEBUG EVENT |
Item Timer Expired |
Logs whether the item timer expired. |
187 | SFL Selected Option Changed |
Logs whether the candidate selected a Select From a List answer option. |
189 | Drag And Drop Standard |
Logs whether the candidate interacted with a standard Drag and Drop question. The drag option and drop zone combinations selected by the candidate are also captured. |
190 | Drag And Drop Advanced |
Logs whether the candidate interacted with an Advanced Drag and Drop question. The drag option and drop zone combinations selected by the candidate are also captured. |
191 | Assistive Audio Started |
Logs what time the candidate started listening to assistive audio. |
192 | Assistive Audio Stopped |
Logs what time the candidate stopped listening to assistive audio. |
193 | CQT Event |
Logs whether the candidate interacted with a Custom Question. |
Retrieving client information
Send a request to the endpoint to retrieve information on the specification of the system used by the candidate in the test session for the specified result. Refer to the available parameters to influence the response. No request body is required.
Parameters
Parameters are passed with the endpoint to influence the response. Header parameters are included in the request header. Path parameters are extensions of the endpoint, and query parameters follow ? after any path parameters.
Name |
Parameter |
Input |
Description |
---|---|---|---|
authorization |
header MANDATORY |
Basic {credentials} |
Basic authentication details must be passed to authorise the user’s request, where {credentials} is a Base64 encoded username:password string. |
accept |
header OPTIONAL |
application/json or application/xml |
Determines data format of the response, which can be either JSON or XML. |
id |
path OPTIONAL |
/api/v2/Result/{id}/ClientInformation |
Returns client information for the specified result, where {id} is the result’s unique identifier. |
keycode |
path OPTIONAL |
/api/v2/Result/{keycode}/ClientInformation |
Returns client information for the specified result, where {keycode} is the candidate’s unique keycode used to enter the test. |
Sample response
If successful, the HTTP status code will be 200 and the response body will contain the information in either JSON or XML format as requested.
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"id": 1,
"reference": "8KC7QD4S",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/8KC7QD4S/ClientInformation",
"value": "
<clientInformation>
<systemConfiguration source=\"1\" web=\"0\">
<dotNet>
<version>2.0.50727.4927 Service Pack 2</version>
<version>3.0.30729.4926 Service Pack 2</version>
<version>3.5.30729.4926 Service Pack 1</version>
</dotNet>
<flashPlayer>
<name>Adobe Flash Player 18</name>
<version>18</version>
</flashPlayer>
<flashVersion />
<secureClient>
<CurrentVersion>12007086019</CurrentVersion>
<Application>not available</Application>
</secureClient>
<environment>
<operatingSystem>
<version>Microsoft Windows 10 Pro</version>
<servicePack>Service Pack 0.0</servicePack>
</operatingSystem>
<processor>
<name>Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz</name>
<manufacturer>GenuineIntel</manufacturer>
<cores>4</cores>
</processor>
<memory>
<installedPhysicalMemory>8 GB</installedPhysicalMemory>
<totalVisibleMemorySize>7.88 GB</totalVisibleMemorySize>
<availablePhysicalMemory>3.73 GB</availablePhysicalMemory>
</memory>
<hardDisk>
<drives>
<drive>
<name>C:</name>
<totalSize>465.22 GB</totalSize>
<freeSpace>282.27 GB</freeSpace>
</drive>
</drives>
</hardDisk>
<video>
<deviceName>NVIDIA NVS 4200M</deviceName>
<resolution>1920 x 1080 x 4294967296 colors</resolution>
<memory>2108 MB</memory>
</video>
<soundCard>
<name>USB Audio Device</name>
<name>NVIDIA High Definition Audio</name>
<name>High Definition Audio Device</name>
</soundCard>
</environment>
<timeZone>
<timeZoneName>GMT Standard Time</timeZoneName>
<daylightSavingTime>0</daylightSavingTime>
</timeZone>
<identification>
<computerName></computerName>
<macAddress></macAddress>
<ipAddress></ipAddress>
<windowsservices>
<running>
<Name>Adobe Acrobat Update Service</Name>
</running>
<stopped>
<Name>Adobe Flash Player Update Service</Name>
</stopped>
<other />
</windowsservices>
</systemConfiguration>
</clientInformation>
"
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Response schema
The response schema contains a description of every property that can be returned for this endpoint.
count integer
Details how many clients there are in total. This is null because the information retrieved is for a specific client.
top integer
Details number of clients returned in the response. This is null because the information retrieved is for a specific client.
skip integer
Details how many clients were skipped to display those in the response. This is null because the information retrieved is for a specific client.
pageCount integer
Details how many pages of clients there are. This is null because the information retrieved is for a specific client.
nextPageLink string
The endpoint to call the next page of clients. This is null because the information retrieved is for a specific client.
prevPageLink string
The endpoint to call the previous page of clients. This is null because the information retrieved is for a specific client.
response array
Contains the rest of the response.
id integer
The result’s unique identifier.
reference string
The result’s unique reference code. This is the same as the candidate’s unique keycode used to enter the test.
href string
The endpoint to call the client’s information, such as /api/v2/Result/{id}/ClientInformation where {id} is the result’s unique identifier.
value string
The client’s information, in XML format. In the systemConfiguration source =\"1\" web=\"0\" node, source refers to SecureClient and web to web delivery. The 1 indicates which delivery method was used.
Information returned for tests delivered using SecureClient includes:
- .Net version and service pack installed.
- Flash version.
- SecureClient version.
- Operating system and service pack.
- Processor information.
- Installed, usable, and free physical memory.
- Hard disk space available.
- Video and sound card information.
- Time zone set on the machine.
- Identification – IP and MAC Addresses.
- Windows services running.
- Windows services that were stopped.
Information returned for tests delivered using web delivery includes:
- If the browser has audio, video, printing and accessibility support required for Surpass.
- Operating system.
- Screen resolution and DPI.
- Browser information.
errors string
Information about any errors that occurred during the request.
serverTimeZone enumeration
The timezone of the server sending the response.
Retrieving a state change audit
Send a request to the endpoint to retrieve an audit of all state changes for the specified result. Refer to the available parameters to influence the response. No request body is required.
Parameters
Parameters are passed with the endpoint to influence the response. Header parameters are included in the request header. Path parameters are extensions of the endpoint, and query parameters follow ? after any path parameters.
Name |
Parameter |
Input |
Description |
---|---|---|---|
authorization |
header MANDATORY |
Basic {credentials} |
Basic authentication details must be passed to authorise the user’s request, where {credentials} is a Base64 encoded username:password string. |
accept |
header OPTIONAL |
application/json or application/xml |
Determines data format of the response, which can be either JSON or XML. |
id |
path OPTIONAL |
/api/v2/Result/{id}/StateChanges |
Returns state change information for the specified result, where {id} is the result’s unique identifier. |
keycode |
path OPTIONAL |
/api/v2/Result/{keycode}/StateChanges |
Returns state change information for the specified result, where {keycode} is the candidate’s unique keycode used to enter the test. |
Sample response
If successful, the HTTP status code will be 200 and the response body will contain the information in either JSON or XML format as requested.
{
"count": null,
"top": null,
"skip": null,
"pageCount": null,
"nextPageLink": null,
"prevPageLink": null,
"response": [
{
"id": 1,
"reference": "8G3L48X8",
"href": "https://{your Surpass instance}.surpass.com/api/v2/Result/1/StateChanges",
"stateChanges": [
{
"newState": "ScheduledButNotCreated",
"date": "2022-03-15T10:20:12.797",
"type": null,
"reason": null,
"user": null,
"description": null,
"columns": [],
"externalUserReference": null
},
{
"newState": "ScheduledButNotDownloaded",
"date": "2022-03-15T10:20:22.943",
"type": null,
"reason": null,
"user": null,
"description": null,
"columns": [
{
"name": "LearningOutcomesThreshold",
"oldValue": "0",
"newValue": "1"
}
],
"externalUserReference": null
},
{
"newState": "ScheduledButLocked",
"date": "2022-03-15T10:20:23.147",
"type": null,
"reason": null,
"user": null,
"description": null,
"columns": [],
"externalUserReference": null
},
{
"newState": "Ready",
"date": "2022-03-15T10:20:36.733",
"type": null,
"reason": null,
"user": null,
"description": null,
"columns": [],
"externalUserReference": null
},
{
"newState": "InProgress",
"date": "2022-03-15T10:35:08.963",
"type": null,
"reason": null,
"user": null,
"description": null,
"columns": [],
"externalUserReference": null
},
{
"newState": "Finished",
"date": "2022-03-15T10:38:41.793",
"type": null,
"reason": null,
"user": null,
"description": null,
"columns": [],
"externalUserReference": null
},
{
"newState": "AwaitingMarking",
"date": "2022-03-15T10:39:49.47",
"type": null,
"reason": null,
"user": null,
"description": "Exam flagged as requires human marking and contains human marked elements",
"columns": [],
"externalUserReference": null
},
{
"newState": "Marked",
"date": "2022-03-15T10:42:07.13",
"type": null,
"reason": null,
"user": {
"id": "1",
"href": "https://{your Surpass instance}.surpass.com/api/v2/User/1"
},
"description": null,
"columns": [],
"externalUserReference": null
},
{
"newState": "ScriptVerified",
"date": "2022-03-15T10:42:07.147",
"type": null,
"reason": null,
"user": null,
"description": null,
"columns": [],
"externalUserReference": null
}
]
}
],
"errors": null,
"serverTimeZone": "GMT Standard Time"
}
Response schema
The response schema contains a description of every property that can be returned for this endpoint.
count integer
Details how many state changes there are in total. This is null because the information retrieved is for a specific set of state changes.
top integer
Details number of state changes returned in the response. This is null because the information retrieved is for a specific set of state changes.
skip integer
Details how many state changes were skipped to display those in the response. This is null because the information retrieved is for a specific set of state changes.
pageCount integer
Details how many pages of state changes there are. This is null because the information retrieved is for a specific set of state changes.
nextPageLink string
The endpoint to call the next page of state changes. This is null because the information retrieved is for a specific set of state changes.
prevPageLink string
The endpoint to call the previous page of state changes. This is null because the information retrieved is for a specific set of state changes.
response array
Contains the rest of the response.
id integer
The result’s unique identifier.
reference string
The result’s unique reference code. This is the same as the candidate’s unique keycode used to enter the test.
href string
The endpoint to call the client’s information, such as /api/v2/Result/{id}/ClientInformation where {id} is the result’s unique identifier.
stateChanges array
Contains the information for all the times the specified result changed state. A separate object is returned for each state change.
stateChanges/newState enumeration
The state the test session changed to. Refer to the table of test session states below this section for all possible test session states.
stateChanges/date string
When the test session changed state, in YYYY-MM-DDTHH:SS format.
stateChanges/type enumeration
The type of state change, such as marking or void.
stateChanges/reason string
The reason given by the user changing the state.
stateChanges/user object
Contains the information for the user who changed the state. If null, the state change was an automatic process (triggered by the candidate or otherwise).
stateChanges/user/id integer
The user’s unique identifier.
stateChanges/user/href string
The endpoint to call the user’s information, such as /api/v2/User/{id} where {id} is the result’s unique identifier.
stateChanges/description string
A description of the state change.
stateChanges/columns array
Contains any changes to metadata database columns.
stateChanges/columns/name enumeration
The name of the column, such as LearningOutcomesThreshold, CustomRoundingDigits, EnableLogging, or MarkingAutoVoidPeriod.
stateChanges/columns/oldValue integer
The old value.
stateChanges/columns/newValue integer
The new value.
stateChanges/externalUserReference string
The unique reference code of the user who changed the state, if the user is external.
errors string
Information about any errors that occurred during the request.
serverTimeZone enumeration
The timezone of the server sending the response.
Test session states table
The following table contains a description of every test session state.
State No. | State Name | Description |
---|---|---|
1 |
ScheduledButNotCreated |
The test has been scheduled, but its content not yet retrieved. |
2 |
ScheduledButNotDownloaded |
The Pre-session Download Window has opened but the test has not yet been downloaded.
NOTE: This is a temporary state between the test session being ScheduledButNotCreated and ScheduledButLocked.
|
3 |
ScheduledButLocked |
The test form has been generated. Test form content and settings (including item content) are locked once generated and cannot be edited for the scheduled test session. Test sessions remain locked until the test window opens. |
4 |
Ready |
The test window is open and the test is ready to be sat by the candidate. |
5 |
LockedForInvigilator |
The invigilator needs to manually unlock the test session. |
6 |
InProgress |
The test session is in progress. |
7 |
Paused |
The test session has been paused by an invigilator. |
8 |
Offline |
NOTE: This is a retired state.
|
9 |
Finished |
The test session is finished.
NOTE: This is a temporary state between the candidate finishing their test and their script moving through to either AwaitingMarking or Archived.
|
10 |
Voided |
The test session has been voided. |
11 |
Marked |
The candidate’s script has been marked.
NOTE: This is a temporary state between marking being finished and the script moving through to either Moderate (AwaitingVerification) or Audit (Archived).
|
12 |
ScriptVerified |
The candidate’s script is being submitted.
NOTE: This is a temporary state between the script becoming Archived after being released from Mark (AwaitingMarking), or to Moderate (AwaitingVerification) from Mark.
|
13 |
Archived |
The test session is warehoused in Audit. |
14 |
LockedByPin |
The test session is awaiting the candidate to enter the session’s PIN. |
15 |
AwaitingMarking |
The candidate’s script is waiting to be marked. |
16 |
AwaitingVerification |
The candidate’s script is waiting to be moderated. |
17 | N/A |
The test session was delivered on paper and the candidate’s results uploaded using Upload OMR Results. OMR uploaded scripts are automatically warehoused (Archived). |
18 |
AwaitingUpload |
The test session was downloaded to SecureClient but has not yet been uploaded back into Surpass. |
19 |
PaperResponseUpload |
The test session is being delivered on paper and the candidate’s results are yet to be uploaded. |
99 |
Exception |
The test has failed to move between states and a manual intervention by the Surpass support team is required. |
Error Codes
Refer to the following table for information on error codes that may be encountered when using this resource.
Name |
Code |
Description |
---|---|---|
InternalServer |
1 |
Internal server error. |
Unauthorized |
3 |
The request has been sent by an unauthorised user. |
IncorrectFieldFormat |
4 |
A field in the request has not been completed in the correct format. |
InaccessibleOperation |
5 |
The request has been sent by a user with invalid permissions. |
InaccessibleData |
6 |
The request has been sent by a user with invalid permissions. |
MissingBody |
7 |
There is an issue with the request body. |
InvalidReference |
11 |
The unique reference code used in the request is invalid. |
InvalidInputParameters |
15 |
There is an issue with the path or query parameters. |
InvalidId |
16 |
The ID number used in the request is invalid. |
InvalidODataOperation |
19 |
There is an issue with the query parameters. |
BadRequest |
20 |
There is an issue with the /api/v2/Result?$skip={skip} query parameter, where {skip} is a number that should not exceed the total number of responses. |
ResultDoesNotExist |
30 |
The result specified in the request does not exist. |
Further reading
Read the following articles to learn more about similar APIs, how to get started with the Surpass API v2, and how to get the best out of this reference documentation: