{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/gitea-issue-forms.json",
  "$comment": "https://docs.gitea.com/next/usage/issue-pull-request-templates",
  "additionalProperties": false,
  "definitions": {
    "type": {
      "description": "A form item type\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "type": "string",
      "enum": ["checkboxes", "dropdown", "input", "markdown", "textarea"]
    },
    "id": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9_-]+$",
      "examples": ["SampleId"]
    },
    "validations": {
      "title": "validation options",
      "type": "object",
      "properties": {
        "required": {
          "description": "Specify whether require a form item",
          "type": "boolean",
          "default": false
        }
      },
      "additionalProperties": false
    },
    "input_validations": {
      "title": "input validation options",
      "type": "object",
      "properties": {
        "required": {
          "description": "Specify whether require a form item",
          "type": "boolean",
          "default": false
        },
        "is_number": {
          "description": "check if input must be a number",
          "type": "boolean",
          "default": false
        },
        "regex": {
          "description": "enforce specific pattern to an input by a regular expression",
          "type": "string",
          "examples": ["^\\d{6,6}$"]
        }
      },
      "additionalProperties": false
    },
    "visible": {
      "title": "visible option if an item should be in form or created issue or both",
      "type": "array",
      "minItems": 1,
      "maxItems": 2,
      "items": {
        "type": "string",
        "enum": ["form", "content"]
      }
    },
    "assignee": {
      "type": "string",
      "maxLength": 39,
      "pattern": "^[a-zA-Z0-9](-?[a-zA-Z0-9])*$",
      "examples": ["SampleAssignee"]
    },
    "label": {
      "type": "string",
      "minLength": 1,
      "examples": ["Sample label"]
    },
    "description": {
      "type": "string",
      "default": "",
      "examples": ["Sample description"]
    },
    "placeholder": {
      "type": "string",
      "default": "",
      "examples": ["Sample placeholder"]
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "examples": ["Sample value"]
    },
    "form_item": {
      "title": "form item",
      "description": "A form item\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "type": "object",
      "required": ["type"],
      "properties": {
        "type": {
          "$ref": "#/definitions/type"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "type": {
                "const": "markdown"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "markdown",
            "description": "Markdown\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#markdown",
            "type": "object",
            "required": ["type", "attributes"],
            "properties": {
              "type": {
                "$ref": "#/definitions/type"
              },
              "attributes": {
                "title": "markdown attributes",
                "description": "Markdown attributes\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#markdown",
                "type": "object",
                "required": ["value"],
                "properties": {
                  "value": {
                    "description": "A markdown formatted text",
                    "type": "string",
                    "minLength": 1,
                    "examples": ["Sample _code_!"]
                  }
                },
                "additionalProperties": false
              },
              "visible": {
                "$ref": "#/definitions/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "textarea"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "textarea",
            "description": "Textarea\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#textarea",
            "type": "object",
            "required": ["type", "attributes"],
            "properties": {
              "type": {
                "$ref": "#/definitions/type"
              },
              "id": {
                "$ref": "#/definitions/id",
                "description": "A textarea id"
              },
              "attributes": {
                "title": "textarea attributes",
                "description": "Textarea attributes\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#textarea",
                "type": "object",
                "required": ["label"],
                "properties": {
                  "label": {
                    "$ref": "#/definitions/label",
                    "description": "A short textarea description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#textarea"
                  },
                  "description": {
                    "$ref": "#/definitions/description",
                    "description": "A long textarea description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#textarea"
                  },
                  "placeholder": {
                    "$ref": "#/definitions/placeholder",
                    "description": "A textarea placeholder\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#textarea"
                  },
                  "value": {
                    "$ref": "#/definitions/value",
                    "description": "A textarea value\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#textarea"
                  },
                  "render": {
                    "description": "A textarea syntax highlighting mode\nAll supported languages are mentioned at https://github.com/alecthomas/chroma/?tab=readme-ov-file#supported-languages",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "validations": {
                "$ref": "#/definitions/validations",
                "title": "textarea validations",
                "description": "Textarea validations\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#textarea"
              },
              "visible": {
                "$ref": "#/definitions/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "input"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "input",
            "description": "Input\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#input",
            "type": "object",
            "required": ["type", "attributes"],
            "properties": {
              "type": {
                "$ref": "#/definitions/type"
              },
              "id": {
                "$ref": "#/definitions/id",
                "description": "An input id"
              },
              "attributes": {
                "title": "input attributes",
                "description": "Input attributes\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#input",
                "type": "object",
                "required": ["label"],
                "properties": {
                  "label": {
                    "$ref": "#/definitions/label",
                    "description": "A short input description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#input"
                  },
                  "description": {
                    "$ref": "#/definitions/description",
                    "description": "A long input description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#input"
                  },
                  "placeholder": {
                    "$ref": "#/definitions/placeholder",
                    "description": "An input placeholder\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#input"
                  },
                  "value": {
                    "$ref": "#/definitions/value",
                    "description": "An input value\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#input"
                  }
                },
                "additionalProperties": false
              },
              "validations": {
                "$ref": "#/definitions/input_validations",
                "title": "input validations",
                "description": "Input validations\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#input"
              },
              "visible": {
                "$ref": "#/definitions/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "dropdown"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "dropdown",
            "description": "dropdown\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown",
            "type": "object",
            "required": ["type", "attributes"],
            "properties": {
              "type": {
                "$ref": "#/definitions/type"
              },
              "id": {
                "$ref": "#/definitions/id",
                "description": "A dropdown id"
              },
              "attributes": {
                "title": "dropdown attributes",
                "description": "Dropdown attributes\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown",
                "type": "object",
                "required": ["label", "options"],
                "properties": {
                  "label": {
                    "$ref": "#/definitions/label",
                    "description": "A short dropdown description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown"
                  },
                  "description": {
                    "$ref": "#/definitions/description",
                    "description": "A long dropdown description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown"
                  },
                  "multiple": {
                    "description": "Specify whether allow a multiple choices\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown",
                    "type": "boolean",
                    "default": false
                  },
                  "options": {
                    "description": "Dropdown choices\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown",
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "examples": ["Sample choice"]
                    }
                  },
                  "default": {
                    "description": "Index of the default option\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown",
                    "type": "integer",
                    "examples": [0]
                  }
                },
                "additionalProperties": false
              },
              "validations": {
                "$ref": "#/definitions/validations",
                "title": "dropdown validations",
                "description": "Dropdown validations\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown"
              },
              "visible": {
                "$ref": "#/definitions/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "checkboxes"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "checkboxes",
            "description": "Checkboxes\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes",
            "type": "object",
            "required": ["type", "attributes"],
            "properties": {
              "type": {
                "$ref": "#/definitions/type"
              },
              "id": {
                "$ref": "#/definitions/id",
                "description": "Checkbox list id"
              },
              "attributes": {
                "title": "checkbox list attributes",
                "description": "Checkbox list attributes\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes",
                "type": "object",
                "required": ["label", "options"],
                "properties": {
                  "label": {
                    "$ref": "#/definitions/label",
                    "description": "A short checkbox list description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes"
                  },
                  "description": {
                    "$ref": "#/definitions/description",
                    "description": "A long checkbox list description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes"
                  },
                  "options": {
                    "description": "Checkbox list choices\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "title": "checkbox list choice",
                      "description": "Checkbox list choice\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes",
                      "type": "object",
                      "required": ["label"],
                      "properties": {
                        "label": {
                          "description": "A short checkbox list choice description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes",
                          "type": "string",
                          "minLength": 1,
                          "examples": ["Sample label"]
                        },
                        "required": {
                          "description": "Specify whether a choice is required\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes",
                          "type": "boolean",
                          "default": false
                        },
                        "visible": {
                          "$ref": "#/definitions/visible"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": false
              },
              "visible": {
                "$ref": "#/definitions/visible"
              }
            },
            "additionalProperties": false
          }
        }
      ]
    }
  },
  "properties": {
    "name": {
      "description": "An issue template name\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "type": "string",
      "minLength": 1,
      "examples": ["Sample name"]
    },
    "about": {
      "description": "An issue template description\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "type": "string",
      "minLength": 1,
      "examples": ["Sample about"]
    },
    "body": {
      "description": "An issue template body\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/definitions/form_item"
      }
    },
    "assignees": {
      "description": "An issue template assignees\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "oneOf": [
        {
          "$ref": "#/definitions/assignee"
        },
        {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "$ref": "#/definitions/assignee"
          }
        }
      ]
    },
    "labels": {
      "description": "An issue template labels\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "minLength": 1,
        "examples": [
          "Sample label",
          "bug",
          "documentation",
          "duplicate",
          "enhancement",
          "good first issue",
          "help wanted",
          "invalid",
          "question",
          "wontfix"
        ]
      }
    },
    "title": {
      "description": "An issue template title\nhttps://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template",
      "type": "string",
      "minLength": 1,
      "examples": ["Sample title", "Bug: ", "Feature: "]
    }
  },
  "required": ["name", "about", "body"],
  "title": "GitHub issue forms config file schema",
  "type": "object"
}
