{ "$schema": "http://json-schema.org/draft/2019-09/schema#", "$id": "apps.json", "title": "apps.json Schema", "description": "Schema for apps.json of Project Plugins - Created by Mike Wille, NLE, 2020-08-27", "type": "object", "properties": { "Project": { "type": "string", "minLength": 3, "uniqueItems": true }, "AVMSkipScreen": { "type": "integer", "description": "The screen number (determined by Qt's screens() method) to not allow a BaseLayout to exist (1 - x), screen 0 is not allowed, as this is the main screen. Otherwise the main screen will be selected randomly.", "minimum": 1 }, "LoginPlugin": { "$ref": "#/definitions/Plugin" }, "Apps": { "type": "array", "description": "Apps that can be started from this project", "minItems": 1, "items": { "type": "object", "properties": { "Active": { "type": "boolean" }, "Visible": { "type": "boolean", "description": "If set to true, the app can be visible in the Apps menu and in the App Chooser" }, "Id": { "type": "integer", "uniqueItems": true, "minimum": 0 }, "ACLs": { "type": "array", "minItems": 1, "items": { "type": "integer", "minimum": 0, "maximum": 999999999 }, "uniqueItems": true }, "AppName": { "type": "string", "uniqueItems": true, "minLength": 2 }, "Options": { "type": "object", "description": "Defines how an app behaves and what it consists of", "properties": { "Payloads": { "type": "object", "description": "Plugins of which 'executePayload' is called from before adding actions, creating the BaseLayout, etc.", "properties": { "Plugins": { "$ref": "#/definitions/Plugins" } }, "required": [ "Plugins" ] }, "Actions": { "type": "object", "description": "Plugins of which 'getActions' is called from and adds the returned actions to the menu", "properties": { "Plugins": { "$ref": "#/definitions/Plugins" } }, "required": [ "Plugins" ] }, "Main": { "type": "object", "description": "Plugins that must be located in the Main Layout Tab. Check your plugin info for the 'main' flag to process it where you create actions or create dialogs - should be only one plugin, otherwise the main tab would be sub-tabbed", "properties": { "Plugins": { "$ref": "#/definitions/Plugins" } }, "required": [ "Plugins" ] } }, "required": [ "Actions" ] } }, "additionalProperties": false, "required": [ "Id", "AppName", "Options" ] } } }, "additionalProperties": false, "required": [ "Project", "Apps" ], "definitions": { "Plugins": { "type": "array", "items": { "$ref": "#/definitions/Plugin" }, "minItems": 1 }, "Plugin": { "type": "string", "description": "The IIDs of Gui Plugins (excluding 'gui:3:' - see *_gui_plugin.h) to load. Starting with the 3 character parent (service) id, and optionally followed by a dot an an at least 3 characters long Plugin identifier", "examples": [ "exm", "exm.watch", "opm", "pre.script.edit" ], "pattern": "^[a-z]{3}\\.[a-z.]{3,}|^[a-z^.]{3,}$" } } }