{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "name": "Page Layout",
    "description": "Page layout configuration",
    "type": "object",
    "properties": {
        "page": {
            "title": "Page Options",
            "description": "Page level options",
            "type": "object",
            "properties": {
                "template": {
                    "title": "Layout template",
                    "description": "Relative location of the layout template",
                    "type": "string"
                },
                "meta": {
                    "title": "Page metadata",
                    "description": "Full page metadata, e.g. title, keywords",
                    "type": "object",
                    "properties": {
                        "title": {
                            "title": "Page location",
                            "description": "The title of the page in <head>",
                            "type": "string"
                        },
                        "keywords": {
                            "title": "Page keywords",
                            "description": "Keywords in <head><meta>",
                            "type": "string"
                        },
                        "description": {
                            "title": "Page description",
                            "description": "Description in <head><meta>",
                            "type": "string"
                        }
                    }
                }
            }
        },
        "components": {
            "title": "Components",
            "description": "List of components for this page",
            "type": "array",
            "items": {
                "title": "Component",
                "type": "object",
                "properties": {
                    "presenter": {
                        "title": "Presenter ID",
                        "description": "A URI describing the presenter location",
                        "type": "string"
                    },
                    "page_location": {
                        "title": "Page location",
                        "description": "The key in the template used to determine the location of this component",
                        "type": "string"
                    },
                    "fail_page_load": {
                        "title": "Fail page load?",
                        "description": "Boolean value indicating whether the failure to load this page results in a failed page load",
                        "type": "boolean"
                    },
                    "opts": {
                        "title": "Options",
                        "description": "The options for this component",
                        "type": "object"
                    }
                },
                "required": [
                    "presenter",
                    "page_location"
                ]
            }
        }
    },
    "required": [
        "components"
    ]
}