{
	"description": "Project sources definition",
	"type": "array",
	"items": {
		"type": "object",
		"properties": {
			"type" : {
				"type": "string",
				"description": "Source type, in ['template', 'lib', 'webos-service', ...] (extensible)",
				"format": "regex",
				"pattern": "([-_.a-zA-Z0-9]+)",
				"required": true
			},
			"id": {
				"type": "string",
				"description": "Unique source ID. ex: bootplate-2.1.1",
				"format": "regex",
				"pattern": "([-_.a-zA-Z0-9]+)",
				"required": true
			},
			"description": {
				"type": "string",
				"description": "One-line description of the project template",
				"format": "regex",
				"pattern": "([a-zA-Z0-9- ]+)",
				"required": true,
				"default": "Enyo bootplate 2.1.1"
			},
			"files": {
				"description": "List of zip files part of a project templates definition",
				"type": "array",
				"required": true,
				"items": {
					"type":"object",
					"properties": {
						"url": {
							"type": "string",
							"description": "filename or http url of the zip file. In case of filename, it must be relative to the directory where the project templates definition file is stored",
							"format": "regex",
							"pattern": "([-._a-zA-Z0-9:/]+)",
							"required": true
						},
						"alternateUrl": {
							"type": "string",
							"description": "http url of the zip file",
							"format": "regex",
							"pattern": "(http://[-._a-zA-Z0-9:/]+)",
							"required": false
						},
						"prefixToRemove": {
							"type": "string",
							"description": "Directory prefix to remove from the extracted files. ex: bootplate.  Only applicable to ZIP & other archive files.",
							"format": "regex",
							"pattern": "([a-zA-Z0-9]+)",
							"required": false
						},
						"prefixToAdd": {
							"type": "string",
							"description": "Directory prefix to prepend to the extracted files (after removal due to 'prefixToRemove'). ex: 'services/simpleService'.  Only applicable to ZIP & other archive files.",
							"format": "regex",
							"pattern": "([a-zA-Z0-9]+)",
							"required": false
						},
						"excluded": {
							"type": "array",
							"required": false,
							"items": {
								"type": "string",
								"description": "Directory prefix to remove from the extracted files. ex: bootplate/api.  Only applicable to ZIP & other archive files.",
								"format": "regex",
								"pattern": "([a-zA-Z0-9-/]+)"
							}
						},
						"installAs": {
							"type": "string",
							"description": "Target filename to use for this file.  Only applicable to non-archive files.",
							"required": false
						}
					}
				}
			}
		}
	}
}

