changedInput schema / properties / item / oneOf
Previous value: -[
- {
- "properties": {
- "choices": {
- "items": {
- "properties": {
- "id": {
- "description": "Stable choice identifier (caller-generated, e.g. \"a\")",
- "type": "string"
- },
- "item_body": {
- "description": "HTML choice text",
- "type": "string"
- }
- },
- "required": [
- "id",
- "item_body"
- ],
- "type": "object"
- },
- "minItems": 2,
- "type": "array"
- },
- "correct_choice_id": {
- "description": "id of the correct choice",
- "type": "string"
- },
- "interaction_type_slug": {
- "const": "choice",
- "type": "string"
- },
- "item_body": {
- "description": "HTML question stem",
- "type": "string"
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "interaction_type_slug",
- "item_body",
- "choices",
- "correct_choice_id"
- ],
- "type": "object"
- },
- {
- "properties": {
- "correct_answer": {
- "type": "boolean"
- },
- "interaction_type_slug": {
- "const": "true-false",
- "type": "string"
- },
- "item_body": {
- "type": "string"
- }
- },
- "required": [
- "interaction_type_slug",
- "item_body",
- "correct_answer"
- ],
- "type": "object"
- },
- {
- "properties": {
- "interaction_type_slug": {
- "const": "essay",
- "type": "string"
- },
- "item_body": {
- "type": "string"
- },
- "rich_text": {
- "default": true,
- "description": "Allow rich text editor",
- "type": "boolean"
- },
- "word_count_max": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "word_count_min": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "interaction_type_slug",
- "item_body"
- ],
- "type": "object"
- },
- {
- "properties": {
- "distractors": {
- "description": "Wrong-answer distractor pool",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "interaction_type_slug": {
- "const": "matching",
- "type": "string"
- },
- "item_body": {
- "type": "string"
- },
- "matches": {
- "items": {
- "properties": {
- "answer": {
- "type": "string"
- },
- "question": {
- "type": "string"
- }
- },
- "required": [
- "question",
- "answer"
- ],
- "type": "object"
- },
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "interaction_type_slug",
- "item_body",
- "matches"
- ],
- "type": "object"
- },
- {
- "properties": {
- "answers": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "kind": {
- "const": "exact",
- "type": "string"
- },
- "margin": {
- "default": 0,
- "type": "number"
- },
- "value": {
- "type": "number"
- }
- },
- "required": [
- "kind",
- "value"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "range",
- "type": "string"
- },
- "max": {
- "type": "number"
- },
- "min": {
- "type": "number"
- }
- },
- "required": [
- "kind",
- "min",
- "max"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "precision",
- "type": "string"
- },
- "precision": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "value": {
- "type": "number"
- }
- },
- "required": [
- "kind",
- "value",
- "precision"
- ],
- "type": "object"
- }
- ]
- },
- "minItems": 1,
- "type": "array"
- },
- "interaction_type_slug": {
- "const": "numeric",
- "type": "string"
- },
- "item_body": {
- "type": "string"
- }
- },
- "required": [
- "interaction_type_slug",
- "item_body",
- "answers"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "choices": {
+ "items": {
+ "properties": {
+ "id": {
+ "description": "Stable choice identifier (caller-generated, e.g. \"a\")",
+ "type": "string"
+ },
+ "item_body": {
+ "description": "HTML choice text",
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "item_body"
+ ],
+ "type": "object"
+ },
+ "minItems": 2,
+ "type": "array"
+ },
+ "correct_choice_id": {
+ "description": "id of the correct choice",
+ "type": "string"
+ },
+ "interaction_type_slug": {
+ "const": "choice",
+ "type": "string"
+ },
+ "item_body": {
+ "description": "HTML question stem",
+ "type": "string"
+ },
+ "title": {
+ "description": "Optional item heading shown above the question stem",
+ "type": "string"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body",
+ "choices",
+ "correct_choice_id"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "correct_answer": {
+ "type": "boolean"
+ },
+ "interaction_type_slug": {
+ "const": "true-false",
+ "type": "string"
+ },
+ "item_body": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body",
+ "correct_answer"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "interaction_type_slug": {
+ "const": "essay",
+ "type": "string"
+ },
+ "item_body": {
+ "type": "string"
+ },
+ "rich_text": {
+ "default": true,
+ "description": "Allow rich text editor",
+ "type": "boolean"
+ },
+ "word_count_max": {
+ "description": "Maximum word count. Canvas enables the word limit only with both bounds set, so pass word_count_min too; omit both for no word limit",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "word_count_min": {
+ "description": "Minimum word count. Canvas enables the word limit only with both bounds set, so pass word_count_max too; omit both for no word limit",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "distractors": {
+ "description": "Wrong-answer distractor pool. Duplicates, and any entry equal to a correct answer, are dropped",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "interaction_type_slug": {
+ "const": "matching",
+ "type": "string"
+ },
+ "item_body": {
+ "type": "string"
+ },
+ "matches": {
+ "items": {
+ "properties": {
+ "answer": {
+ "type": "string"
+ },
+ "question": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "question",
+ "answer"
+ ],
+ "type": "object"
+ },
+ "minItems": 2,
+ "type": "array"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body",
+ "matches"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "choices": {
+ "items": {
+ "properties": {
+ "id": {
+ "description": "Stable choice identifier (caller-generated, e.g. \"a\")",
+ "type": "string"
+ },
+ "item_body": {
+ "description": "HTML choice text",
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "item_body"
+ ],
+ "type": "object"
+ },
+ "minItems": 2,
+ "type": "array"
+ },
+ "correct_choice_ids": {
+ "description": "ids of every correct choice (select all that apply); each must be a choice id",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "interaction_type_slug": {
+ "const": "multi-answer",
+ "type": "string"
+ },
+ "item_body": {
+ "description": "HTML question stem",
+ "type": "string"
+ },
+ "scoring": {
+ "description": "partial (the default) gives credit per choice (Canvas PartialScore); all_or_nothing gives credit only for exactly the correct set (Canvas AllOrNothing)",
+ "enum": [
+ "partial",
+ "all_or_nothing"
+ ],
+ "type": "string"
+ },
+ "title": {
+ "description": "Optional item heading shown above the question stem",
+ "type": "string"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body",
+ "choices",
+ "correct_choice_ids"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "answers": {
+ "description": "Every accepted answer; all of them are sent to Canvas",
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "kind": {
+ "const": "exact",
+ "type": "string"
+ },
+ "margin": {
+ "default": 0,
+ "description": "Absolute tolerance around the value; 0 requires the exact value",
+ "type": "number"
+ },
+ "value": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "value"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "range",
+ "type": "string"
+ },
+ "max": {
+ "type": "number"
+ },
+ "min": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "min",
+ "max"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "precision",
+ "type": "string"
+ },
+ "precision": {
+ "description": "Decimal places the answer must carry; the value is padded to this many decimals",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "value": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "value",
+ "precision"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "interaction_type_slug": {
+ "const": "numeric",
+ "type": "string"
+ },
+ "item_body": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body",
+ "answers"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "blanks": {
+ "description": "One entry per backticked blank, in the same order they appear in item_body. The count must match",
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "answer_type": {
+ "const": "open_entry",
+ "type": "string"
+ },
+ "answers": {
+ "description": "Accepted answers. Defaults to the blank's own backticked text, so a blank written as `Paris` needs nothing here. Give several only with match \"any_of\"",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "edit_distance": {
+ "description": "close_enough only: how many character edits away an answer may be and still count. Defaults to 1, Canvas's own documented example; pass 0 to require the exact spelling",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "ignore_case": {
+ "description": "close_enough only; defaults to true (case is ignored)",
+ "type": "boolean"
+ },
+ "match": {
+ "description": "How the typed answer is scored: close_enough (the default for a single answer) accepts near-misses within edit_distance; contains accepts an answer containing the correct text; any_of (the default when several answers are given) accepts any one of them; regex treats the answer as a regular expression",
+ "enum": [
+ "close_enough",
+ "contains",
+ "any_of",
+ "regex"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "answer_type"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "answer_type": {
+ "const": "dropdown",
+ "type": "string"
+ },
+ "choices": {
+ "description": "Options shown in the dropdown, in order. One of them must be the blank's backticked text, which is the correct option; the rest are distractors",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 2,
+ "type": "array"
+ }
+ },
+ "required": [
+ "answer_type",
+ "choices"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "answer_type": {
+ "const": "word_bank",
+ "type": "string"
+ }
+ },
+ "required": [
+ "answer_type"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "interaction_type_slug": {
+ "const": "rich-fill-blank",
+ "type": "string"
+ },
+ "item_body": {
+ "description": "HTML question text with every blank written as its correct answer wrapped in backticks, e.g. \"<p>`Roses` are `red`.</p>\". The backticked text is the correct answer and what you see while authoring; a student sees a text box, a dropdown, or a word bank in its place, depending on that blank's answer_type",
+ "type": "string"
+ },
+ "reuse_word_bank_choices": {
+ "description": "Let one word bank entry answer more than one blank; defaults to false (each word is used once)",
+ "type": "boolean"
+ },
+ "title": {
+ "description": "Optional item heading shown above the question stem",
+ "type": "string"
+ },
+ "word_bank_choices": {
+ "description": "The single pool of words shown for every word_bank blank. It must contain each word_bank blank's backticked answer; any extra entries are distractors. Required if any blank is a word_bank, and rejected if none is",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body",
+ "blanks"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "bottom_label": {
+ "description": "Label shown below the list, e.g. \"oldest\"",
+ "type": "string"
+ },
+ "choices": {
+ "description": "Items to order, listed top-to-bottom in the correct sequence. Canvas shuffles their displayed order for the student; this array's order is what scoring is checked against",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 2,
+ "type": "array"
+ },
+ "display_answers_paragraph": {
+ "description": "true renders the choices as a paragraph instead of a list; defaults to false",
+ "type": "boolean"
+ },
+ "include_labels": {
+ "description": "Show top_label/bottom_label above and below the list; defaults to true when either is given, false otherwise",
+ "type": "boolean"
+ },
+ "interaction_type_slug": {
+ "const": "ordering",
+ "type": "string"
+ },
+ "item_body": {
+ "description": "HTML question stem",
+ "type": "string"
+ },
+ "title": {
+ "description": "Optional item heading shown above the question stem",
+ "type": "string"
+ },
+ "top_label": {
+ "description": "Label shown above the list, e.g. \"youngest\"",
+ "type": "string"
+ }
+ },
+ "required": [
+ "interaction_type_slug",
+ "item_body",
+ "choices"
+ ],
+ "type": "object"
+ }
+]