{
+ "$defs": {
+ "BoolArg": {
+ "additionalProperties": false,
+ "description": "An argument with an bool value",
+ "properties": {
+ "type": {
+ "const": "bool",
+ "default": "bool",
+ "title": "Type"
+ },
+ "name": {
+ "description": "Name of the argument that the IOC instance should pass",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the argument will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "default": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Default"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "title": "BoolArg",
+ "type": "object"
+ },
+ "Comment": {
+ "additionalProperties": false,
+ "description": "A script snippet that will have '# ' prepended to every line\nfor insertion into the startup script",
+ "properties": {
+ "type": {
+ "const": "comment",
+ "default": "comment",
+ "title": "Type"
+ },
+ "when": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/When"
+ }
+ ],
+ "default": "every",
+ "description": "One of first / every / last"
+ },
+ "value": {
+ "default": "",
+ "description": "A comment to add into the startup script",
+ "title": "Value",
+ "type": "string"
+ }
+ },
+ "title": "Comment",
+ "type": "object"
+ },
+ "Database": {
+ "additionalProperties": false,
+ "description": "A database file that should be loaded by the startup script and its args",
+ "properties": {
+ "file": {
+ "description": "Filename of the database template in <module_root>/db",
+ "title": "File",
+ "type": "string"
+ },
+ "args": {
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "description": "Dictionary of args and values to pass through to database. A value of None is equivalent to ARG: '{{ ARG }}'",
+ "title": "Args",
+ "type": "object"
+ }
+ },
+ "required": [
+ "file",
+ "args"
+ ],
+ "title": "Database",
+ "type": "object"
+ },
+ "Definition": {
+ "additionalProperties": false,
+ "description": "A single definition of a class of Entity that an IOC instance may instantiate",
+ "properties": {
+ "name": {
+ "description": "Publish Definition as type <module>.<name> for IOC instances",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "A description of the Support module defined here",
+ "title": "Description",
+ "type": "string"
+ },
+ "args": {
+ "default": [],
+ "description": "The arguments IOC instance should supply",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/FloatArg"
+ },
+ {
+ "$ref": "#/$defs/StrArg"
+ },
+ {
+ "$ref": "#/$defs/IntArg"
+ },
+ {
+ "$ref": "#/$defs/BoolArg"
+ },
+ {
+ "$ref": "#/$defs/ObjectArg"
+ },
+ {
+ "$ref": "#/$defs/IdArg"
+ },
+ {
+ "$ref": "#/$defs/EnumArg"
+ }
+ ]
+ },
+ "title": "Args",
+ "type": "array"
+ },
+ "values": {
+ "default": [],
+ "description": "The values IOC instance should supply",
+ "items": {
+ "$ref": "#/$defs/Value"
+ },
+ "title": "Values",
+ "type": "array"
+ },
+ "databases": {
+ "default": [],
+ "description": "Databases to instantiate",
+ "items": {
+ "$ref": "#/$defs/Database"
+ },
+ "title": "Databases",
+ "type": "array"
+ },
+ "pre_init": {
+ "default": [],
+ "description": "Startup script snippets to add before iocInit()",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/Text"
+ },
+ {
+ "$ref": "#/$defs/Comment"
+ }
+ ]
+ },
+ "title": "Pre Init",
+ "type": "array"
+ },
+ "post_init": {
+ "default": [],
+ "description": "Startup script snippets to add post iocInit(), such as dbpf",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/Text"
+ },
+ {
+ "$ref": "#/$defs/Comment"
+ }
+ ]
+ },
+ "title": "Post Init",
+ "type": "array"
+ },
+ "env_vars": {
+ "default": [],
+ "description": "Environment variables to set in the boot script",
+ "items": {
+ "$ref": "#/$defs/EnvironmentVariable"
+ },
+ "title": "Env Vars",
+ "type": "array"
+ },
+ "opis": {
+ "default": [],
+ "description": "Declares the PVI YAML for generating screens",
+ "items": {
+ "$ref": "#/$defs/Opi"
+ },
+ "title": "Opis",
+ "type": "array"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "title": "Definition",
+ "type": "object"
+ },
+ "EnumArg": {
+ "additionalProperties": false,
+ "description": "An argument with an enum value",
+ "properties": {
+ "type": {
+ "const": "enum",
+ "default": "enum",
+ "title": "Type"
+ },
+ "name": {
+ "description": "Name of the argument that the IOC instance should pass",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the argument will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "default": {
+ "anyOf": [
+ {},
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Default"
+ },
+ "values": {
+ "description": "provides a list of values to make this argument an Enum",
+ "title": "Values",
+ "type": "object"
+ }
+ },
+ "required": [
+ "name",
+ "description",
+ "values"
+ ],
+ "title": "EnumArg",
+ "type": "object"
+ },
+ "EnvironmentVariable": {
+ "additionalProperties": false,
+ "description": "An environment variable that should be set in the startup script",
+ "properties": {
+ "name": {
+ "description": "Name of environment variable",
+ "title": "Name",
+ "type": "string"
+ },
+ "value": {
+ "description": "Value to set",
+ "title": "Value",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "title": "EnvironmentVariable",
+ "type": "object"
+ },
+ "FloatArg": {
+ "additionalProperties": false,
+ "description": "An argument with a float value",
+ "properties": {
+ "type": {
+ "const": "float",
+ "default": "float",
+ "title": "Type"
+ },
+ "name": {
+ "description": "Name of the argument that the IOC instance should pass",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the argument will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "default": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Default"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "title": "FloatArg",
+ "type": "object"
+ },
+ "IdArg": {
+ "additionalProperties": false,
+ "description": "Explicit ID argument that an object can refer to",
+ "properties": {
+ "type": {
+ "const": "id",
+ "default": "id",
+ "title": "Type"
+ },
+ "name": {
+ "description": "Name of the argument that the IOC instance should pass",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the argument will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "default": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Default"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "title": "IdArg",
+ "type": "object"
+ },
+ "IntArg": {
+ "additionalProperties": false,
+ "description": "An argument with an int value",
+ "properties": {
+ "type": {
+ "const": "int",
+ "default": "int",
+ "title": "Type"
+ },
+ "name": {
+ "description": "Name of the argument that the IOC instance should pass",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the argument will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "default": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Default"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "title": "IntArg",
+ "type": "object"
+ },
+ "ObjectArg": {
+ "additionalProperties": false,
+ "description": "A reference to another entity defined in this IOC",
+ "properties": {
+ "type": {
+ "const": "object",
+ "default": "object",
+ "title": "Type"
+ },
+ "name": {
+ "description": "Name of the argument that the IOC instance should pass",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the argument will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "default": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Default"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "title": "ObjectArg",
+ "type": "object"
+ },
+ "Opi": {
+ "additionalProperties": false,
+ "description": "Describes one PVI YAML file",
+ "properties": {
+ "type": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/OpiType"
+ }
+ ],
+ "description": "bob or pvi"
+ },
+ "file": {
+ "description": "filename of bob or pvi",
+ "title": "File",
+ "type": "string"
+ },
+ "prefix": {
+ "description": "Args to make unique screen",
+ "title": "Prefix",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "file",
+ "prefix"
+ ],
+ "title": "Opi",
+ "type": "object"
+ },
+ "OpiType": {
+ "enum": [
+ "pvi",
+ "bob"
+ ],
+ "title": "OpiType",
+ "type": "string"
+ },
+ "StrArg": {
+ "additionalProperties": false,
+ "description": "An argument with a str value",
+ "properties": {
+ "type": {
+ "const": "str",
+ "default": "str",
+ "title": "Type"
+ },
+ "name": {
+ "description": "Name of the argument that the IOC instance should pass",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the argument will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "default": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Default"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "title": "StrArg",
+ "type": "object"
+ },
+ "Text": {
+ "additionalProperties": false,
+ "description": "A script snippet to insert into the startup script",
+ "properties": {
+ "type": {
+ "const": "text",
+ "default": "text",
+ "title": "Type"
+ },
+ "when": {
+ "default": "every",
+ "description": "One of first / every / last",
+ "title": "When",
+ "type": "string"
+ },
+ "value": {
+ "default": "",
+ "description": "raw text to add to the startup script",
+ "title": "Value",
+ "type": "string"
+ }
+ },
+ "title": "Text",
+ "type": "object"
+ },
+ "Value": {
+ "additionalProperties": false,
+ "description": "A calculated string value for a definition",
+ "properties": {
+ "name": {
+ "description": "Name of the value that the IOC instance will expose",
+ "title": "Name",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of what the value will be used for",
+ "title": "Description",
+ "type": "string"
+ },
+ "value": {
+ "description": "The contents of the value",
+ "title": "Value",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "description",
+ "value"
+ ],
+ "title": "Value",
+ "type": "object"
+ },
+ "When": {
+ "enum": [
+ "first",
+ "every",
+ "last"
+ ],
+ "title": "When",
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "description": "Lists the definitions for a support module, this defines what Entities it supports\n\nProvides the deserialize entry point.",
+ "properties": {
+ "module": {
+ "description": "Support module name, normally the repo name",
+ "title": "Module",
+ "type": "string"
+ },
+ "defs": {
+ "description": "The definitions an IOC can create using this module",
+ "items": {
+ "$ref": "#/$defs/Definition"
+ },
+ "title": "Defs",
+ "type": "array"
+ }
+ },
+ "required": [
+ "module",
+ "defs"
+ ],
+ "title": "Support",
+ "type": "object"
+}
+