{
	"$schema": "http://json-schema.org/schema#",
	"description": "Gadget definition schema",
	"type": "object",
	"additionalProperties": false,
	"properties": {
		"settings": {
			"type": "object",
			"additionalProperties": false,
			"properties": {
				"rights": {
					"description": "The rights required to be able to enable/load this gadget",
					"type": "array",
					"items": {
						"type": "string"
					}
				},
				"default": {
					"description": "Whether this gadget is enabled by default",
					"type": "boolean",
					"default": false
				},
				"package": {
					"description": "Whether this is gadget a packaged ResourceLoader module",
					"type": "boolean",
					"default": false
				},
				"hidden": {
					"description": "Whether this gadget is hidden from preferences",
					"type": "boolean",
					"default": false
				},
				"targets": {
					"description": "List of ResourceLoader targets the module can run on",
					"type": "array",
					"items": {
						"type": "string"
					},
					"default": [ "desktop" ]
				},
				"skins": {
					"description": "Skins supported by this gadget; empty or true if all skins are supported",
					"type": [ "array", "boolean" ],
					"items": {
						"type": "string"
					}
				},
				"actions": {
					"description": "Page actions on which to load the gadget",
					"type": "array",
					"items": {
						"type": "string"
					}
				},
				"namespaces": {
					"description": "Page namespaces in which to load the gadget",
					"type": "array",
					"items": {
						"type": "number"
					}
				},
				"contentModels": {
					"description": "Content models on which the gadget is supported",
					"type": "array",
					"items": {
						"type": "string"
					}
				},
				"category": {
					"description": "Key of the category this gadget belongs to",
					"type": "string",
					"default": ""
				},
				"supportsUrlLoad": {
					"description": "Whether this gadget supports ?withgadget query parameter",
					"type": "boolean",
					"default": false
				},
				"requiresES6": {
					"description": "Whether this gadget requires ES6",
					"type": "boolean",
					"default": false
				}
			}
		},
		"module": {
			"type": "object",
			"additionalProperties": false,
			"properties": {
				"scripts": {
					"type": "array",
					"description": "List of JavaScript pages included in this gadget"
				},
				"styles": {
					"type": "array",
					"description": "List of CSS pages included in this gadget"
				},
				"datas": {
					"type": "array",
					"description": "List of JSON pages included in this gadget"
				},
				"dependencies": {
					"type": "array",
					"description": "ResourceLoader modules this gadget depends upon"
				},
				"messages": {
					"type": "array",
					"description": "Messages this gadget depends upon"
				}
			}
		}
	}
}
