130 lines
3.9 KiB
JSON
Executable File
130 lines
3.9 KiB
JSON
Executable File
{
|
|
"$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,}$"
|
|
}
|
|
}
|
|
}
|