-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcomponent.schema.json
141 lines (141 loc) · 4.8 KB
/
component.schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
{
"$id": "/1-1-2/component.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Dynamic Component Description",
"description": "A full description of a dynamic component in the AICA application framework.",
"type": "object",
"additionalProperties": false,
"properties": {
"$schema": {
"title": "Schema",
"description": "The reference to the schema",
"examples": [
"https://json-schema.org/draft/2020-12/schema"
],
"type": "string"
},
"name": {
"title": "Component Name",
"description": "The human-readable name of the component.",
"examples": [
"Point Attractor",
"Interactive Marker",
"Weighted Sum"
],
"type": "string"
},
"description": {
"title": "Component Description",
"description": "The human-readable description of this component and its behaviour.",
"type": "object",
"properties": {
"brief": {
"description": "A brief (one-line) description of the component for quick reference and tool-tips.",
"examples": [
"Generates a velocity command towards a target attractor"
],
"type": "string"
},
"details": {
"description": "An optional detailed description of the component.",
"examples": [
"Given an input Cartesian pose and parameterized target pose, this component generates a Cartesian twist output towards the target linearly proportional to the distance multiplied by the gain parameter."
],
"type": "string"
}
},
"required": [
"brief"
]
},
"registration": {
"$ref": "#/$defs/registration"
},
"inherits": {
"$ref": "#/$defs/registration"
},
"lifecycle": {
"title": "Lifecycle Component",
"description": "If true, this property indicates that the component is a lifecycle component.",
"type": "boolean",
"default": false
},
"virtual": {
"title": "Virtual Component Class",
"description": "If true, this property indicates that the component is an abstract or virtual base class and not directly instantiable.",
"type": "boolean",
"default": false
},
"inputs": {
"title": "Component Input Signals",
"description": "The fixed input signals (subscriptions) of the component.",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/aica-technology/api/main/docs/static/schemas/1-0-0/interfaces.schema.json#/$defs/signal"
},
"uniqueItems": true
},
"input_collections": {
"title": "Component Input Signal Collections",
"description": "The dynamically assignable input signals (subscriptions) of the component.",
"type": "array",
"items": {
"$ref": "signal_collection.schema.json"
},
"uniqueItems": true
},
"outputs": {
"title": "Component Output Signals",
"description": "The output signals (publications) of the component.",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/aica-technology/api/main/docs/static/schemas/1-0-0/interfaces.schema.json#/$defs/signal"
},
"uniqueItems": true
},
"parameters": {
"title": "Component Parameters",
"description": "The parameters declared by the component.",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/aica-technology/api/main/docs/static/schemas/1-0-0/interfaces.schema.json#/$defs/parameter"
},
"uniqueItems": true
},
"predicates": {
"title": "Component Predicates",
"description": "The predicates provided by the component.",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/aica-technology/api/main/docs/static/schemas/1-0-0/interfaces.schema.json#/$defs/predicate"
},
"uniqueItems": true
},
"services": {
"title": "Component Services",
"description": "The services provided by the component.",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/aica-technology/api/main/docs/static/schemas/1-0-0/interfaces.schema.json#/$defs/service"
},
"uniqueItems": true
}
},
"required": [
"name",
"description",
"registration",
"inherits"
],
"$defs": {
"registration": {
"title": "Component Registration",
"description": "The full registered class name of the exported component required for run-time loading. The registration must start with the package name and may include additional namespaces delimited by double colons `::`.",
"type": "string",
"examples": [
"modulo_components::Component",
"foo_package::other_namespace::Foo"
]
}
}
}