{ "$schema": "http://json-schema.org/draft-04/schema#", "description": "IPython Notebook v3.0 JSON schema.", "type": "object", "additionalProperties": false, "required": ["metadata", "nbformat_minor", "nbformat", "worksheets"], "properties": { "metadata": { "description": "Notebook root-level metadata.", "type": "object", "additionalProperties": true, "properties": { "kernel_info": { "description": "Kernel information.", "type": "object", "required": ["name", "language"], "properties": { "name": { "description": "Name of the kernel specification.", "type": "string" }, "language": { "description": "The programming language which this kernel runs.", "type": "string" }, "codemirror_mode": { "description": "The codemirror mode to use for code in this language.", "type": "string" } } }, "signature": { "description": "Hash of the notebook.", "type": "string" } } }, "nbformat_minor": { "description": "Notebook format (minor number). Incremented for backward compatible changes to the notebook format.", "type": "integer", "minimum": 0 }, "nbformat": { "description": "Notebook format (major number). Incremented between backwards incompatible changes to the notebook format.", "type": "integer", "minimum": 3, "maximum": 3 }, "orig_nbformat": { "description": "Original notebook format (major number) before converting the notebook between versions.", "type": "integer", "minimum": 1 }, "worksheets" : { "description": "Array of worksheets", "type": "array", "items": {"$ref": "#/definitions/worksheet"} } }, "definitions": { "worksheet": { "additionalProperties": false, "required" : ["cells"], "properties":{ "cells": { "description": "Array of cells of the current notebook.", "type": "array", "items": { "type": "object", "oneOf": [ {"$ref": "#/definitions/raw_cell"}, {"$ref": "#/definitions/markdown_cell"}, {"$ref": "#/definitions/heading_cell"}, {"$ref": "#/definitions/code_cell"} ] } }, "metadata": { "type": "object", "description": "metadata of the current worksheet" } } }, "raw_cell": { "description": "Notebook raw nbconvert cell.", "type": "object", "additionalProperties": false, "required": ["cell_type", "source"], "properties": { "cell_type": { "description": "String identifying the type of cell.", "enum": ["raw"] }, "metadata": { "description": "Cell-level metadata.", "type": "object", "additionalProperties": true, "properties": { "format": { "description": "Raw cell metadata format for nbconvert.", "type": "string" }, "name": {"$ref": "#/definitions/misc/metadata_name"}, "tags": {"$ref": "#/definitions/misc/metadata_tags"} } }, "source": {"$ref": "#/definitions/misc/source"} } }, "markdown_cell": { "description": "Notebook markdown cell.", "type": "object", "additionalProperties": false, "required": ["cell_type", "source"], "properties": { "cell_type": { "description": "String identifying the type of cell.", "enum": ["markdown", "html"] }, "metadata": { "description": "Cell-level metadata.", "type": "object", "properties": { "name": {"$ref": "#/definitions/misc/metadata_name"}, "tags": {"$ref": "#/definitions/misc/metadata_tags"} }, "additionalProperties": true }, "source": {"$ref": "#/definitions/misc/source"} } }, "heading_cell": { "description": "Notebook heading cell.", "type": "object", "additionalProperties": false, "required": ["cell_type", "source", "level"], "properties": { "cell_type": { "description": "String identifying the type of cell.", "enum": ["heading"] }, "metadata": { "description": "Cell-level metadata.", "type": "object", "additionalProperties": true }, "source": {"$ref": "#/definitions/misc/source"}, "level": { "description": "Level of heading cells.", "type": "integer", "minimum": 1 } } }, "code_cell": { "description": "Notebook code cell.", "type": "object", "additionalProperties": false, "required": ["cell_type", "input", "outputs", "language"], "properties": { "cell_type": { "description": "String identifying the type of cell.", "enum": ["code"] }, "language": { "description": "The cell's language (always Python)", "type": "string" }, "collapsed": { "description": "Whether the cell is collapsed/expanded.", "type": "boolean" }, "metadata": { "description": "Cell-level metadata.", "type": "object", "additionalProperties": true }, "input": {"$ref": "#/definitions/misc/source"}, "outputs": { "description": "Execution, display, or stream outputs.", "type": "array", "items": {"$ref": "#/definitions/output"} }, "prompt_number": { "description": "The code cell's prompt number. Will be null if the cell has not been run.", "type": ["integer", "null"], "minimum": 0 } } }, "output": { "type": "object", "oneOf": [ {"$ref": "#/definitions/pyout"}, {"$ref": "#/definitions/display_data"}, {"$ref": "#/definitions/stream"}, {"$ref": "#/definitions/pyerr"} ] }, "pyout": { "description": "Result of executing a code cell.", "type": "object", "additionalProperties": false, "required": ["output_type", "prompt_number"], "properties": { "output_type": { "description": "Type of cell output.", "enum": ["pyout"] }, "prompt_number": { "description": "A result's prompt number.", "type": ["integer"], "minimum": 0 }, "text": {"$ref": "#/definitions/misc/multiline_string"}, "latex": {"$ref": "#/definitions/misc/multiline_string"}, "png": {"$ref": "#/definitions/misc/multiline_string"}, "jpeg": {"$ref": "#/definitions/misc/multiline_string"}, "svg": {"$ref": "#/definitions/misc/multiline_string"}, "html": {"$ref": "#/definitions/misc/multiline_string"}, "javascript": {"$ref": "#/definitions/misc/multiline_string"}, "json": {"$ref": "#/definitions/misc/multiline_string"}, "pdf": {"$ref": "#/definitions/misc/multiline_string"}, "metadata": {"$ref": "#/definitions/misc/output_metadata"} }, "patternProperties": { "^[a-zA-Z0-9]+/[a-zA-Z0-9\\-\\+\\.]+$": { "description": "mimetype output (e.g. text/plain), represented as either an array of strings or a string.", "$ref": "#/definitions/misc/multiline_string" } } }, "display_data": { "description": "Data displayed as a result of code cell execution.", "type": "object", "additionalProperties": false, "required": ["output_type"], "properties": { "output_type": { "description": "Type of cell output.", "enum": ["display_data"] }, "text": {"$ref": "#/definitions/misc/multiline_string"}, "latex": {"$ref": "#/definitions/misc/multiline_string"}, "png": {"$ref": "#/definitions/misc/multiline_string"}, "jpeg": {"$ref": "#/definitions/misc/multiline_string"}, "svg": {"$ref": "#/definitions/misc/multiline_string"}, "html": {"$ref": "#/definitions/misc/multiline_string"}, "javascript": {"$ref": "#/definitions/misc/multiline_string"}, "json": {"$ref": "#/definitions/misc/multiline_string"}, "pdf": {"$ref": "#/definitions/misc/multiline_string"}, "metadata": {"$ref": "#/definitions/misc/output_metadata"} }, "patternProperties": { "[a-zA-Z0-9]+/[a-zA-Z0-9\\-\\+\\.]+$": { "description": "mimetype output (e.g. text/plain), represented as either an array of strings or a string.", "$ref": "#/definitions/misc/multiline_string" } } }, "stream": { "description": "Stream output from a code cell.", "type": "object", "additionalProperties": false, "required": ["output_type", "stream", "text"], "properties": { "output_type": { "description": "Type of cell output.", "enum": ["stream"] }, "stream": { "description": "The stream type/destination.", "type": "string" }, "text": { "description": "The stream's text output, represented as an array of strings.", "$ref": "#/definitions/misc/multiline_string" } } }, "pyerr": { "description": "Output of an error that occurred during code cell execution.", "type": "object", "additionalProperties": false, "required": ["output_type", "ename", "evalue", "traceback"], "properties": { "output_type": { "description": "Type of cell output.", "enum": ["pyerr"] }, "ename": { "description": "The name of the error.", "type": "string" }, "evalue": { "description": "The value, or message, of the error.", "type": "string" }, "traceback": { "description": "The error's traceback, represented as an array of strings.", "type": "array", "items": {"type": "string"} } } }, "misc": { "metadata_name": { "description": "The cell's name. If present, must be a non-empty string.", "type": "string", "pattern": "^.+$" }, "metadata_tags": { "description": "The cell's tags. Tags must be unique, and must not contain commas.", "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[^,]+$" } }, "source": { "description": "Contents of the cell, represented as an array of lines.", "$ref": "#/definitions/misc/multiline_string" }, "prompt_number": { "description": "The code cell's prompt number. Will be null if the cell has not been run.", "type": ["integer", "null"], "minimum": 0 }, "mimetype": { "patternProperties": { "^[a-zA-Z0-9\\-\\+]+/[a-zA-Z0-9\\-\\+]+": { "description": "The cell's mimetype output (e.g. text/plain), represented as either an array of strings or a string.", "$ref": "#/definitions/misc/multiline_string" } } }, "output_metadata": { "description": "Cell output metadata.", "type": "object", "additionalProperties": true }, "multiline_string": { "oneOf" : [ {"type": "string"}, { "type": "array", "items": {"type": "string"} } ] } } } }