{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "definitions": {
        "github_com-brainicorn-skelp-skelplate-ComplexVar": {
            "type": "object",
            "title": "ComplexVar applies restrictions to input.",
            "properties": {
                "default": {
                    "type": [
                        "string",
                        "number",
                        "integer",
                        "boolean",
                        "array"
                    ],
                    "title": "Default the default value (can be blank).",
                    "description": "\n",
                    "additionalProperties": false
                },
                "max": {
                    "type": "number",
                    "title": "Max the maximum value (for numbers) or length (for strings)"
                },
                "min": {
                    "type": "number",
                    "title": "Min the minimum value (for numbers) or length (for strings)."
                },
                "name": {
                    "type": "string",
                    "title": "Name is the name of the variable.",
                    "description": "The name can be a golang template and can use values gathered from previous\nvariables in the variables array."
                },
                "password": {
                    "type": "boolean",
                    "title": "Password is a flag to turn on input masking for hiding passwords"
                },
                "prompt": {
                    "type": "string",
                    "title": "Prompt the string to display when asking for a value."
                },
                "required": {
                    "type": "boolean",
                    "title": "Required whether or not a non-empty value is required."
                }
            },
            "required": [
                "name",
                "default"
            ],
            "additionalProperties": false
        },
        "github_com-brainicorn-skelp-skelplate-MultiValue": {
            "type": "object",
            "title": "MultiValue allows the user to enter multiple values.",
            "description": "This is for gathering things like \"tags\"",
            "properties": {
                "addPrompt": {
                    "type": "string",
                    "title": "AddPrompt is the string to display when asking if another value should be entered."
                },
                "default": {
                    "type": [
                        "string",
                        "number",
                        "integer",
                        "boolean",
                        "array"
                    ],
                    "title": "Default the default value (can be blank).",
                    "description": "\n",
                    "additionalProperties": false
                },
                "max": {
                    "type": "number",
                    "title": "Max the maximum value (for numbers) or length (for strings)"
                },
                "min": {
                    "type": "number",
                    "title": "Min the minimum value (for numbers) or length (for strings)."
                },
                "mutlival": {
                    "type": "boolean",
                    "title": "IsMultiVal designates the variable as a mutli-value prompt."
                },
                "name": {
                    "type": "string",
                    "title": "Name is the name of the variable.",
                    "description": "The name can be a golang template and can use values gathered from previous\nvariables in the variables array."
                },
                "password": {
                    "type": "boolean",
                    "title": "Password is a flag to turn on input masking for hiding passwords"
                },
                "prompt": {
                    "type": "string",
                    "title": "Prompt the string to display when asking for a value."
                },
                "required": {
                    "type": "boolean",
                    "title": "Required whether or not a non-empty value is required."
                }
            },
            "required": [
                "name",
                "default",
                "mutlival"
            ],
            "additionalProperties": false
        },
        "github_com-brainicorn-skelp-skelplate-Selection": {
            "type": "object",
            "title": "Selection represents a configurable \"select box\".",
            "description": "The user can choose multiple values or be restricted to choosing a single value.",
            "properties": {
                "choices": {
                    "type": "array",
                    "title": "Choices are the options to display in a select box.",
                    "items": {
                        "type": "string"
                    }
                },
                "default": {
                    "type": [
                        "string",
                        "number",
                        "integer",
                        "boolean",
                        "array"
                    ],
                    "title": "Default the default value (can be blank).",
                    "description": "\n",
                    "additionalProperties": false
                },
                "max": {
                    "type": "number",
                    "title": "Max the maximum value (for numbers) or length (for strings)"
                },
                "min": {
                    "type": "number",
                    "title": "Min the minimum value (for numbers) or length (for strings)."
                },
                "mutlichoice": {
                    "type": "boolean",
                    "title": "MultipleChoice designates whether multiple values may be chosen when the choices field is present."
                },
                "name": {
                    "type": "string",
                    "title": "Name is the name of the variable.",
                    "description": "The name can be a golang template and can use values gathered from previous\nvariables in the variables array."
                },
                "password": {
                    "type": "boolean",
                    "title": "Password is a flag to turn on input masking for hiding passwords"
                },
                "prompt": {
                    "type": "string",
                    "title": "Prompt the string to display when asking for a value."
                },
                "required": {
                    "type": "boolean",
                    "title": "Required whether or not a non-empty value is required."
                }
            },
            "required": [
                "name",
                "default",
                "mutlichoice",
                "choices"
            ],
            "additionalProperties": false
        },
        "github_com-brainicorn-skelp-skelplate-SimpleVar": {
            "type": "object",
            "title": "SimpleVar is an object that can express a name value pair @jsonSchema(additionalProperties=false)",
            "description": "\n",
            "properties": {
                "default": {
                    "type": [
                        "string",
                        "number",
                        "integer",
                        "boolean",
                        "array"
                    ],
                    "title": "Default the default value (can be blank).",
                    "description": "\n",
                    "additionalProperties": false
                },
                "name": {
                    "type": "string",
                    "title": "Name is the name of the variable.",
                    "description": "The name can be a golang template and can use values gathered from previous\nvariables in the variables array."
                }
            },
            "required": [
                "name",
                "default"
            ],
            "additionalProperties": false
        }
    },
    "properties": {
        "author": {
            "type": "string",
            "title": "TemplateAuthor is the author of the template."
        },
        "created": {
            "type": "string",
            "title": "TemplateCreated is the date the template was created.",
            "format": "date-time"
        },
        "description": {
            "type": "string",
            "title": "TemplateDesc is the description of the template."
        },
        "modified": {
            "type": "string",
            "title": "TemplateModified is the date the template was last modified.",
            "format": "date-time"
        },
        "repository": {
            "type": "string",
            "title": "TemplateRepo is the url of the template."
        },
        "variables": {
            "type": "array",
            "title": "TemplateVariables holds the variables and their configuration for processing a template.",
            "items": {
                "type": "object",
                "title": "TemplateVariable is the base interface for a variable @jsonSchema( anyOf=[\"github.com/brainicorn/skelp/skelplate/SimpleVar\" ,\"github.com/brainicorn/skelp/skelplate/ComplexVar\" ,\"github.com/brainicorn/skelp/skelplate/Selection\" ,\"github.com/brainicorn/skelp/skelplate/MultiValue\"] )",
                "anyOf": [
                    {
                        "$ref": "#/definitions/github_com-brainicorn-skelp-skelplate-SimpleVar"
                    },
                    {
                        "$ref": "#/definitions/github_com-brainicorn-skelp-skelplate-ComplexVar"
                    },
                    {
                        "$ref": "#/definitions/github_com-brainicorn-skelp-skelplate-Selection"
                    },
                    {
                        "$ref": "#/definitions/github_com-brainicorn-skelp-skelplate-MultiValue"
                    }
                ]
            }
        }
    }
}