{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/gitea-issue-template-forms/latest.json",
  "title": "GitHub issue forms config file schema",
  "x-lintel": {
    "source": "https://www.schemastore.org/gitea-issue-forms.json",
    "sourceSha256": "eb22deafcdcb8efba0db401211468129bf517d60822f4adc8acc78aaa3246388",
    "fileMatch": [
      "**/.gitea/ISSUE_TEMPLATE/**.yml",
      "**/.gitea/ISSUE_TEMPLATE/**.yaml",
      "**/.forgejo/ISSUE_TEMPLATE/**.yml",
      "**/.forgejo/ISSUE_TEMPLATE/**.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "name": {
      "description": "An issue template name\n<https://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\n<https://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\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template>",
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/form_item"
      }
    },
    "assignees": {
      "description": "An issue template assignees\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template>",
      "oneOf": [
        {
          "$ref": "#/$defs/assignee"
        },
        {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "$ref": "#/$defs/assignee"
          }
        }
      ]
    },
    "labels": {
      "description": "An issue template labels\n<https://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\n<https://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"
  ],
  "additionalProperties": false,
  "$comment": "https://docs.gitea.com/next/usage/issue-pull-request-templates",
  "$defs": {
    "type": {
      "description": "A form item type\n<https://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\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#syntax-for-yaml-template>",
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "$ref": "#/$defs/type"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "type": {
                "const": "markdown"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "markdown",
            "description": "Markdown\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#markdown>",
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "type": {
                "$ref": "#/$defs/type"
              },
              "attributes": {
                "title": "markdown attributes",
                "description": "Markdown attributes\n<https://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": "#/$defs/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "textarea"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "textarea",
            "description": "Textarea\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#textarea>",
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "type": {
                "$ref": "#/$defs/type"
              },
              "id": {
                "$ref": "#/$defs/id",
                "description": "A textarea id"
              },
              "attributes": {
                "title": "textarea attributes",
                "description": "Textarea attributes\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#textarea>",
                "type": "object",
                "required": [
                  "label"
                ],
                "properties": {
                  "label": {
                    "$ref": "#/$defs/label",
                    "description": "A short textarea description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#textarea>"
                  },
                  "description": {
                    "$ref": "#/$defs/description",
                    "description": "A long textarea description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#textarea>"
                  },
                  "placeholder": {
                    "$ref": "#/$defs/placeholder",
                    "description": "A textarea placeholder\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#textarea>"
                  },
                  "value": {
                    "$ref": "#/$defs/value",
                    "description": "A textarea value\n<https://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": "#/$defs/validations",
                "title": "textarea validations",
                "description": "Textarea validations\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#textarea>"
              },
              "visible": {
                "$ref": "#/$defs/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "input"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "input",
            "description": "Input\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#input>",
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "type": {
                "$ref": "#/$defs/type"
              },
              "id": {
                "$ref": "#/$defs/id",
                "description": "An input id"
              },
              "attributes": {
                "title": "input attributes",
                "description": "Input attributes\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#input>",
                "type": "object",
                "required": [
                  "label"
                ],
                "properties": {
                  "label": {
                    "$ref": "#/$defs/label",
                    "description": "A short input description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#input>"
                  },
                  "description": {
                    "$ref": "#/$defs/description",
                    "description": "A long input description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#input>"
                  },
                  "placeholder": {
                    "$ref": "#/$defs/placeholder",
                    "description": "An input placeholder\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#input>"
                  },
                  "value": {
                    "$ref": "#/$defs/value",
                    "description": "An input value\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#input>"
                  }
                },
                "additionalProperties": false
              },
              "validations": {
                "$ref": "#/$defs/input_validations",
                "title": "input validations",
                "description": "Input validations\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#input>"
              },
              "visible": {
                "$ref": "#/$defs/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "dropdown"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "dropdown",
            "description": "dropdown\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown>",
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "type": {
                "$ref": "#/$defs/type"
              },
              "id": {
                "$ref": "#/$defs/id",
                "description": "A dropdown id"
              },
              "attributes": {
                "title": "dropdown attributes",
                "description": "Dropdown attributes\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown>",
                "type": "object",
                "required": [
                  "label",
                  "options"
                ],
                "properties": {
                  "label": {
                    "$ref": "#/$defs/label",
                    "description": "A short dropdown description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown>"
                  },
                  "description": {
                    "$ref": "#/$defs/description",
                    "description": "A long dropdown description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown>"
                  },
                  "multiple": {
                    "description": "Specify whether allow a multiple choices\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown>",
                    "type": "boolean",
                    "default": false
                  },
                  "options": {
                    "description": "Dropdown choices\n<https://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\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown>",
                    "type": "integer",
                    "examples": [
                      0
                    ]
                  }
                },
                "additionalProperties": false
              },
              "validations": {
                "$ref": "#/$defs/validations",
                "title": "dropdown validations",
                "description": "Dropdown validations\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#dropdown>"
              },
              "visible": {
                "$ref": "#/$defs/visible"
              }
            },
            "additionalProperties": false
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "const": "checkboxes"
              }
            }
          },
          "then": {
            "$comment": "For `additionalProperties` to work `type` must also be present here.",
            "title": "checkboxes",
            "description": "Checkboxes\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes>",
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "type": {
                "$ref": "#/$defs/type"
              },
              "id": {
                "$ref": "#/$defs/id",
                "description": "Checkbox list id"
              },
              "attributes": {
                "title": "checkbox list attributes",
                "description": "Checkbox list attributes\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes>",
                "type": "object",
                "required": [
                  "label",
                  "options"
                ],
                "properties": {
                  "label": {
                    "$ref": "#/$defs/label",
                    "description": "A short checkbox list description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes>"
                  },
                  "description": {
                    "$ref": "#/$defs/description",
                    "description": "A long checkbox list description\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes>"
                  },
                  "options": {
                    "description": "Checkbox list choices\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes>",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "title": "checkbox list choice",
                      "description": "Checkbox list choice\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes>",
                      "type": "object",
                      "required": [
                        "label"
                      ],
                      "properties": {
                        "label": {
                          "description": "A short checkbox list choice description\n<https://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\n<https://docs.gitea.com/next/usage/issue-pull-request-templates#checkboxes>",
                          "type": "boolean",
                          "default": false
                        },
                        "visible": {
                          "$ref": "#/$defs/visible"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": false
              },
              "visible": {
                "$ref": "#/$defs/visible"
              }
            },
            "additionalProperties": false
          }
        }
      ]
    }
  }
}
