{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "id": "https://toastielab.dev/Emotions-stuff/SupportChild/src/branch/main/Interviews/interview_template.schema.json",
  "title": "Interview Template",
  "description": "An interview dialog tree template for SupportChild",
  "definitions": {
    "step": {
      "type": "object",
      "title": "Interview Step",
      "description": "Contains a question, error message or end of an interview.",
      "properties": {
        "heading": {
          "type": "string",
          "title": "Heading",
          "description": "The title of the message.",
          "minLength": 1
        },
        "message": {
          "type": "string",
          "title": "Message",
          "description": "The message text.",
          "minLength": 1
        },
        "message-type": {
          "type": "string",
          "title": "Message Type",
          "description": "The type of message, decides what the bot will do when the user gets to this step.",
          "enum": [
            "ERROR",
            "END_WITH_SUMMARY",
            "END_WITHOUT_SUMMARY",
            "BUTTONS",
            "TEXT_SELECTOR",
            "USER_SELECTOR",
            "ROLE_SELECTOR",
            "MENTIONABLE_SELECTOR",
            "CHANNEL_SELECTOR",
            "TEXT_INPUT"
          ]
        },
        "color": {
          "type": "string",
          "title": "Color",
          "description": "Colour of the embed message.",
          "examples": [
            "BLACK",
            "WHITE",
            "GRAY",
            "DARKGRAY",
            "LIGHTGRAY",
            "VERYDARKGRAY",
            "BLURPLE",
            "GRAYPLE",
            "DARKBUTNOTBLACK",
            "NOTQUITEBLACK",
            "RED",
            "DARKRED",
            "GREEN",
            "DARKGREEN",
            "BLUE",
            "DARKBLUE",
            "YELLOW",
            "CYAN",
            "MAGENTA",
            "TEAL",
            "AQUAMARINE",
            "GOLD",
            "GOLDENROD",
            "AZURE",
            "ROSE",
            "SPRINGGREEN",
            "CHARTREUSE",
            "ORANGE",
            "PURPLE",
            "VIOLET",
            "BROWN",
            "HOTPINK",
            "LILAC",
            "CORNFLOWERBLUE",
            "MIDNIGHTBLUE",
            "WHEAT",
            "INDIANRED",
            "TURQUOISE",
            "SAPGREEN",
            "PHTHALOBLUE",
            "PHTHALOGREEN",
            "SIENNA"
          ],
          "minLength": 1
        },
        "paths": {
          "type": "object",
          "title": "Paths",
          "description": "The possible next steps, the name of the path is matched against the user input, use \".*\" to match anything.",
          "patternProperties": {
            ".*": {
              "$ref": "#/definitions/step"
            }
          }
        },
        "summary-field": {
          "type": "string",
          "title": "Summary Field",
          "description": "If this interview ends with a summary this will be the name of the answer the user used in this field.",
          "minLength": 1
        },
        "button-style": {
          "type": "string",
          "title": "Button Style",
          "description": "The style of the button that leads to this step, the step before this one must be a button step for this to work.",
          "enum": [
            "PRIMARY",
            "SECONDARY",
            "SUCCESS",
            "DANGER"
          ]
        },
        "selector-description": {
          "type": "string",
          "title": "Selector Description",
          "description": "The description of the selector.",
          "minLength": 1
        },
        "max-length": {
          "type": "number",
          "title": "Max Length",
          "description": "The maximum length of the text input."
        },
        "min-length": {
          "type": "number",
          "title": "Min Length",
          "description": "The minimum length of the text input."
        }
      },
      "required": [ "message", "message-type", "color", "paths" ],
      "unevaluatedProperties": false
    }
  },
  "type": "object",
  "properties": {
    "category-id": {
      "type": "string",
      "title": "Category ID",
      "description": "The category the template applies to. Change this to apply the template to a different category."
    },
    "interview": {
      "$ref": "#/definitions/step"
    }
  },
  "required": [ "category-id", "interview" ],
  "unevaluatedProperties": false
}