{ "$schema": "http://json-schema.org/schema#", "title": "xAAL Schema Definition", "description": "General form of an xAAL schema", "license": "LGPLv3+ Christophe Lohr Telecom Bretagne 2014", "licenseref": "http://www.gnu.org/licenses/lgpl.txt", "type": "object", "properties": { "name": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*.[a-zA-Z][a-zA-Z0-9_-]*$" }, "version": { "type": "number", "minimum": 0 }, "description": { "type": "string" }, "lang": { "type": "string" }, "documentation": { "type": "string", "format": "uri" }, "ref": { "type": "string", "format": "uri" }, "license": { "type": "string" }, "licenseref": { "type": "string", "format": "uri" }, "extends": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*.[a-zA-Z][a-zA-Z0-9_-]*$" }, "internalVariables": { "type": "array", "items": { "$ref": "#/definitions/variable" }, "additionalItems": false, "uniqueItems": true }, "stateVariables": { "type": "array", "items": { "$ref": "#/definitions/variable" }, "additionalItems": false, "uniqueItems": true }, "methods": { "type": "array", "items": { "$ref": "#/definitions/method" }, "additionalItems": false, "uniqueItems": true }, "notifications": { "type": "array", "items": { "$ref": "#/definitions/notification" }, "additionalItems": false, "uniqueItems": true } }, "required": [ "name", "version", "description", "lang", "documentation", "ref" ], "additionalProperties": false, "definitions": { "variable": { "type": "object", "properties": { "name": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "description": { "type": "string" }, "unit" : { "type": "string" }, "type": { "$ref": "http://json-schema.org/schema#" } }, "additionalProperties": false, "required": [ "name", "description", "unit", "type" ] }, "parameter": { "type": "object", "properties": { "name": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "description": { "type": "string" }, "unit" : { "type": "string" }, "type": { "$ref": "http://json-schema.org/schema#" }, "direction": { "enum": [ "in", "out", "inout" ] } }, "additionalProperties": false, "required": [ "name", "description", "unit", "direction", "type" ] }, "method": { "type": "object", "properties": { "name": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "description": { "type": "string" }, "parameters": { "type": "array", "items": { "$ref": "#/definitions/parameter" }, "additionalItems": false, "uniqueItems": true } }, "required": [ "name", "description", "parameters" ] }, "notification": { "type": "object", "properties": { "name": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "description": { "type": "string" }, "parameters": { "type": "array", "items": { "$ref": "#/definitions/variable" }, "additionalItems": false, "uniqueItems": true } }, "required": [ "name", "description", "parameters" ] } } }