Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
This commit is contained in:
174
tools/EVerest-main/lib/everest/framework/schemas/manifest.yaml
Normal file
174
tools/EVerest-main/lib/everest/framework/schemas/manifest.yaml
Normal file
@@ -0,0 +1,174 @@
|
||||
$schema: http://json-schema.org/draft-07/schema#
|
||||
description: Json schema for EVerest manifest files
|
||||
$defs:
|
||||
config_set_schema:
|
||||
type: object
|
||||
patternProperties:
|
||||
^[a-zA-Z_][a-zA-Z0-9_.-]*$:
|
||||
type: object
|
||||
required:
|
||||
- type
|
||||
- description
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
enum:
|
||||
- boolean
|
||||
- integer
|
||||
- number
|
||||
- string
|
||||
description:
|
||||
type: string
|
||||
minLength: 2
|
||||
mutability:
|
||||
type: string
|
||||
enum:
|
||||
- ReadOnly
|
||||
- ReadWrite
|
||||
- WriteOnly
|
||||
default: ReadOnly
|
||||
additionalProperties: true
|
||||
additionalProperties: false
|
||||
default: {}
|
||||
type: object
|
||||
required:
|
||||
- description
|
||||
- metadata
|
||||
properties:
|
||||
description:
|
||||
type: string
|
||||
minLength: 2
|
||||
config:
|
||||
description: >-
|
||||
Config set for this module (and possibly default values) declared
|
||||
as json schema
|
||||
$ref: '#/$defs/config_set_schema'
|
||||
provides:
|
||||
description: >-
|
||||
this configures a list of implementations this module provides along
|
||||
with their api, provided vars and config
|
||||
type: object
|
||||
# at least one implementation is required
|
||||
minProperties: 1
|
||||
patternProperties:
|
||||
# arbitrary implementation id
|
||||
^[a-zA-Z_][a-zA-Z0-9_.-]*$:
|
||||
description: This defines api, provided vars and config of this implementation
|
||||
type: object
|
||||
required:
|
||||
- description
|
||||
- interface
|
||||
# sadly the schema validates properties from "properties" against matching "patternProperties", too
|
||||
# --> we have to prevent this matching to not double validate against competing schemes
|
||||
patternProperties:
|
||||
# allow all sorts of additional properties that can be used to match requirements to
|
||||
^(?!interface|config|cmds|vars$)[a-zA-Z_][a-zA-Z0-9_.-]*$:
|
||||
# only allow primitive types in here
|
||||
type:
|
||||
- string
|
||||
- integer
|
||||
- number
|
||||
- boolean
|
||||
- 'null'
|
||||
properties:
|
||||
description:
|
||||
type: string
|
||||
minLength: 2
|
||||
interface:
|
||||
description: this defines the interface to be implemented
|
||||
type: string
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_.-]*$
|
||||
minLength: 3
|
||||
config:
|
||||
description: >-
|
||||
Config set for this implementation (and possibly default
|
||||
values) declared as json schema
|
||||
$ref: '#/$defs/config_set_schema'
|
||||
additionalProperties: false
|
||||
# add empty provides if not already present
|
||||
default: {}
|
||||
# don't allow arbitrary additional properties
|
||||
additionalProperties: false
|
||||
requires:
|
||||
description: >-
|
||||
This describes a list of requirements that must be fulfilled by other
|
||||
modules. The key of this is an arbitrary requirement id that has to be referenced
|
||||
in the connections object by the main config, the values are a list of properties
|
||||
(key-value-pairs) the required module and implementations must have set in their
|
||||
provides section to fulfill this requirement
|
||||
type: object
|
||||
patternProperties:
|
||||
# requirement id
|
||||
^[a-zA-Z_][a-zA-Z0-9_.-]*$:
|
||||
type: object
|
||||
required:
|
||||
- interface
|
||||
properties:
|
||||
interface:
|
||||
type: string
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_.-]*$
|
||||
min_connections:
|
||||
type: integer
|
||||
minimum: 0
|
||||
default: 1
|
||||
max_connections:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
# Used for now for the Rust bindings.
|
||||
ignore:
|
||||
type: object
|
||||
properties:
|
||||
vars:
|
||||
type:
|
||||
- string
|
||||
- array
|
||||
items:
|
||||
type: string
|
||||
uniqueItems: true
|
||||
errors:
|
||||
type: boolean
|
||||
default: false
|
||||
# don't allow arbitrary additional properties
|
||||
additionalProperties: false
|
||||
# don't allow arbitrary additional properties
|
||||
additionalProperties: false
|
||||
default: {}
|
||||
metadata:
|
||||
description: this describes some metadata for this module
|
||||
type: object
|
||||
required:
|
||||
- license
|
||||
- authors
|
||||
properties:
|
||||
base_license:
|
||||
description: URI pointing to the base license of this module (e.g. https://opensource.org/licenses/Apache-2.0)
|
||||
type: string
|
||||
format: uri
|
||||
license:
|
||||
description: URI pointing to the license of this module (e.g. https://opensource.org/licenses/Apache-2.0)
|
||||
type: string
|
||||
format: uri
|
||||
authors:
|
||||
description: Author(s) of this module (an array of strings)
|
||||
type: array
|
||||
minItems: 1
|
||||
items:
|
||||
type: string
|
||||
minLength: 2
|
||||
# allow all sorts of additional properties
|
||||
additionalProperties: true
|
||||
default: {}
|
||||
enable_external_mqtt:
|
||||
description: this requests access to the external mqtt publishing interface
|
||||
type: boolean
|
||||
default: false
|
||||
enable_telemetry:
|
||||
description: this requests access to the telemetry publishing interface
|
||||
type: boolean
|
||||
default: false
|
||||
enable_global_errors:
|
||||
description: this requests access to the global error subscription interface
|
||||
type: boolean
|
||||
default: false
|
||||
additionalProperties: false
|
||||
Reference in New Issue
Block a user