{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "ConfigSite": {
            "properties": {
                "branch": {
                    "description": "The branch to use for the site. e.g. \"master\"",
                    "type": "string"
                },
                "build": {
                    "description": "The generator system to use. \"jekyll\" or \"hugo\" or \"copy\"",
                    "enum": [
                        "copy",
                        "hugo",
                        "jekyll"
                    ],
                    "type": "string"
                },
                "build_path": {
                    "description": "The path where the project is build locally e.g. \"./data/myawesomesite.org/build\"",
                    "type": "string"
                },
                "env": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Environment settings applied while building the site e.g. {\"JEKYLL_ENV\": \"production\"}",
                    "type": "object"
                },
                "hugo": {
                    "description": "If building with hugo you must define a version",
                    "properties": {
                        "extended": {
                            "description": "Download extended version of hugo e.g. true",
                            "type": "boolean"
                        },
                        "version": {
                            "description": "Version of hugo e.g. \"0.51\"",
                            "type": "string"
                        }
                    },
                    "required": [
                        "extended",
                        "version"
                    ],
                    "type": "object"
                },
                "name": {
                    "description": "The name and url path to use for the site. e.g. \"myawesomesite.org/master\"",
                    "type": "string"
                },
                "publish_path": {
                    "description": "The path where the project is published locally e.g. \"/var/www/myawesomesite.org/site\"",
                    "type": "string"
                },
                "repository": {
                    "description": "The git repository for the site e.g. \"https://github.com/ffalt/myawesomesite.git\"",
                    "type": "string"
                }
            },
            "required": [
                "branch",
                "build",
                "build_path",
                "name",
                "publish_path",
                "repository"
            ],
            "type": "object"
        }
    },
    "description": "Hookay Configuration",
    "properties": {
        "$schema": {
            "description": "The schema file for the config.json e.g. \"config-schema.json\"",
            "type": "string"
        },
        "secret": {
            "description": "The secret token to validate a hook call (https://developer.github.com/webhooks/securing/)",
            "type": "string"
        },
        "server": {
            "description": "Server settings",
            "properties": {
                "host": {
                    "description": "The address to listen on. e.g. \"127.0.0.1\" or \"0.0.0.0\"",
                    "type": "string"
                },
                "path": {
                    "description": "The url path to listen for hooks on. e.g. \"/hooks/*\"",
                    "type": "string"
                },
                "port": {
                    "description": "The port to listen on. e.g. 8181",
                    "type": "integer"
                }
            },
            "required": [
                "host",
                "path",
                "port"
            ],
            "type": "object"
        },
        "sites": {
            "description": "List of Hookay Sites",
            "items": {
                "$ref": "#/definitions/ConfigSite"
            },
            "type": "array"
        },
        "version": {
            "description": "The version of the config file format, must be 2 at the moment",
            "enum": [
                2
            ],
            "type": "number"
        }
    },
    "required": [
        "secret",
        "server",
        "sites",
        "version"
    ],
    "type": "object"
}