{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "additionalProperties": false,
    "required": [
        "config"
    ],
    "properties": {
        "applications": {
            "type": "object",
            "description": "Links application names (keys) to settings (values)",
            "additionalProperties": false,
            "patternProperties": {
                ".*": {
                    "type": "object",
                    "description": "Application settings",
                    "additionalProperties": false,
                    "properties": {
                        "repository": {
                            "type": "string"
                        },
                        "archive-url": {
                            "type": "string",
                            "description": "Optional url where the application archive was downloaded"
                        },
                        "cliconfig-override": {
                            "type": "string",
                            "description": "Overrides cliconfig with a file from another directory"
                        },
                        "overrides": {
                            "type": "object",
                            "description": "Overrides for the applications .cliconfig.json"
                        }
                    }
                }
            }
        },
        "vhosts": {
            "type": "object",
            "description": "Links a vhost name (keys) to settings (values)",
            "additionalProperties": false,
            "patternProperties": {
                ".*": {
                    "type": "object",
                    "description": "Vhost settings",
                    "required": [
                        "application"
                    ],
                    "additionalProperties": false,
                    "properties": {
                        "application": {
                            "type": "string"
                        },
                        "disabled": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                }
            }
        },
        "repositories": {
            "type": "object",
            "description": "Already configured repositories. A hash of repository names (keys) and configured settings (values)",
            "additionalProperties": false,
            "patternProperties": {
                ".*": {
                    "type": "object",
                    "description": "Initialized repositories",
                    "required": [
                        "identity-file",
                        "ssh-alias"
                    ],
                    "properties": {
                        "identity-file": {
                            "type": "string",
                            "description": "SSH private key file for deploy"
                        },
                        "ssh-alias": {
                            "type": "string",
                            "description": "SSH alias to connect to the repository"
                        }
                    }
                }
            }
        },
        "config": {
            "type": "object",
            "description": "Clic options",
            "additionalProperties": false,
            "properties": {
                "applications-dir": {
                    "type": "string",
                    "description": "Path to the applications directory",
                    "default": "$HOME/apps"
                },
                "vhosts-dir": {
                    "type": "string",
                    "description": "Path to the vhosts directory",
                    "default": "$HOME/public_html"
                },
                "ssh-dir": {
                    "type": "string",
                    "description": " Path to .ssh directory, to store generated keys and change ssh configuration",
                    "default": "$HOME/.ssh"
                },
                "clic-dir": {
                    "type": "string",
                    "description": "Path to directory where clic stores its files",
                    "default": "$HOME/.clic"
                }
            }
        },
        "global-vars": {
            "type": "object",
            "description": "This is a hash of variable names (keys) and values (values).",
            "patternProperties": {
                "^[a-zA-Z_][a-zA-Z_0-9]*$": {
                    "type": "string"
                }
            }
        }
    }
}