UNPKG

8.64 kBJSONView Raw
1{
2 "title": "SoftwareSession",
3 "@id": "stencila:SoftwareSession",
4 "extends": "Thing",
5 "role": "primary",
6 "status": "unstable",
7 "category": "code",
8 "description": "Definition of a compute session, including its software and compute resource\nrequirements and status.\n",
9 "$comment": "Usually used to define the environment that is required to execute an\nexecutable document.\n",
10 "properties": {
11 "type": {
12 "@id": "schema:type",
13 "description": "The name of the type.",
14 "type": "string",
15 "enum": [
16 "SoftwareSession"
17 ],
18 "default": "SoftwareSession",
19 "from": "Entity"
20 },
21 "id": {
22 "@id": "schema:id",
23 "description": "The identifier for this item.",
24 "type": "string",
25 "from": "Entity"
26 },
27 "meta": {
28 "@id": "stencila:meta",
29 "description": "Metadata associated with this item.",
30 "type": "object",
31 "from": "Entity"
32 },
33 "alternateNames": {
34 "@id": "schema:alternateName",
35 "description": "Alternate names (aliases) for the item.",
36 "type": "array",
37 "items": {
38 "type": "string"
39 },
40 "from": "Thing",
41 "isArray": true,
42 "isPlural": true,
43 "aliases": [
44 "alternateName"
45 ]
46 },
47 "description": {
48 "@id": "schema:description",
49 "description": "A description of the item.",
50 "$comment": "Allows for the description to be an array of nodes (e.g. an array of inline content,\nor a couple of paragraphs), or a string. The `minItems` restriction avoids a string\nbeing coerced into an array with a single string item.\n",
51 "anyOf": [
52 {
53 "type": "array",
54 "items": {
55 "$ref": "BlockContent.schema.json"
56 }
57 },
58 {
59 "type": "array",
60 "items": {
61 "$ref": "InlineContent.schema.json"
62 },
63 "minItems": 2
64 },
65 {
66 "type": "string"
67 }
68 ],
69 "from": "Thing"
70 },
71 "identifiers": {
72 "@id": "schema:identifier",
73 "description": "Any kind of identifier for any kind of Thing.",
74 "$comment": "Some identifiers have specific properties e.g the `issn` property for\nthe `Periodical` type. These should be used in preference to this\nproperty which is intended for identifiers that do not yet have a\nspecific property. Identifiers can be represented as strings, but\nusing a `PropertyValue` will usually be better because it allows\nfor `propertyID` (i.e. the type of identifier).\n",
75 "type": "array",
76 "items": {
77 "anyOf": [
78 {
79 "$ref": "PropertyValue.schema.json"
80 },
81 {
82 "type": "string"
83 }
84 ]
85 },
86 "from": "Thing",
87 "isArray": true,
88 "isPlural": true,
89 "aliases": [
90 "identifier"
91 ]
92 },
93 "images": {
94 "@id": "schema:image",
95 "description": "Images of the item.",
96 "type": "array",
97 "items": {
98 "anyOf": [
99 {
100 "$ref": "ImageObject.schema.json"
101 },
102 {
103 "type": "string",
104 "format": "uri"
105 }
106 ]
107 },
108 "from": "Thing",
109 "isArray": true,
110 "isPlural": true,
111 "aliases": [
112 "image"
113 ]
114 },
115 "name": {
116 "@id": "schema:name",
117 "description": "The name of the item.",
118 "type": "string",
119 "from": "Thing"
120 },
121 "url": {
122 "@id": "schema:url",
123 "description": "The URL of the item.",
124 "type": "string",
125 "format": "uri",
126 "from": "Thing"
127 },
128 "environment": {
129 "@id": "stencila:environment",
130 "description": "The software environment to execute this session in.",
131 "allOf": [
132 {
133 "$ref": "SoftwareEnvironment.schema.json"
134 }
135 ],
136 "from": "SoftwareSession"
137 },
138 "dateStart": {
139 "@id": "schema:startDate",
140 "description": "The date-time that the session began.",
141 "anyOf": [
142 {
143 "$ref": "Date.schema.json"
144 },
145 {
146 "type": "string",
147 "format": "date"
148 },
149 {
150 "type": "string",
151 "format": "date-time"
152 }
153 ],
154 "from": "SoftwareSession"
155 },
156 "dateEnd": {
157 "@id": "schema:endDate",
158 "description": "The date-time that the session ended.",
159 "anyOf": [
160 {
161 "$ref": "Date.schema.json"
162 },
163 {
164 "type": "string",
165 "format": "date"
166 },
167 {
168 "type": "string",
169 "format": "date-time"
170 }
171 ],
172 "from": "SoftwareSession"
173 },
174 "status": {
175 "@id": "stencila:sessionStatus",
176 "description": "The status of the session (starting, stopped, etc).",
177 "enum": [
178 "unknown",
179 "starting",
180 "started",
181 "stopping",
182 "stopped",
183 "failed"
184 ],
185 "from": "SoftwareSession"
186 },
187 "clientsRequest": {
188 "@id": "stencila:clientsRequest",
189 "description": "The maximum number of concurrent clients requested for the session.",
190 "type": "number",
191 "minimum": 0,
192 "from": "SoftwareSession"
193 },
194 "clientsLimit": {
195 "@id": "stencila:clientsLimit",
196 "description": "The maximum number of concurrent clients the session is limited to.",
197 "type": "number",
198 "minimum": 0,
199 "from": "SoftwareSession"
200 },
201 "durationRequest": {
202 "@id": "stencila:durationRequest",
203 "description": "The maximum duration (seconds) requested for the session.",
204 "type": "number",
205 "minimum": 0,
206 "from": "SoftwareSession"
207 },
208 "durationLimit": {
209 "@id": "stencila:durationLimit",
210 "description": "The maximum duration (seconds) the session is limited to.",
211 "type": "number",
212 "minimum": 0,
213 "from": "SoftwareSession"
214 },
215 "timeoutRequest": {
216 "@id": "stencila:timeoutRequest",
217 "description": "The inactivity timeout (seconds) requested for the session.",
218 "type": "number",
219 "minimum": 0,
220 "from": "SoftwareSession"
221 },
222 "timeoutLimit": {
223 "@id": "stencila:timeoutLimit",
224 "description": "The inactivity timeout (seconds) the session is limited to.",
225 "type": "number",
226 "minimum": 0,
227 "from": "SoftwareSession"
228 },
229 "cpuRequest": {
230 "@id": "stencila:cpuRequest",
231 "description": "The amount of CPU requested for the session.",
232 "type": "number",
233 "minimum": 0,
234 "from": "SoftwareSession"
235 },
236 "cpuLimit": {
237 "@id": "stencila:cpuLimit",
238 "description": "The amount of CPU the session is limited to.",
239 "type": "number",
240 "minimum": 0,
241 "from": "SoftwareSession"
242 },
243 "memoryRequest": {
244 "@id": "stencila:memoryRequest",
245 "description": "The amount of memory requested for the session.",
246 "type": "number",
247 "minimum": 0,
248 "from": "SoftwareSession"
249 },
250 "memoryLimit": {
251 "@id": "stencila:memoryLimit",
252 "description": "The amount of memory that the session is limited to.",
253 "type": "number",
254 "minimum": 0,
255 "from": "SoftwareSession"
256 },
257 "networkTransferRequest": {
258 "@id": "stencila:networkTransferRequest",
259 "description": "The amount of network data transfer (GiB) requested for the session.",
260 "type": "number",
261 "minimum": 0,
262 "from": "SoftwareSession"
263 },
264 "networkTransferLimit": {
265 "@id": "stencila:networkTransferLimit",
266 "description": "The amount of network data transfer (GiB) that the session is limited to.",
267 "type": "number",
268 "minimum": 0,
269 "from": "SoftwareSession"
270 },
271 "volumeMounts": {
272 "@id": "stencila:volumeMounts",
273 "description": "Volumes to mount in the session.",
274 "type": "array",
275 "items": [
276 {
277 "$ref": "VolumeMount.schema.json"
278 }
279 ],
280 "from": "SoftwareSession",
281 "isArray": true,
282 "isPlural": true,
283 "aliases": [
284 "volumeMount"
285 ]
286 }
287 },
288 "file": "SoftwareSession.schema.yaml",
289 "children": [],
290 "descendants": [],
291 "$schema": "http://json-schema.org/draft-07/schema#",
292 "$id": "https://schema.stenci.la/v0/SoftwareSession.schema.json",
293 "source": "https://github.com/stencila/schema/blob/master/SoftwareSession.schema.yaml",
294 "type": "object",
295 "propertyAliases": {
296 "alternateName": "alternateNames",
297 "identifier": "identifiers",
298 "image": "images",
299 "volumeMount": "volumeMounts"
300 },
301 "additionalProperties": false,
302 "required": [
303 "type"
304 ]
305}