Quiz Submission Questions API
API for answering and flagging questions in a quiz-taking session.
A QuizSubmissionQuestion object looks like:
{
// The ID of the QuizQuestion this answer is for.
"id": 1,
// Whether this question is flagged.
"flagged": true,
// The provided answer (if any) for this question. The format of this parameter
// depends on the type of the question, see the Appendix for more information.
"answer": null,
// The possible answers for this question when those possible answers are
// necessary. The presence of this parameter is dependent on permissions.
"answers": null
}
Get all quiz submission questions. Quizzes::QuizSubmissionQuestionsController#index
GET /api/v1/quiz_submissions/:quiz_submission_id/questions
url:GET|/api/v1/quiz_submissions/:quiz_submission_id/questions
Get a list of all the question records for this quiz submission.
200 OK response code is returned if the request was successful.
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
include[] | string |
Associations to include with the quiz submission question.
Allowed values: |
Example Response:
{
"quiz_submission_questions": [QuizSubmissionQuestion]
}
Answering questions Quizzes::QuizSubmissionQuestionsController#answer
POST /api/v1/quiz_submissions/:quiz_submission_id/questions
url:POST|/api/v1/quiz_submissions/:quiz_submission_id/questions
Provide or update an answer to one or more QuizQuestions.
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
attempt | Required | integer |
The attempt number of the quiz submission being taken. Note that this must be the latest attempt index, as questions for earlier attempts can not be modified. |
validation_token | Required | string |
The unique validation token you received when the Quiz Submission was created. |
access_code | string |
Access code for the Quiz, if any. |
|
quiz_questions[] | QuizSubmissionQuestion |
Set of question IDs and the answer value. See Appendix: Question Answer Formats for the accepted answer formats for each question type. |
Example Request:
{
"attempt": 1,
"validation_token": "YOUR_VALIDATION_TOKEN",
"access_code": null,
"quiz_questions": [{
"id": "1",
"answer": "Hello World!"
}, {
"id": "2",
"answer": 42.0
}]
}
Get a formatted student numerical answer. Quizzes::QuizSubmissionQuestionsController#formatted_answer
GET /api/v1/quiz_submissions/:quiz_submission_id/questions/:id/formatted_answer
url:GET|/api/v1/quiz_submissions/:quiz_submission_id/questions/:id/formatted_answer
Matches the intended behavior of the UI when a numerical answer is entered and returns the resulting formatted number
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
answer | Required | Numeric |
no description |
Example Response:
{
"formatted_answer": 12.1234
}
Flagging a question. Quizzes::QuizSubmissionQuestionsController#flag
PUT /api/v1/quiz_submissions/:quiz_submission_id/questions/:id/flag
url:PUT|/api/v1/quiz_submissions/:quiz_submission_id/questions/:id/flag
Set a flag on a quiz question to indicate that you want to return to it later.
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
attempt | Required | integer |
The attempt number of the quiz submission being taken. Note that this must be the latest attempt index, as questions for earlier attempts can not be modified. |
validation_token | Required | string |
The unique validation token you received when the Quiz Submission was created. |
access_code | string |
Access code for the Quiz, if any. |
Example Request:
{
"attempt": 1,
"validation_token": "YOUR_VALIDATION_TOKEN",
"access_code": null
}
Unflagging a question. Quizzes::QuizSubmissionQuestionsController#unflag
PUT /api/v1/quiz_submissions/:quiz_submission_id/questions/:id/unflag
url:PUT|/api/v1/quiz_submissions/:quiz_submission_id/questions/:id/unflag
Remove the flag that you previously set on a quiz question after you’ve returned to it.
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
attempt | Required | integer |
The attempt number of the quiz submission being taken. Note that this must be the latest attempt index, as questions for earlier attempts can not be modified. |
validation_token | Required | string |
The unique validation token you received when the Quiz Submission was created. |
access_code | string |
Access code for the Quiz, if any. |
Example Request:
{
"attempt": 1,
"validation_token": "YOUR_VALIDATION_TOKEN",
"access_code": null
}
Appendixes
Appendix: Question Answer Formats
Essay Questions
- Question parametric type:
essay_question
- Parameter type:
Text
- Parameter synopsis:
{ "answer": "Answer text." }
Example request
{
"answer": "<h2>My essay</h2>\n\n<p>This is a long article.</p>"
}
Possible errors
HTTP RC | Error Message | Cause |
---|---|---|
400 Bad Request | Text is too long. |
The answer text is larger than the allowed limit of 16 kilobytes. |
Fill In Multiple Blanks Questions
- Question parametric type:
fill_in_multiple_blanks_question
- Parameter type:
Hash{String => String}
- Parameter synopsis:
{ "answer": { "variable": "Answer string." } }
Example request
Given that the question accepts answers to two variables, color1
and color2
:
{
"answer": {
"color1": "red",
"color2": "green"
}
}
Possible errors
HTTP RC | Error Message | Cause |
---|---|---|
400 Bad Request | Unknown variable 'var'. |
The answer map contains a variable that is not accepted by the question. |
400 Bad Request | Text is too long. |
The answer text is larger than the allowed limit of 16 kilobytes. |
Fill In The Blank Questions
- Question parametric type:
short_answer_question
- Parameter type:
String
- Parameter synopsis:
{ "answer": "Some sentence." }
Example request
{
"answer": "Hello World!"
}
Possible errors
Similar to the errors produced by Essay Questions.
Formula Questions
- Question parametric type:
calculated_question
- Parameter type:
Decimal
- Parameter synopsis:
{ "answer": decimal }
wheredecimal
is either a rational number, or a literal version of it (String)
Example request
With an exponent:
{
"answer": 2.3e-6
}
With a string for a number:
{
"answer": "13.4"
}
Possible errors
HTTP RC | Error Message | Cause |
---|---|---|
400 Bad Request | Parameter must be a valid decimal. |
The specified value could not be processed as a decimal. |
Matching Questions
- Question parametric type:
matching_question
- Parameter type:
Array<Hash>
- Parameter synopsis:
{ "answer": [{ "answer_id": id, "match_id": id }] }
where the IDs must identify answers and matches accepted by the question.
Example request
Given that the question accepts 3 answers with IDs [ 3, 6, 9 ]
and 6 matches
with IDs: [ 10, 11, 12, 13, 14, 15 ]
:
{
"answer": [{
"answer_id": 6,
"match_id": 10
}, {
"answer_id": 3,
"match_id": 14
}]
}
The above request:
- pairs
answer#6
withmatch#10
- pairs
answer#3
withmatch#14
- leaves
answer#9
un-matched
Possible errors
HTTP RC | Error Message | Cause |
---|---|---|
400 Bad Request | Answer must be of type Array. |
The match-pairings set you supplied is not an array. |
400 Bad Request | Answer entry must be of type Hash, got '...'. |
One of the entries of the match-pairings set is not a valid hash. |
400 Bad Request | Missing parameter 'answer_id'. |
One of the entries of the match-pairings does not specify an answer_id . |
400 Bad Request | Missing parameter 'match_id'. |
One of the entries of the match-pairings does not specify an match_id . |
400 Bad Request | Parameter must be of type Integer. |
One of the specified answer_id or match_id
is not an integer.
|
400 Bad Request | Unknown answer '123'. |
An answer_id you supplied does not identify a valid answer
for that question. |
400 Bad Request | Unknown match '123'. |
A match_id you supplied does not identify a valid match
for that question. |
Multiple Choice Questions
- Question parametric type:
multiple_choice_question
- Parameter type:
Integer
- Parameter synopsis:
{ "answer": answer_id }
whereanswer_id
is an ID of one of the question's answers.
Example request
Given an answer with an ID of 5:
{
"answer": 5
}
Possible errors
HTTP RC | Error Message | Cause |
---|---|---|
400 Bad Request | Parameter must be of type Integer. |
The specified `answer_id` is not an integer. |
400 Bad Request | Unknown answer '123' |
The specified `answer_id` is not a valid answer. |
Multiple Dropdowns Questions
- Question parametric type:
multiple_dropdowns_question
- Parameter type:
Hash{String => Integer}
- Parameter synopsis:
{ "answer": { "variable": answer_id } }
where the keys are variables accepted by the question, and their values are IDs of answers provided by the question.
Example request
Given that the question accepts 3 answers to a variable named color
with the
ids [ 3, 6, 9 ]
:
{
"answer": {
"color": 6
}
}
Possible errors
HTTP RC | Error Message | Cause |
---|---|---|
400 Bad Request | Unknown variable 'var'. |
The answer map you supplied contains a variable that is not accepted by the question. |
400 Bad Request | Unknown answer '123'. |
An answer_id you supplied does not identify a valid answer
for that question. |
Multiple Answers Questions
- Question parametric type:
multiple_answers_question
- Parameter type:
Array<Integer>
- Parameter synopsis:
{ "answer": [ answer_id ] }
where the array items are IDs of answers accepted by the question.
Example request
Given that the question accepts 3 answers with the ids [ 3, 6, 9 ]
and we
want to select the answers 3
and 6
:
{
"answer": [ 3, 6 ]
}
Possible errors
HTTP RC | Error Message | Cause |
---|---|---|
400 Bad Request | Selection must be of type Array. |
The selection set you supplied is not an array. |
400 Bad Request | Parameter must be of type Integer. |
One of the answer IDs you supplied is not a valid ID. |
400 Bad Request | Unknown answer '123'. |
An answer ID you supplied in the selection set does not identify a valid answer for that question. |
Numerical Questions
- Question parametric type:
numerical_question
This is similar to Formula Questions.
True/False Questions
- Question parametric type:
true_false_question
The rest is similar to Multiple Choice questions.