{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "EdityProject",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "contentMap": {
            "type": [
                "null",
                "object"
            ],
            "description": "This map maps named content to a collection of javascript and css files.",
            "additionalProperties": {
                "$ref": "#/definitions/LinkedContentEntry"
            }
        },
        "vars": {
            "type": [
                "null",
                "object"
            ],
            "description": "The main set of variables, this is always active.",
            "additionalProperties": {
                "type": "string"
            }
        },
        "buildVars": {
            "type": [
                "null",
                "object"
            ],
            "description": "Variables that are used only during build / compile / publish. These can override the values in Vars.",
            "additionalProperties": {
                "type": "string"
            }
        },
        "editPageSettings": {
            "type": [
                "null",
                "object"
            ],
            "description": "This dictionary holds settings that will be echoed to the page as a javascript object. It is used to\nstore client side configuration. These variables cannot be directly output to the page, but instead must\nbe written by calling the editPageSettings() macro. These values will be written in plain text to the page,\nso do not include secret info here.",
            "additionalProperties": {}
        },
        "linkedContent": {
            "type": [
                "array",
                "null"
            ],
            "description": "The list of linked content for the entire project.",
            "items": {
                "type": "string"
            }
        },
        "additionalContent": {
            "type": [
                "array",
                "null"
            ],
            "description": "Additional content folders to copy.",
            "items": {
                "type": "string"
            }
        },
        "preBuildTasks": {
            "type": [
                "array",
                "null"
            ],
            "description": "Definitions for pre build tasks.",
            "items": {
                "$ref": "#/definitions/BuildTaskDefinition"
            }
        },
        "compilers": {
            "type": [
                "array",
                "null"
            ],
            "description": "Definitions of the compilers.",
            "items": {
                "$ref": "#/definitions/CompilerDefinition"
            }
        },
        "postBuildTasks": {
            "type": [
                "array",
                "null"
            ],
            "description": "Definitions for post build tasks.",
            "items": {
                "$ref": "#/definitions/BuildTaskDefinition"
            }
        },
        "publishTasks": {
            "type": [
                "array",
                "null"
            ],
            "description": "Definitions for publish tasks.",
            "items": {
                "$ref": "#/definitions/BuildTaskDefinition"
            }
        },
        "postPublishTasks": {
            "type": [
                "array",
                "null"
            ],
            "description": "Definitions for post publish tasks.",
            "items": {
                "$ref": "#/definitions/BuildTaskDefinition"
            }
        },
        "editComponents": {
            "type": [
                "array",
                "null"
            ],
            "description": "The list of components to show when editing.",
            "items": {
                "type": "string"
            }
        },
        "draftComponents": {
            "type": [
                "array",
                "null"
            ],
            "description": "The list of components to show in draft mode.",
            "items": {
                "type": "string"
            }
        },
        "defaultPage": {
            "type": [
                "null",
                "string"
            ],
            "description": "The default page for the project. Defaults to \"index\"."
        }
    },
    "definitions": {
        "LinkedContentEntry": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "dependencies": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "type": "string"
                    }
                },
                "css": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "type": "string"
                    }
                },
                "js": {
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#/definitions/JavascriptEntry"
                    }
                }
            }
        },
        "JavascriptEntry": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "file"
            ],
            "properties": {
                "file": {
                    "type": "string"
                },
                "async": {
                    "type": "boolean"
                }
            }
        },
        "BuildTaskDefinition": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "name": {
                    "type": [
                        "null",
                        "string"
                    ]
                },
                "settings": {
                    "type": [
                        "null",
                        "object"
                    ],
                    "additionalProperties": {}
                }
            }
        },
        "CompilerDefinition": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "type": {
                    "$ref": "#/definitions/CompilerTypes"
                },
                "extension": {
                    "type": [
                        "null",
                        "string"
                    ]
                }
            }
        },
        "CompilerTypes": {
            "type": "string",
            "description": "",
            "x-enumNames": [
                "Html",
                "Json"
            ],
            "enum": [
                "Html",
                "Json"
            ]
        }
    }
}