| max | No | NumberField only: new maximum allowed value; pass null to remove the upper bound. Ignored for other question types. | |
| min | No | NumberField only: new minimum allowed value; pass null to remove the lower bound. Ignored for other question types. | |
| code | Yes | Question code (field.code), from the get_form / create_form return value | |
| name | No | New question stem, optional | |
| unit | No | NumberField only: new display unit suffix (e.g. "kg"); pass null or an empty string to clear. Ignored for other question types. | |
| items | No | Swiper block only: replace ALL slides with this list (1-10). Slides get fresh ids, so any translated slide titles / notes for this block have to be rewritten afterwards. | |
| score | No | Score for this question; 0 or omitted + no correctAnswer means not scored | |
| words | No | Rate only: new scale labels shown under the rating control (up to 5); pass null or [] to remove the labels. Ignored for other question types. | |
| formId | Yes | The form ID the question belongs to | |
| aiMatch | No | FillBlank AI grading config (knowledge_quiz scene only). Pass an object to enable AI matching (requires the question to have correctAnswer + score > 0); pass null to turn it off and revert to exact-match grading. Omit to leave the existing grading mode untouched. | |
| choices | No | Replace ALL choices of a choice-based question (SingleCheck / MultiCheck / DropDown / Ordering / Cascade; rejected for other types). To keep an existing choice's identity (so past answers still match it) pass its current code from get_form; entries without a code get a new auto-generated code. knowledge_quiz scene: if the existing correctAnswer references a code missing from the new choices, pass a new correctAnswer in the same call. scored_quiz scene: set choices[i].score to rebuild Option Scoring (required if the question currently has Option Scoring). outcome_quiz scene: every choice must carry an outcomes vote list (use [] for a neutral choice). | |
| content | No | Statement block only: the new body text, which is the whole block. Same rich-text rules as description. It cannot be emptied — delete_question the block if you no longer want it. This field also accepts an inline image: put an <img src="..."> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one. | |
| explain | No | New answer explanation (the question's "answer explanation" field, not the question note); pass an empty string to clear. Same rich-text rules as description. | |
| required | No | Whether the question is required | |
| precision | No | DateField / TimeField only: new picker precision. DateField accepts year | month | day | hour | minute | second; TimeField accepts only minute | second. Ignored for other question types. | |
| trueLabel | No | TrueFalse only: new custom display text for the "true" option; pass an empty string to clear and fall back to the localized default. Ignored for other question types. | |
| falseLabel | No | TrueFalse only: new custom display text for the "false" option; pass an empty string to clear and fall back to the localized default. Ignored for other question types. | |
| description | No | New question note; pass an empty string to clear. This field also accepts an inline image: put an <img src="..."> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one. | |
| correctAnswer | No | New correct answer; the shape follows the question type — see the anyOf branches. Choices are referenced by label or code (use the code when the same label repeats), and they must exist in the question's current choices, or in the `choices` replacement passed in this same call. NumberField answers must stay typeable within min / max and decimalPlaces. Rejected for DateField / TimeField / Rate, and in the scored_quiz / outcome_quiz scenes. | |
| decimalPlaces | No | NumberField only: new number of decimal places allowed (0 = integers only); pass null to reset to the default 0. Ignored for other question types. | |