{
    "$schema": "http://json-schema.org/draft-04/schema",
    "description": "validation of the Jupyter Notebook document level metadata for ipypublish",
    "type": "object",
    "properties": {
        "ipub": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "language": {
                    "description": "the language can be any specified in the babel package",
                    "type": "string",
                    "default": "english"
                },
                "customcss": {
                    "description": "additional custom stylesheet to link"
                },
                "titlepage": {
                    "description": "options for creating the title page",
                    "type": [
                        "boolean",
                        "object"
                    ],
                    "additionalProperties": false,
                    "properties": {
                        "author": {
                            "type": "string",
                            "description": "Authors Name"
                        },
                        "email": {
                            "type": "string",
                            "description": "authors email, e.g. authors@email.com"
                        },
                        "supervisors": {
                            "description": "list of supervisors",
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "title": {
                            "type": "string",
                            "description": "Main Title"
                        },
                        "subtitle": {
                            "type": "string",
                            "description": "Sub Title"
                        },
                        "tagline": {
                            "type": "string",
                            "description": "A tagline for the report"
                        },
                        "institution": {
                            "description": "the publishing institution",
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "logo": {
                            "type": "string",
                            "description": "the path to the logo image file  (absolute or relative)"
                        }
                    }
                },
                "toc": {
                    "type": [
                        "boolean",
                        "object"
                    ],
                    "description": "output a table of contents",
                    "default": "false",
                    "properties": {
                        "depth": {
                            "description": "the depth of subheaders to show",
                            "type": "number",
                            "minimum": 1
                        }
                    }
                },
                "listfigures": {
                    "type": "boolean",
                    "description": "output a list of figures",
                    "default": "false"
                },
                "listtables": {
                    "type": "boolean",
                    "description": "output a list of tables",
                    "default": "false"
                },
                "listcode": {
                    "type": "boolean",
                    "description": "output a list of code",
                    "default": "false"
                },
                "figure": {
                    "type": "object",
                    "properties": {
                        "placement": {
                            "type": "string",
                            "description": "default float placement of figures"
                        }
                    }
                },
                "table": {
                    "type": "object",
                    "properties": {
                        "placement": {
                            "type": "string",
                            "description": "default float placement of tables"
                        }
                    }
                },
                "bibliography": {
                    "description": "the path to the bibliography bibtex file (absolute or relative)",
                    "type": "string"
                },
                "bibstyle": {
                    "description": "a natbib stylename, to control the output style of the bibliography",
                    "type": "string"
                },
                "biboptions": {
                    "description": "a list of options to parse to natbib",
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "default": [
                        "numbers",
                        "square",
                        "super",
                        "sort&compress"
                    ]
                },
                "bibglossary": {
                    "description": "option for a glossary, controlled by a custom bibtex file",
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "filepath": {
                            "description": "path to the bibtex file (absolute or relative)",
                            "type": "string"
                        },
                        "style_main": {
                            "description": "style of the output (main) glossary",
                            "type": "string",
                            "enum": [
                                "list",
                                "long",
                                "listgroup",
                                "listhypergroup",
                                "altlist",
                                "altlistgroup",
                                "altlisthypergroup"
                            ],
                            "default": "altlist"
                        },
                        "style_acronyms": {
                            "description": "style of the output acronym glossary",
                            "type": "string",
                            "enum": [
                                "list",
                                "long",
                                "listgroup",
                                "listhypergroup",
                                "altlist",
                                "altlistgroup",
                                "altlisthypergroup"
                            ],
                            "default": "list"
                        },
                        "style_symbols": {
                            "description": "style of the output symbols glossary",
                            "type": "string",
                            "enum": [
                                "list",
                                "long",
                                "listgroup",
                                "listhypergroup",
                                "altlist",
                                "altlistgroup",
                                "altlisthypergroup"
                            ],
                            "default": "list"
                        }
                    }
                },
                "pandoc": {
                    "description": "settings for running the ipypandoc filters, to convert markdown to other formats",
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "apply_filters": {
                            "description": "whether to apply filters to markdown",
                            "type": "boolean",
                            "default": true
                        },
                        "convert_raw": {
                            "description": "attempt to extract non-markdown formats and convert them to the target format, e.g. rst roles to latex tags",
                            "type": "boolean",
                            "default": true
                        },
                        "hide_raw": {
                            "description": "if the extracted non-markdown does not match the output format, this controls if it is shown in the output document",
                            "type": "boolean",
                            "default": false
                        },
                        "at_notation": {
                            "description": "interpret +@label as a reference type based on its prefix modifier",
                            "type": "boolean",
                            "default": true
                        },
                        "use_numref": {
                            "description": "in rst, whether to use the ``:numref:`` role or just ``:ref:``",
                            "type": "boolean",
                            "default": true
                        },
                        "reftag": {
                            "description": "in latex, default tag for citations",
                            "type": "string",
                            "default": "cite"
                        }
                    }
                },
                "latex": {
                    "description": "settings specific to outputting a latex document",
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "no_glossary": {
                            "description": "suppress the `\\printglossary` command(s) that will be output at the end of the file (if bibglossary set)",
                            "type": "boolean",
                            "default": false
                        }
                    }
                },
                "sphinx": {
                    "description": "settings specific to outputting a sphinx document",
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "orphan": {
                            "description": "whether the :orphan: directive is added to the top of the file (to suppress warnings if it is not included in a toc tree)",
                            "type": "boolean",
                            "default": false
                        },
                        "no_bib": {
                            "description": "suppress the `.. bibliography::` directive that will be output at the end of the file (if bibliography set)",
                            "type": "boolean",
                            "default": false
                        },
                        "no_glossary": {
                            "description": "suppress the `.. bibglossary::` directive that will be output at the end of the file (if bibglossary set)",
                            "type": "boolean",
                            "default": false
                        },
                        "bib_title": {
                            "description": "created as '.. rubric:: bib_title'",
                            "type": "string",
                            "default": "Bibliography"
                        },
                        "glossary_title": {
                            "description": "created as '.. rubric:: glossary_title'",
                            "type": "string",
                            "default": "Glossary"
                        },
                        "toggle_input": {
                            "description": "add toggle buttons to the right of all nbinput cells, to hide/show their content",
                            "type": "boolean",
                            "default": false
                        },
                        "toggle_input_all": {
                            "description": "add a toggle button at the top of the top of the document (using `:toggle-input-all:`), which will show/hide all nbinput cell's content",
                            "type": "boolean",
                            "default": false
                        },
                        "toggle_output": {
                            "description": "add toggle buttons to the right of all nboutput cells, to hide/show their content",
                            "type": "boolean",
                            "default": false
                        },
                        "toggle_output_all": {
                            "description": "add a toggle button at the top of the top of the document (using `:toggle-output-all:`), which will show/hide all nboutput cell's content",
                            "type": "boolean",
                            "default": false
                        }
                    }
                }
            }
        }
    }
}