Files
qt5-legatus-legacy/Lts/Projects/apps.schema.json
T
2026-08-13 18:33:10 +02:00

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,}$"
}
}
}