{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "definitions": {
        "engineDetail": {
            "properties": {
                "deprecated": {
                    "default": "",
                    "description": "The version of the engine in which this was deprecated",
                    "pattern": "^((0|[1-9]\\d*)(\\.(0|[1-9]\\d*)(\\.(0|[1-9]\\d*))?)?)?$",
                    "title": "Deprecated version",
                    "type": "string"
                },
                "docs": {
                    "default": "",
                    "description": "Link to engine-specific documentation",
                    "title": "Docs",
                    "type": "string"
                },
                "minimum_version": {
                    "description": "The version of the engine in which this was introduced",
                    "pattern": "^((0|[1-9]\\d*)(\\.(0|[1-9]\\d*)(\\.(0|[1-9]\\d*))?)?)?$",
                    "title": "Minimum version",
                    "type": "string"
                },
                "notes": {
                    "default": "",
                    "description": "Additional notes about engine compatibility",
                    "title": "Notes",
                    "type": "string"
                },
                "removed": {
                    "default": "",
                    "description": "The version of the engine in which this was removed",
                    "pattern": "^((0|[1-9]\\d*)(\\.(0|[1-9]\\d*)(\\.(0|[1-9]\\d*))?)?)?$",
                    "title": "Removed version",
                    "type": "string"
                }
            },
            "required": [
                "minimum_version"
            ],
            "title": "Engine Detail",
            "type": "object"
        },
        "engines": {
            "properties": {
                "coldfusion": {
                    "$ref": "#/definitions/engineDetail",
                    "description": "Engine details for ColdFusion",
                    "title": "ColdFusion",
                    "type": "object"
                },
                "lucee": {
                    "$ref": "#/definitions/engineDetail",
                    "description": "Engine details for Lucee",
                    "title": "Lucee",
                    "type": "object"
                },
                "openbd": {
                    "$ref": "#/definitions/engineDetail",
                    "description": "Engine details for OpenBD",
                    "title": "OpenBD",
                    "type": "object"
                },
                "railo": {
                    "$ref": "#/definitions/engineDetail",
                    "description": "Engine details for Railo",
                    "title": "Railo",
                    "type": "object"
                }
            },
            "title": "Engines",
            "type": "object"
        },
        "params": {
            "default": [],
            "description": "List of parameters",
            "items": {
                "description": "Argument or attribute",
                "properties": {
                    "callback_params": {
                        "$ref": "#/definitions/params",
                        "default": [],
                        "description": "When type is function, this ",
                        "minItems": 0,
                        "title": "Callback Parameters",
                        "type": "array"
                    },
                    "default": {
                        "default": "",
                        "description": "The default value of the parameter when not provided",
                        "title": "Default",
                        "type": "string"
                    },
                    "description": {
                        "description": "Description of the parameter",
                        "title": "Description",
                        "type": "string"
                    },
                    "engines": {
                        "$ref": "#/definitions/engines",
                        "description": "Engine compatibility information",
                        "title": "Engines",
                        "type": "object"
                    },
                    "name": {
                        "description": "Parameter name",
                        "title": "Name",
                        "type": "string"
                    },
                    "required": {
                        "description": "Whether this parameter is required",
                        "title": "Required",
                        "type": "boolean"
                    },
                    "type": {
                        "description": "The data type of the parameter",
                        "enum": [
                            "any",
                            "array",
                            "binary",
                            "boolean",
                            "component",
                            "date",
                            "function",
                            "guid",
                            "numeric",
                            "query",
                            "string",
                            "struct",
                            "uuid",
                            "variableName",
                            "xml"
                        ],
                        "title": "Type",
                        "type": "string"
                    },
                    "values": {
                        "default": [],
                        "description": "List of enumerated values for the parameter",
                        "items": {
                            "description": "One of the enumerated values for the parameter",
                            "title": "Value",
                            "type": "string"
                        },
                        "minItems": 0,
                        "title": "Values",
                        "type": "array"
                    }
                },
                "required": [
                    "name",
                    "description",
                    "type",
                    "required"
                ],
                "title": "Parameter",
                "type": "object"
            },
            "minItems": 0,
            "title": "Parameters",
            "type": "array"
        }
    },
    "description": "CFDocs data file",
    "properties": {
        "description": {
            "description": "A short description of the item",
            "title": "Description",
            "type": "string"
        },
        "discouraged": {
            "default": "",
            "description": "If this key exists and has content a warning is displayed stating that the tag or function is discouraged by the CFML community.",
            "title": "Discouraged",
            "type": "string"
        },
        "engines": {
            "$ref": "#/definitions/engines",
            "description": "Engine compatibility information",
            "title": "Engines",
            "type": "object"
        },
        "examples": {
            "default": [],
            "description": "A list of examples",
            "items": {
                "description": "Information about the example",
                "properties": {
                    "code": {
                        "description": "The example code",
                        "title": "Code",
                        "type": "string"
                    },
                    "description": {
                        "description": "Description of the code example",
                        "title": "Description",
                        "type": "string"
                    },
                    "result": {
                        "description": "The expected output of the code example",
                        "title": "Result",
                        "type": "string"
                    },
                    "runnable": {
                        "description": "Whether the code is runnable",
                        "title": "Runnable",
                        "type": "boolean"
                    },
                    "title": {
                        "description": "Name of the code example",
                        "title": "Title",
                        "type": "string"
                    }
                },
                "required": [
                    "title",
                    "description",
                    "code"
                ],
                "title": "Example",
                "type": "object"
            },
            "minItems": 0,
            "title": "Examples",
            "type": "array"
        },
        "links": {
            "default": [],
            "description": "A list of external references",
            "items": {
                "description": "Information about the reference",
                "properties": {
                    "description": {
                        "description": "A description for the link",
                        "title": "Description",
                        "type": "string"
                    },
                    "title": {
                        "description": "A title for the link",
                        "title": "Title",
                        "type": "string"
                    },
                    "url": {
                        "description": "The link URL",
                        "title": "URL",
                        "type": "string"
                    }
                },
                "required": [
                    "title",
                    "description",
                    "url"
                ],
                "title": "Link",
                "type": "object"
            },
            "minItems": 0,
            "title": "Links",
            "type": "array"
        },
        "member": {
            "default": "",
            "description": "For functions, shows the available member function syntax.",
            "title": "Member",
            "type": "string"
        },
        "name": {
            "description": "The name of the tag or function. Use lowercase.",
            "pattern": "^[a-z]\\w+$",
            "title": "Name",
            "type": "string"
        },
        "params": {
            "$ref": "#/definitions/params",
            "default": [],
            "description": "List of parameters",
            "minItems": 0,
            "title": "Parameters",
            "type": "array"
        },
        "related": {
            "default": [],
            "description": "A list of tag or function names that are related to this item",
            "items": {
                "description": "The name of a function or tag that is already documented",
                "title": "Entity name",
                "type": "string"
            },
            "minItems": 0,
            "title": "Related",
            "type": "array"
        },
        "returns": {
            "default": "void",
            "description": "The return type of a function.",
            "enum": [
                "any",
                "array",
                "binary",
                "boolean",
                "date",
                "function",
                "guid",
                "numeric",
                "query",
                "string",
                "struct",
                "uuid",
                "variableName",
                "void",
                "xml"
            ],
            "title": "Return Type",
            "type": "string"
        },
        "script": {
            "default": "",
            "description": "For tags, shows how the tag would be invoked from cfscript.",
            "title": "Syntax",
            "type": "string"
        },
        "syntax": {
            "default": "",
            "description": "The basic syntax of the tag or function",
            "title": "Syntax",
            "type": "string"
        },
        "type": {
            "description": "Whether this refers to a function, tag, or listing",
            "enum": [
                "function",
                "tag",
                "listing"
            ],
            "title": "Type",
            "type": "string"
        }
    },
    "required": [
        "name",
        "description",
        "type"
    ],
    "title": "CFDocs",
    "type": "object"
}