{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "additionalProperties": false,
    "properties": {
        "_patternplate": {
            "description": "Technical values saved by patternplate core",
            "type": "object"
        },
        "data": {
            "description": "Custom data object supplied by user",
            "minProperties": 1,
            "type": "object"
        },
        "demoPatterns": {
            "description": "Dependencies of the pattern used for demo purposes",
            "minProperties": 1,
            "patternProperties": {
                "^.+$": {
                    "pattern": "^(/)?([^/\u0000]+(/)?)+$",
                    "type": "string"
                }
            }
        },
        "displayName": {
            "description": "Human readable name of the pattern",
            "minLength": 1,
            "type": "string"
        },
        "flag": {
            "description": "Stability flag of the pattern",
            "pattern": "^alpha|beta|rc|stable$",
            "type": "string"
        },
        "id": {
            "description": "Unique id of this pattern",
            "minLength": 1,
            "type": "string"
        },
        "meta": {
            "description": "Custom meta data object supplied by user",
            "minProperties": 1,
            "type": "object"
        },
        "name": {
            "description": "Machine readable name of the pattern",
            "minLength": 1,
            "pattern": "^[[a-z]*[-]?[a-z]*]*$",
            "type": "string"
        },
        "options": {
            "description": "Custom options object supplied by user",
            "minProperties": 1,
            "type": "object"
        },
        "overrides": {
            "description": "Options for overriding of core pattern behaviour",
            "minProperties": 1,
            "properties": {
                "demo": {
                    "description": "Custom url to use as demo for this pattern",
                    "type": "string"
                },
                "files": {
                    "description": "Custom mapping between patternplate files and paths to use in exchange for this pattern",
                    "minProperties": 1,
                    "patternProperties": {
                        "^.+$": {
                            "pattern": "^(/)?([^/\u0000]+(/)?)+$",
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "patterns": {
            "description": "Dependencies of the pattern",
            "minProperties": 1,
            "patternProperties": {
                "^.+$": {
                    "pattern": "^(/)?([^/\u0000]+(/)?)+$",
                    "type": "string"
                }
            },
            "type": "object"
        },
        "tags": {
            "description": "Array of tags describing the pattern",
            "items": {
                "description": "Tag describing the pattern",
                "minLength": 1,
                "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "_uniqueItems": true
        },
        "version": {
            "description": "Semantic version of the pattern",
            "pattern": "^\\d\\.\\d\\.\\d(-[a-z]*){0,1}$",
            "type": "string"
        },
        "versions": {
            "description": "Available semantic versions of the pattern",
            "items": {
                "description": "Semantic version of the pattern",
                "pattern": "^\\d\\.\\d\\.\\d(-[a-z]*){0,1}$",
                "type": "string"
            },
            "minItems": 1,
            "type": "array"
        }
    },
    "required": [
        "name",
        "version"
    ],
    "title": "pattern manifest",
    "type": "object"
}