changedInput schema / properties / changes / items / oneOf
Previous value: -[
- {
- "properties": {
- "after": {
- "description": "Add right after this question.",
- "type": "string"
- },
- "before": {
- "description": "Add right before this question (before the first: first).",
- "type": "string"
- },
- "op": {
- "const": "add_question",
- "type": "string"
- },
- "question": {
- "description": "A question, with the settings its type has.",
- "properties": {
- "dropdown": {
- "description": "single: a dropdown whatever its length (past 7 options it is one anyway).",
- "type": "boolean"
- },
- "goesTo": {
- "description": "Board forms: where the answer is kept on the response’s card: \"Title\" (one question at most; short, email, number, single or date), \"Description\" (the default: written under its prompt), or a card field’s name. A name the card type lacks makes that field, of the kind the question fits (a choice or rating shown on the card; a choice with \"other\" a text field, as an Other answer is no option). An existing currency field takes a number.",
- "type": "string"
- },
- "help": {
- "description": "A line under the prompt, up to 500 characters.",
- "type": "string"
- },
- "highLabel": {
- "description": "rating with numbers: the label under the last, up to 40.",
- "type": "string"
- },
- "lowLabel": {
- "description": "rating with numbers: the label under the first, up to 40.",
- "type": "string"
- },
- "max": {
- "description": "number: the highest answer. multi: the most picks.",
- "type": "number"
- },
- "min": {
- "description": "number: the lowest answer. multi: the fewest picks.",
- "type": "number"
- },
- "options": {
- "description": "single and multi: the options in order, 1 to 20, each up to 40 characters, unique.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "other": {
- "description": "single and multi: an \"Other\" option with its own text box.",
- "type": "boolean"
- },
- "placeholder": {
- "description": "Grey text in the answer box until someone types (short, paragraph, number, email, link), up to 80.",
- "type": "string"
- },
- "prompt": {
- "description": "What the question asks, 1 to 200 characters.",
- "type": "string"
- },
- "required": {
- "description": "An answer is needed to submit (a Checkbox must be ticked).",
- "type": "boolean"
- },
- "scale": {
- "description": "rating: the top score, 3 to 10 (5 when left out).",
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "style": {
- "description": "rating: stars (the default) or numbered buttons.",
- "enum": [
- "stars",
- "numbers"
- ],
- "type": "string"
- },
- "type": {
- "description": "The question type: short (Short Answer), paragraph (Paragraph), number (Number), email (Email), link (Link), date (Date), single (Single Choice), multi (Multiple Choice), rating (Rating), checkbox (Checkbox).",
- "enum": [
- "short",
- "paragraph",
- "number",
- "email",
- "link",
- "date",
- "single",
- "multi",
- "rating",
- "checkbox"
- ],
- "type": "string"
- },
- "whole": {
- "description": "number: whole numbers only.",
- "type": "boolean"
- }
- },
- "required": [
- "type",
- "prompt"
- ],
- "type": "object"
- },
- "section": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "maximum": 9007199254740991,
- "minimum": 1,
- "type": "integer"
- }
- ],
- "description": "Add at the end of this section. Absent: the end of the form."
- }
- },
- "required": [
- "op",
- "question"
- ],
- "type": "object"
- },
- {
- "properties": {
- "op": {
- "const": "set_question",
- "type": "string"
- },
- "question": {
- "description": "A question: its id, or its prompt.",
- "type": "string"
- },
- "set": {
- "description": "The settings to change; a text setting given as \"\" is cleared, a switch given false is turned off.",
- "properties": {
- "dropdown": {
- "description": "single: a dropdown whatever its length (past 7 options it is one anyway).",
- "type": "boolean"
- },
- "goesTo": {
- "description": "Board forms: where the answer is kept on the response’s card: \"Title\" (one question at most; short, email, number, single or date), \"Description\" (the default: written under its prompt), or a card field’s name. A name the card type lacks makes that field, of the kind the question fits (a choice or rating shown on the card; a choice with \"other\" a text field, as an Other answer is no option). An existing currency field takes a number.",
- "type": "string"
- },
- "help": {
- "description": "A line under the prompt, up to 500 characters.",
- "type": "string"
- },
- "highLabel": {
- "description": "rating with numbers: the label under the last, up to 40.",
- "type": "string"
- },
- "lowLabel": {
- "description": "rating with numbers: the label under the first, up to 40.",
- "type": "string"
- },
- "max": {
- "description": "number: the highest answer. multi: the most picks.",
- "type": "number"
- },
- "min": {
- "description": "number: the lowest answer. multi: the fewest picks.",
- "type": "number"
- },
- "options": {
- "description": "single and multi: the options in order, 1 to 20, each up to 40 characters, unique.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "other": {
- "description": "single and multi: an \"Other\" option with its own text box.",
- "type": "boolean"
- },
- "placeholder": {
- "description": "Grey text in the answer box until someone types (short, paragraph, number, email, link), up to 80.",
- "type": "string"
- },
- "prompt": {
- "description": "What the question asks, 1 to 200 characters.",
- "type": "string"
- },
- "required": {
- "description": "An answer is needed to submit (a Checkbox must be ticked).",
- "type": "boolean"
- },
- "scale": {
- "description": "rating: the top score, 3 to 10 (5 when left out).",
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "style": {
- "description": "rating: stars (the default) or numbered buttons.",
- "enum": [
- "stars",
- "numbers"
- ],
- "type": "string"
- },
- "type": {
- "description": "The question type: short (Short Answer), paragraph (Paragraph), number (Number), email (Email), link (Link), date (Date), single (Single Choice), multi (Multiple Choice), rating (Rating), checkbox (Checkbox).",
- "enum": [
- "short",
- "paragraph",
- "number",
- "email",
- "link",
- "date",
- "single",
- "multi",
- "rating",
- "checkbox"
- ],
- "type": "string"
- },
- "whole": {
- "description": "number: whole numbers only.",
- "type": "boolean"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "op",
- "question",
- "set"
- ],
- "type": "object"
- },
- {
- "properties": {
- "op": {
- "const": "delete_question",
- "type": "string"
- },
- "question": {
- "description": "A question: its id, or its prompt.",
- "type": "string"
- }
- },
- "required": [
- "op",
- "question"
- ],
- "type": "object"
- },
- {
- "properties": {
- "after": {
- "description": "Move right after this question.",
- "type": "string"
- },
- "before": {
- "description": "Move right before this question (before the first: first).",
- "type": "string"
- },
- "op": {
- "const": "move_question",
- "type": "string"
- },
- "question": {
- "description": "A question: its id, or its prompt.",
- "type": "string"
- },
- "section": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "maximum": 9007199254740991,
- "minimum": 1,
- "type": "integer"
- }
- ],
- "description": "Move to the end of this section."
- }
- },
- "required": [
- "op",
- "question"
- ],
- "type": "object"
- },
- {
- "properties": {
- "after": {
- "description": "Split the form after this question. Absent: an empty section at the end.",
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "op": {
- "const": "add_section",
- "type": "string"
- },
- "showIf": {
- "description": "Show the section only when an earlier answer is one of these.",
- "properties": {
- "anyOf": {
- "description": "The answers that show the section: the question’s options, or \"Ticked\" / \"Not Ticked\".",
- "items": {
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- },
- "question": {
- "description": "An earlier Single Choice, Multiple Choice or Checkbox question.",
- "type": "string"
- }
- },
- "required": [
- "question",
- "anyOf"
- ],
- "type": "object"
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "op"
- ],
- "type": "object"
- },
- {
- "properties": {
- "description": {
- "type": "string"
- },
- "op": {
- "const": "set_section",
- "type": "string"
- },
- "section": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "maximum": 9007199254740991,
- "minimum": 1,
- "type": "integer"
- }
- ],
- "description": "A section: its id, its title, or its place (1 is the first)."
- },
- "showIf": {
- "anyOf": [
- {
- "description": "Show the section only when an earlier answer is one of these.",
- "properties": {
- "anyOf": {
- "description": "The answers that show the section: the question’s options, or \"Ticked\" / \"Not Ticked\".",
- "items": {
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- },
- "question": {
- "description": "An earlier Single Choice, Multiple Choice or Checkbox question.",
- "type": "string"
- }
- },
- "required": [
- "question",
- "anyOf"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "null: always shown."
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "op",
- "section"
- ],
- "type": "object"
- },
- {
- "properties": {
- "op": {
- "const": "delete_section",
- "type": "string"
- },
- "section": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "maximum": 9007199254740991,
- "minimum": 1,
- "type": "integer"
- }
- ],
- "description": "Its questions join the section before."
- }
- },
- "required": [
- "op",
- "section"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cover": {
- "anyOf": [
- {
- "description": "The band across the form’s top: a colour or gradient, and a pattern. No pictures.",
- "properties": {
- "angle": {
- "description": "The gradient’s angle in degrees (default 160).",
- "type": "number"
- },
- "color": {
- "description": "A solid band.",
- "type": "string"
- },
- "gradient": {
- "additionalItems": false,
- "description": "A two-stop gradient: the colours it runs from and to.",
- "items": [
- {
- "description": "A hex colour such as #0f172a.",
- "type": "string"
- },
- {
- "description": "A hex colour such as #0f172a.",
- "type": "string"
- }
- ],
- "maxItems": 2,
- "minItems": 2,
- "type": "array"
- },
- "motion": {
- "description": "A gradient that moves on screen (still in pictures and under reduced motion).",
- "enum": [
- "flow",
- "drift",
- "aurora",
- "ripple",
- "ribbons",
- "mesh",
- "starfield",
- "retro-grid",
- "bokeh",
- "waves",
- "spotlight",
- "beams",
- "sunburst",
- "fireflies",
- "snowfall",
- "lava",
- "dot-wave",
- "clouds",
- "warp",
- "orbits",
- "radar",
- "equaliser",
- "confetti",
- "threads"
- ],
- "type": "string"
- },
- "pattern": {
- "description": "A pattern over the colour.",
- "enum": [
- "dots",
- "grid",
- "lines"
- ],
- "type": "string"
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "The cover band; null removes it. The form’s own colour (bars, buttons) is its tab theme’s: set theme to match a cover."
- },
- "description": {
- "type": "string"
- },
- "heading": {
- "description": "The form’s heading and its tab’s name, up to 80.",
- "type": "string"
- },
- "op": {
- "const": "set_form",
- "type": "string"
- },
- "theme": {
- "description": "The Form tab’s theme (mocha, ocean, forest...): the form’s colour, font and finish follow it.",
- "type": "string"
- }
- },
- "required": [
- "op"
- ],
- "type": "object"
- },
- {
- "properties": {
- "closedMessage": {
- "description": "Shown on the link once closed, up to 500 characters; null for the default.",
- "type": [
- "string",
- "null"
- ]
- },
- "closesAt": {
- "description": "When the form stops taking responses, an ISO date and time; one with no offset (no Z or +hh:mm) is UTC. Respondents are not shown it beforehand: say it in the description if they should know. null clears it.",
- "type": [
- "string",
- "null"
- ]
- },
- "confirmation": {
- "description": "Shown after submitting, up to 500 characters; null for the default.",
- "type": [
- "string",
- "null"
- ]
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "The most responses it takes (each submission counts one, whatever it holds), 1 to 2000; null clears it."
- },
- "op": {
- "const": "settings",
- "type": "string"
- }
- },
- "required": [
- "op"
- ],
- "type": "object"
- },
- {
- "properties": {
- "board": {
- "description": "An existing Board tab’s name (or its board’s title). Absent: a new Board tab \"<Form> Responses\" with New, In Progress and Done, taking the form’s card type alone.",
- "type": "string"
- },
- "cardType": {
- "description": "The card type each response becomes, by name. A name the document lacks brings in the ready-made type of that name (Bug, Idea, Candidate, Request...) or makes a new one. Absent: the form’s own, the board’s first, or a new type named after the form.",
- "type": "string"
- },
- "column": {
- "description": "An existing board’s column, by name. Absent: its first.",
- "type": "string"
- },
- "op": {
- "const": "responds_to",
- "type": "string"
- },
- "sheet": {
- "description": "An existing sheet, by its Sheet tab’s name. Absent: a new Sheet tab \"<Form> Responses\", its header row a column per question.",
- "type": "string"
- },
- "to": {
- "description": "Cards on a board (to work through) or rows in a sheet (to count).",
- "enum": [
- "board",
- "sheet"
- ],
- "type": "string"
- }
- },
- "required": [
- "to",
- "op"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "after": {
+ "description": "Add right after this question.",
+ "type": "string"
+ },
+ "before": {
+ "description": "Add right before this question (before the first: first).",
+ "type": "string"
+ },
+ "op": {
+ "const": "add_question",
+ "type": "string"
+ },
+ "question": {
+ "description": "A question, with the settings its type has.",
+ "properties": {
+ "dropdown": {
+ "description": "single: a dropdown whatever its length (past 7 options it is one anyway).",
+ "type": "boolean"
+ },
+ "goesTo": {
+ "description": "Board forms: where the answer is kept on the response’s card: \"Title\" (one question at most; short, email, number, single or date), \"Description\" (the default: written under its prompt), or a card field’s name. A name the card type lacks makes that field, of the kind the question fits (a choice or rating shown on the card; a choice with \"other\" a text field, as an Other answer is no option). An existing currency field takes a number.",
+ "type": "string"
+ },
+ "help": {
+ "description": "A line under the prompt, up to 500 characters.",
+ "type": "string"
+ },
+ "highLabel": {
+ "description": "rating with numbers: the label under the last, up to 40.",
+ "type": "string"
+ },
+ "lowLabel": {
+ "description": "rating with numbers: the label under the first, up to 40.",
+ "type": "string"
+ },
+ "max": {
+ "description": "number: the highest answer. multi: the most picks.",
+ "type": "number"
+ },
+ "min": {
+ "description": "number: the lowest answer. multi: the fewest picks.",
+ "type": "number"
+ },
+ "options": {
+ "description": "single and multi: the options in order, 1 to 20, each up to 100 characters, unique.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "other": {
+ "description": "single and multi: an \"Other\" option with its own text box.",
+ "type": "boolean"
+ },
+ "placeholder": {
+ "description": "Grey text in the answer box until someone types (short, paragraph, number, email, link), up to 80.",
+ "type": "string"
+ },
+ "prompt": {
+ "description": "What the question asks, 1 to 200 characters.",
+ "type": "string"
+ },
+ "required": {
+ "description": "An answer is needed to submit (a Checkbox must be ticked).",
+ "type": "boolean"
+ },
+ "scale": {
+ "description": "rating: the top score, 3 to 10 (5 when left out).",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "style": {
+ "description": "rating: stars (the default) or numbered buttons.",
+ "enum": [
+ "stars",
+ "numbers"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "The question type: short (Short Answer), paragraph (Paragraph), number (Number), email (Email), link (Link), date (Date), single (Single Choice), multi (Multiple Choice), rating (Rating), checkbox (Checkbox).",
+ "enum": [
+ "short",
+ "paragraph",
+ "number",
+ "email",
+ "link",
+ "date",
+ "single",
+ "multi",
+ "rating",
+ "checkbox"
+ ],
+ "type": "string"
+ },
+ "whole": {
+ "description": "number: whole numbers only.",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "type",
+ "prompt"
+ ],
+ "type": "object"
+ },
+ "section": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ ],
+ "description": "Add at the end of this section. Absent: the end of the form."
+ }
+ },
+ "required": [
+ "op",
+ "question"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "op": {
+ "const": "set_question",
+ "type": "string"
+ },
+ "question": {
+ "description": "A question: its id, or its prompt.",
+ "type": "string"
+ },
+ "set": {
+ "description": "The settings to change; a text setting given as \"\" is cleared, a switch given false is turned off.",
+ "properties": {
+ "dropdown": {
+ "description": "single: a dropdown whatever its length (past 7 options it is one anyway).",
+ "type": "boolean"
+ },
+ "goesTo": {
+ "description": "Board forms: where the answer is kept on the response’s card: \"Title\" (one question at most; short, email, number, single or date), \"Description\" (the default: written under its prompt), or a card field’s name. A name the card type lacks makes that field, of the kind the question fits (a choice or rating shown on the card; a choice with \"other\" a text field, as an Other answer is no option). An existing currency field takes a number.",
+ "type": "string"
+ },
+ "help": {
+ "description": "A line under the prompt, up to 500 characters.",
+ "type": "string"
+ },
+ "highLabel": {
+ "description": "rating with numbers: the label under the last, up to 40.",
+ "type": "string"
+ },
+ "lowLabel": {
+ "description": "rating with numbers: the label under the first, up to 40.",
+ "type": "string"
+ },
+ "max": {
+ "description": "number: the highest answer. multi: the most picks.",
+ "type": "number"
+ },
+ "min": {
+ "description": "number: the lowest answer. multi: the fewest picks.",
+ "type": "number"
+ },
+ "options": {
+ "description": "single and multi: the options in order, 1 to 20, each up to 100 characters, unique.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "other": {
+ "description": "single and multi: an \"Other\" option with its own text box.",
+ "type": "boolean"
+ },
+ "placeholder": {
+ "description": "Grey text in the answer box until someone types (short, paragraph, number, email, link), up to 80.",
+ "type": "string"
+ },
+ "prompt": {
+ "description": "What the question asks, 1 to 200 characters.",
+ "type": "string"
+ },
+ "required": {
+ "description": "An answer is needed to submit (a Checkbox must be ticked).",
+ "type": "boolean"
+ },
+ "scale": {
+ "description": "rating: the top score, 3 to 10 (5 when left out).",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "style": {
+ "description": "rating: stars (the default) or numbered buttons.",
+ "enum": [
+ "stars",
+ "numbers"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "The question type: short (Short Answer), paragraph (Paragraph), number (Number), email (Email), link (Link), date (Date), single (Single Choice), multi (Multiple Choice), rating (Rating), checkbox (Checkbox).",
+ "enum": [
+ "short",
+ "paragraph",
+ "number",
+ "email",
+ "link",
+ "date",
+ "single",
+ "multi",
+ "rating",
+ "checkbox"
+ ],
+ "type": "string"
+ },
+ "whole": {
+ "description": "number: whole numbers only.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "op",
+ "question",
+ "set"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "op": {
+ "const": "delete_question",
+ "type": "string"
+ },
+ "question": {
+ "description": "A question: its id, or its prompt.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "op",
+ "question"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "after": {
+ "description": "Move right after this question.",
+ "type": "string"
+ },
+ "before": {
+ "description": "Move right before this question (before the first: first).",
+ "type": "string"
+ },
+ "op": {
+ "const": "move_question",
+ "type": "string"
+ },
+ "question": {
+ "description": "A question: its id, or its prompt.",
+ "type": "string"
+ },
+ "section": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ ],
+ "description": "Move to the end of this section."
+ }
+ },
+ "required": [
+ "op",
+ "question"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "after": {
+ "description": "Split the form after this question. Absent: an empty section at the end.",
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "op": {
+ "const": "add_section",
+ "type": "string"
+ },
+ "showIf": {
+ "description": "Show the section only when an earlier answer is one of these.",
+ "properties": {
+ "anyOf": {
+ "description": "The answers that show the section: the question’s options, or \"Ticked\" / \"Not Ticked\".",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "question": {
+ "description": "An earlier Single Choice, Multiple Choice or Checkbox question.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "question",
+ "anyOf"
+ ],
+ "type": "object"
+ },
+ "title": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "op"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "op": {
+ "const": "set_section",
+ "type": "string"
+ },
+ "section": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ ],
+ "description": "A section: its id, its title, or its place (1 is the first)."
+ },
+ "showIf": {
+ "anyOf": [
+ {
+ "description": "Show the section only when an earlier answer is one of these.",
+ "properties": {
+ "anyOf": {
+ "description": "The answers that show the section: the question’s options, or \"Ticked\" / \"Not Ticked\".",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "question": {
+ "description": "An earlier Single Choice, Multiple Choice or Checkbox question.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "question",
+ "anyOf"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "null: always shown."
+ },
+ "title": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "op",
+ "section"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "op": {
+ "const": "delete_section",
+ "type": "string"
+ },
+ "section": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ ],
+ "description": "Its questions join the section before."
+ }
+ },
+ "required": [
+ "op",
+ "section"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cover": {
+ "anyOf": [
+ {
+ "description": "The band across the form’s top: a colour or gradient, and a pattern. No pictures.",
+ "properties": {
+ "angle": {
+ "description": "The gradient’s angle in degrees (default 160).",
+ "type": "number"
+ },
+ "color": {
+ "description": "A solid band.",
+ "type": "string"
+ },
+ "gradient": {
+ "additionalItems": false,
+ "description": "A two-stop gradient: the colours it runs from and to.",
+ "items": [
+ {
+ "description": "A hex colour such as #0f172a.",
+ "type": "string"
+ },
+ {
+ "description": "A hex colour such as #0f172a.",
+ "type": "string"
+ }
+ ],
+ "maxItems": 2,
+ "minItems": 2,
+ "type": "array"
+ },
+ "motion": {
+ "description": "A gradient that moves on screen (still in pictures and under reduced motion).",
+ "enum": [
+ "flow",
+ "drift",
+ "aurora",
+ "ripple",
+ "ribbons",
+ "mesh",
+ "starfield",
+ "retro-grid",
+ "bokeh",
+ "waves",
+ "spotlight",
+ "beams",
+ "sunburst",
+ "fireflies",
+ "snowfall",
+ "lava",
+ "dot-wave",
+ "clouds",
+ "warp",
+ "orbits",
+ "radar",
+ "equaliser",
+ "confetti",
+ "threads"
+ ],
+ "type": "string"
+ },
+ "pattern": {
+ "description": "A pattern over the colour.",
+ "enum": [
+ "dots",
+ "grid",
+ "lines"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The cover band; null removes it. The form’s own colour (bars, buttons) is its tab theme’s: set theme to match a cover."
+ },
+ "description": {
+ "type": "string"
+ },
+ "heading": {
+ "description": "The form’s heading and its tab’s name, up to 80.",
+ "type": "string"
+ },
+ "op": {
+ "const": "set_form",
+ "type": "string"
+ },
+ "theme": {
+ "description": "The Form tab’s theme (mocha, ocean, forest...): the form’s colour, font and finish follow it.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "op"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "closedMessage": {
+ "description": "Shown on the link once closed, up to 500 characters; null for the default.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "closesAt": {
+ "description": "When the form stops taking responses, an ISO date and time; one with no offset (no Z or +hh:mm) is UTC. Respondents are not shown it beforehand: say it in the description if they should know. null clears it.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "confirmation": {
+ "description": "Shown after submitting, up to 500 characters; null for the default.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The most responses it takes (each submission counts one, whatever it holds), 1 to 2000; null clears it."
+ },
+ "op": {
+ "const": "settings",
+ "type": "string"
+ }
+ },
+ "required": [
+ "op"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "board": {
+ "description": "An existing Board tab’s name (or its board’s title). Absent: a new Board tab \"<Form> Responses\" with New, In Progress and Done, taking the form’s card type alone.",
+ "type": "string"
+ },
+ "cardType": {
+ "description": "The card type each response becomes, by name. A name the document lacks brings in the ready-made type of that name (Bug, Idea, Candidate, Request...) or makes a new one. Absent: the form’s own, the board’s first, or a new type named after the form.",
+ "type": "string"
+ },
+ "column": {
+ "description": "An existing board’s column, by name. Absent: its first.",
+ "type": "string"
+ },
+ "op": {
+ "const": "responds_to",
+ "type": "string"
+ },
+ "sheet": {
+ "description": "An existing sheet, by its Sheet tab’s name. Absent: a new Sheet tab \"<Form> Responses\", its header row a column per question.",
+ "type": "string"
+ },
+ "to": {
+ "description": "Cards on a board (to work through) or rows in a sheet (to count).",
+ "enum": [
+ "board",
+ "sheet"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "to",
+ "op"
+ ],
+ "type": "object"
+ }
+]