{"title": "FutoIn interface definition schema", "type": "object", "required": ["iface", "version"], "additionalProperties": false, "properties": {"iface": {"type": "string", "pattern": "^([a-z][a-z0-9]*)(\\.[a-z][a-z0-9]*)+$", "description": "Unique interface identifier"}, "version": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+$", "description": "Version of the given interface"}, "funcs": {"type": "object", "description": "Member function declaration", "additionalProperties": false, "patternProperties": {"^[a-z][a-zA-Z0-9]*$": {"type": "object", "additionalProperties": false, "properties": {"params": {"additionalProperties": false, "patternProperties": {"^[a-z][a-z0-9_]*$": {"type": "object", "properties": {"type": {"type": "string", "pattern": "^boolean|integer|number|string|map|array$"}, "default": {"type": ["boolean", "integer", "number", "string", "object", "array", "null"]}, "desc": {"type": "string", "description": "Parameter description"}}}}, "description": "List of allowed parameter key-value pairs"}, "result": {"additionalProperties": false, "patternProperties": {"^[a-z][a-z0-9_]*$": {"type": "object", "properties": {"type": {"type": "string", "pattern": "^boolean|integer|number|string|map|array$"}, "desc": {"type": "string", "description": "Result variable description"}}}}, "description": "List of allowed result key-value pairs"}, "rawupload": {"type": "boolean", "desc": "If not set then arbitrary data upload is not allowed."}, "rawresult": {"type": "boolean", "desc": "If set then no FutoIn response is assumed. Arbitrary raw data is sent instead."}, "throws": {"type": "array", "uniqueItems": true, "description": "List of associative error names, which can be triggered by function execution"}, "desc": {"type": "string", "description": "Interface Function description"}}, "description": "Interface Function declaration"}}}, "desc": {"type": "string", "description": "Description of the interface"}, "inherit": {"type": "string", "description": "Name:version of interface to be inherited"}, "requires": {"type": "array", "description": "List of conditions for interface operation", "items": {"type": "string", "pattern": "^AllowAnonymous|SecureChannel|[a-zA-Z0-9]+$"}, "uniqueItems": true}}}