@wandelbots/nova-js 3.12.0 → 3.13.0-pr.307.0c31cef

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3593 @@
1
+ info:
2
+ title: Wandelbots NOVA Async API
3
+ version: '2.0'
4
+ license:
5
+ name: Apache 2.0
6
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
7
+ description: |
8
+ Interact with robots in an easy and intuitive way.
9
+ contact:
10
+ name: Copyright (c) 2025 Wandelbots GmbH
11
+ url: https://www.wandelbots.com
12
+ components:
13
+ schemas:
14
+ CellName:
15
+ type: string
16
+ description: |
17
+ A unique name for the cell used as an identifier for addressing the cell in all API calls.
18
+ It must be a valid k8s label name as defined by [RFC 1123](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names).
19
+ pattern: ^[a-z][a-z0-9-]{0,30}[a-z0-9]$
20
+ default: cell
21
+ CellDescription:
22
+ type: string
23
+ maxLength: 200
24
+ description: |
25
+ A description of the cell.
26
+ AbbController:
27
+ title: AbbController
28
+ description: |
29
+ The configuration of a physical ABB robot controller has to contain IP address.
30
+ Additionally an EGM server configuration has to be specified in order to control the robot.
31
+ Deploying the server is a functionality of this API.
32
+ type: object
33
+ required:
34
+ - kind
35
+ - controller_ip
36
+ - controller_port
37
+ - egm_server
38
+ properties:
39
+ kind:
40
+ type: string
41
+ enum:
42
+ - AbbController
43
+ x-go-type-skip-optional-pointer: true
44
+ x-is-discriminator: true
45
+ controller_ip:
46
+ type: string
47
+ controller_port:
48
+ description: |
49
+ Default values: 80, 443. If custom value is set, field is required.
50
+ type: integer
51
+ default: 80
52
+ egm_server:
53
+ description: The EGM server runs inside of the cell, thus its IP must be in the same network as the 'controller_ip'
54
+ type: object
55
+ required:
56
+ - ip
57
+ - port
58
+ properties:
59
+ ip:
60
+ type: string
61
+ port:
62
+ type: integer
63
+ default: 32112
64
+ ControllerNetworkInterface:
65
+ title: ControllerNetworkInterface
66
+ description: |
67
+ Optional dedicated network interface for a physical robot controller.
68
+
69
+ When set, the controller is given its own network interface on the selected
70
+ physical network port (`pf`) with the given `address`, so it can reach the
71
+ robot network directly.
72
+ type: object
73
+ required:
74
+ - address
75
+ - pf
76
+ properties:
77
+ address:
78
+ description: |
79
+ IPv4 address in CIDR notation to assign to the controller's network
80
+ interface, for example `192.168.1.10/24`. The value must be a valid IPv4
81
+ address followed by a prefix length between 0 and 32.
82
+ type: string
83
+ pattern: ^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}/([0-9]|[12][0-9]|3[0-2])$
84
+ example: 192.168.1.10/24
85
+ pf:
86
+ description: |
87
+ Name of the node's physical network port that connects to the robot
88
+ network, for example `enp10s0f0`. The controller's interface is provided
89
+ from this port.
90
+ type: string
91
+ pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,14}$
92
+ example: enp10s0f0
93
+ FanucController:
94
+ title: FanucController
95
+ description: The configuration of a physical FANUC robot controller has to contain IP address of the controller.
96
+ type: object
97
+ required:
98
+ - kind
99
+ - controller_ip
100
+ properties:
101
+ kind:
102
+ type: string
103
+ enum:
104
+ - FanucController
105
+ x-go-type-skip-optional-pointer: true
106
+ x-is-discriminator: true
107
+ controller_ip:
108
+ type: string
109
+ network_interface:
110
+ $ref: '#/components/schemas/ControllerNetworkInterface'
111
+ KukaController:
112
+ title: KukaController
113
+ description: |
114
+ The configuration of a physical KUKA robot controller has to contain an IP address.
115
+ Additionally an RSI server configuration has to be specified in order to control the robot.
116
+ Deploying the server is a functionality of this API.
117
+ type: object
118
+ required:
119
+ - kind
120
+ - controller_ip
121
+ - controller_port
122
+ - rsi_server
123
+ properties:
124
+ kind:
125
+ type: string
126
+ enum:
127
+ - KukaController
128
+ x-go-type-skip-optional-pointer: true
129
+ x-is-discriminator: true
130
+ controller_ip:
131
+ type: string
132
+ controller_port:
133
+ type: integer
134
+ default: 54600
135
+ rsi_server:
136
+ description: The RSI server runs inside of the cell.
137
+ type: object
138
+ required:
139
+ - ip
140
+ - port
141
+ properties:
142
+ ip:
143
+ type: string
144
+ default: 0.0.0.0
145
+ port:
146
+ type: integer
147
+ default: 30152
148
+ slow_cycle_rate:
149
+ type: boolean
150
+ default: false
151
+ description: |
152
+ If true, uses slower cycle time of 12ms instead of 4ms.
153
+ UniversalrobotsController:
154
+ title: UniversalrobotsController
155
+ description: The configuration of a physical Universal Robots controller has to contain IP address of the controller.
156
+ type: object
157
+ required:
158
+ - kind
159
+ - controller_ip
160
+ properties:
161
+ kind:
162
+ type: string
163
+ enum:
164
+ - UniversalrobotsController
165
+ x-go-type-skip-optional-pointer: true
166
+ x-is-discriminator: true
167
+ controller_ip:
168
+ type: string
169
+ Manufacturer:
170
+ type: string
171
+ enum:
172
+ - abb
173
+ - fanuc
174
+ - kuka
175
+ - staubli
176
+ - universalrobots
177
+ - yaskawa
178
+ MotionGroupModel:
179
+ title: MotionGroupModel
180
+ type: string
181
+ description: |
182
+ Identifies a single motion group model.
183
+ See [getMotionGroupModels](#/operations/getMotionGroupModels) for supported types.
184
+ MotionGroupFromType:
185
+ title: Motion Group from Model
186
+ type: object
187
+ required:
188
+ - motion_group_model
189
+ - motion_group
190
+ properties:
191
+ motion_group:
192
+ type: string
193
+ description: Unique identifier for the motion group to be added.
194
+ motion_group_model:
195
+ $ref: '#/components/schemas/MotionGroupModel'
196
+ initial_joint_position:
197
+ type: string
198
+ description: |
199
+ Initial joint position of the added motion group.
200
+ Provides the joint position as a JSON array of float values in radians. The array length
201
+ must match the robot's degrees of freedom, e.g., `"[0, 0, 0, 0, 0, 0]"` for a 6-DOF robot.
202
+ If the provided array length does not match the robot's DOF, the array will be adjusted; if it is longer, extra values will be truncated;
203
+ if it is shorter, missing values will be filled with zeros.
204
+ MotionGroupFromJson:
205
+ title: Motion Group from JSON
206
+ type: object
207
+ required:
208
+ - json_data
209
+ - extracted_motion_group_id
210
+ - motion_group
211
+ properties:
212
+ motion_group:
213
+ type: string
214
+ description: Unique identifier for the motion group to be added.
215
+ json_data:
216
+ type: string
217
+ description: |
218
+ JSON configuration of the virtual robot controller, can be obtained from the physical controller's configuration
219
+ via [getVirtualControllerConfiguration](#/operations/getVirtualControllerConfiguration).
220
+ extracted_motion_group_id:
221
+ type: string
222
+ description: |
223
+ The identifier of the motion group that needs to be extracted from the provided JSON configuration.
224
+ initial_joint_position:
225
+ type: string
226
+ description: |
227
+ Initial joint position of the added motion group.
228
+ Provides the joint position as a JSON array of float values in radians. The array length
229
+ must match the robot's degrees of freedom, e.g., `"[0, 0, 0, 0, 0, 0]"` for a 6-DOF robot.
230
+ If the provided array length does not match the robot's DOF, the array will be adjusted: if it is longer, extra values will be truncated;
231
+ if it is shorter, missing values will be filled with zeros.
232
+ AddVirtualControllerMotionGroupRequest:
233
+ title: AddVirtualControllerMotionGroupRequest
234
+ description: |
235
+ Request body wrapper for `addVirtualControllerMotionGroup`.
236
+ Allow either referencing a predefined motion group model or
237
+ uploading a JSON configuration that the backend converts into a
238
+ motion group description.
239
+ oneOf:
240
+ - $ref: '#/components/schemas/MotionGroupFromType'
241
+ - $ref: '#/components/schemas/MotionGroupFromJson'
242
+ VirtualController:
243
+ title: VirtualController
244
+ description: |
245
+ The configuration of a virtual robot controller has to contain the manufacturer string,
246
+ an optional joint position string array, and either a preset `type` **or** the complete JSON configuration.
247
+ type: object
248
+ required:
249
+ - kind
250
+ - manufacturer
251
+ properties:
252
+ kind:
253
+ type: string
254
+ enum:
255
+ - VirtualController
256
+ x-go-type-skip-optional-pointer: true
257
+ x-is-discriminator: true
258
+ manufacturer:
259
+ $ref: '#/components/schemas/Manufacturer'
260
+ type:
261
+ type: string
262
+ description: |
263
+ Preset type of the virtual robot controller.
264
+ See [getRobotConfigurations](#/operations/getRobotConfigurations) for supported types.
265
+ json:
266
+ type: string
267
+ description: |
268
+ Complete JSON configuration of the virtual robot controller.
269
+ Can be obtained from the physical controller's configuration via [getVirtualControllerConfiguration](#/operations/getVirtualControllerConfiguration).
270
+ If provided, the `type` field should not be used.
271
+ initial_joint_position:
272
+ type: string
273
+ description: |
274
+ Initial joint position of the first motion group from the virtual robot controller.
275
+ Provides the joint position as a JSON array of float values in radians. The array length
276
+ must match the robot's degrees of freedom, e.g., `"[0, 0, 0, 0, 0, 0]"` for a 6-DOF robot.
277
+ If the provided array length does not match the robot's DOF, the array will be adjusted: if it is longer, extra values will be truncated;
278
+ if it is shorter, missing values will be filled with zeros.
279
+ motion_groups:
280
+ type: array
281
+ maxItems: 10
282
+ description: |
283
+ Adds a motion group configuration for the virtual robot controller.
284
+
285
+ > **NOTE**
286
+ >
287
+ > Set only one of the two options, **motion_group_model**, or **json_data**
288
+
289
+ - **motion_group_model**: Identifies a single motion group. See [getMotionGroupModels](#/operations/getMotionGroupModels) for supported types
290
+ - **json_data**: JSON configuration of the virtual robot controller, can be obtained from the physical controller's configuration
291
+ via [getVirtualControllerConfiguration](#/operations/getVirtualControllerConfiguration)
292
+ - **extracted_motion_group_id**: Motion group identifier to extract from the provided JSON configuration, required when using json_data
293
+ - **motion_group**: Unique identifier for the motion group
294
+ - **initial_joint_position**: Specifies the initial joint position for the added motion group
295
+ items:
296
+ $ref: '#/components/schemas/AddVirtualControllerMotionGroupRequest'
297
+ YaskawaController:
298
+ title: YaskawaController
299
+ description: The configuration of a physical Yaskawa robot controller has to contain IP address of the controller.
300
+ type: object
301
+ required:
302
+ - kind
303
+ - controller_ip
304
+ properties:
305
+ kind:
306
+ type: string
307
+ enum:
308
+ - YaskawaController
309
+ x-go-type-skip-optional-pointer: true
310
+ x-is-discriminator: true
311
+ controller_ip:
312
+ type: string
313
+ RobotController:
314
+ type: object
315
+ description: The configuration of a physical or virtual robot controller.
316
+ required:
317
+ - name
318
+ - configuration
319
+ properties:
320
+ name:
321
+ description: |
322
+ Unique name of controller within the cell.
323
+ It must be a valid k8s label name as defined by [RFC 1035](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#rfc-1035-label-names).
324
+ type: string
325
+ pattern: ^[a-z][a-z0-9-]{0,61}[a-z0-9]$
326
+ configuration:
327
+ oneOf:
328
+ - $ref: '#/components/schemas/AbbController'
329
+ - $ref: '#/components/schemas/FanucController'
330
+ - $ref: '#/components/schemas/KukaController'
331
+ - $ref: '#/components/schemas/UniversalrobotsController'
332
+ - $ref: '#/components/schemas/VirtualController'
333
+ - $ref: '#/components/schemas/YaskawaController'
334
+ discriminator: kind
335
+ x-go-type-name: ControllerConfig
336
+ ImageCredentials:
337
+ type: object
338
+ description: |
339
+ User provided credentials for creating a secret to pull an image from a registry.
340
+ required:
341
+ - registry
342
+ - user
343
+ - password
344
+ properties:
345
+ registry:
346
+ type: string
347
+ user:
348
+ type: string
349
+ password:
350
+ type: string
351
+ ContainerImage:
352
+ type: object
353
+ description: |
354
+ A user provided, custom container image and the required credentials to pull it from a registry.
355
+ required:
356
+ - image
357
+ properties:
358
+ image:
359
+ description: The location of a container image in the form of `<registry>/<image>:<tag>`.
360
+ type: string
361
+ minLength: 1
362
+ credentials:
363
+ $ref: '#/components/schemas/ImageCredentials'
364
+ secrets:
365
+ type: array
366
+ description: Known secrets for authentication with the container registry.
367
+ items:
368
+ type: object
369
+ required:
370
+ - name
371
+ properties:
372
+ name:
373
+ type: string
374
+ ContainerEnvironment:
375
+ type: array
376
+ description: |
377
+ A list of environment variables with name and their value.
378
+ These can be used to configure the containerized application, and turn features on or off.
379
+ items:
380
+ type: object
381
+ required:
382
+ - name
383
+ - value
384
+ properties:
385
+ name:
386
+ type: string
387
+ value:
388
+ type: string
389
+ Capacity:
390
+ type: string
391
+ description: The amount of requested storage capacity.
392
+ pattern: ^[0-9]+(\\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|B)?$
393
+ example: 100Mi
394
+ ContainerStorage:
395
+ type: object
396
+ description: |
397
+ The path and capacity of a volume that retains data across application restarts.
398
+ The maximal requestable capacity is 300Mi.
399
+ If you need more capacity consider using [storeObject](#/operations/storeObject).
400
+ required:
401
+ - mount_path
402
+ - capacity
403
+ properties:
404
+ mount_path:
405
+ type: string
406
+ format: path
407
+ example: /data
408
+ capacity:
409
+ $ref: '#/components/schemas/Capacity'
410
+ description: |
411
+ The amount of local storage available for the application.
412
+
413
+ **NOTE:** The capacity can NEVER be reduced!
414
+ ContainerResources:
415
+ type: object
416
+ description: Additional resources that the application requires.
417
+ properties:
418
+ intel_gpu:
419
+ type: integer
420
+ description: Number of GPUs the application requires.
421
+ minimum: 0
422
+ maximum: 1
423
+ memory_limit:
424
+ type: string
425
+ description: The maximum memory allocated to this application.
426
+ example: 1000Mi
427
+ App:
428
+ type: object
429
+ description: |
430
+ An App is defined by a webserver, packed inside a container, serving a web-application.
431
+ required:
432
+ - name
433
+ - app_icon
434
+ - container_image
435
+ properties:
436
+ name:
437
+ description: |
438
+ The name of the provided application.
439
+ The name must be unique within the cell and is used as an identifier for addressing the application in all API calls
440
+ , e.g., when updating the application.
441
+
442
+ It also defines where the application is reachable (/$cell/$name).
443
+
444
+ It must be a valid k8s label name as defined by [RFC 1035](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#rfc-1035-label-names).
445
+ type: string
446
+ pattern: ^[a-z][a-z0-9-]{0,61}[a-z0-9]$
447
+ minLength: 1
448
+ app_icon:
449
+ description: The path of the icon for the App (/$cell/$name/$app_icon).
450
+ type: string
451
+ minLength: 1
452
+ container_image:
453
+ $ref: '#/components/schemas/ContainerImage'
454
+ port:
455
+ description: The port the containerized webserver is listening on.
456
+ type: integer
457
+ default: 8080
458
+ environment:
459
+ $ref: '#/components/schemas/ContainerEnvironment'
460
+ storage:
461
+ $ref: '#/components/schemas/ContainerStorage'
462
+ resources:
463
+ $ref: '#/components/schemas/ContainerResources'
464
+ health_path:
465
+ description: |
466
+ Defines the URL path suffix used to check the application's health status. The complete health check URL
467
+ is constructed as `/$cell/$name/$health_path`. When the application is working as expected,
468
+ the endpoint returns an HTTP 200 status code.
469
+
470
+ If not specified, the system will default to using the application icon path suffix
471
+ (the value of `app_icon`) as the health check endpoint, resulting in `/$cell/$name/$app_icon`.
472
+
473
+ If the health check fails (no response or non-200 status code), the system will
474
+ automatically restart the application container to restore service.
475
+ type: string
476
+ diagnosis_path:
477
+ description: |
478
+ Defines the URL path suffix used to provide an endpoint for diagnosis data collection.
479
+ The complete diagnosis check URL is constructed as `/$cell/$name/$diagnosis_path`.
480
+
481
+ The endpoint is called when a diagnosis package is requested via the diagnosis API.
482
+ The endpoint needs to return the data within a zip file `application/zip` response.
483
+ type: string
484
+ Cell:
485
+ type: object
486
+ description: |
487
+ To create a robot cell, only a valid name is required.
488
+ Once created, a robot cell provides access to the Wandelbots NOVA foundation services.
489
+ The configuration can be customized, e.g., robot controllers, also within apps.
490
+ required:
491
+ - name
492
+ additionalProperties: {}
493
+ properties:
494
+ name:
495
+ $ref: '#/components/schemas/CellName'
496
+ default: cell
497
+ version:
498
+ description: |
499
+ Wandelbots NOVA version of the cell.
500
+ This version must not exceed the current system version.
501
+ type: string
502
+ description:
503
+ $ref: '#/components/schemas/CellDescription'
504
+ controllers:
505
+ type: array
506
+ items:
507
+ $ref: '#/components/schemas/RobotController'
508
+ apps:
509
+ type: array
510
+ items:
511
+ $ref: '#/components/schemas/App'
512
+ ProgramRunState:
513
+ title: ProgramRunState
514
+ description: The state of a program run.
515
+ type: string
516
+ format: enum
517
+ enum:
518
+ - PREPARING
519
+ - RUNNING
520
+ - COMPLETED
521
+ - FAILED
522
+ - STOPPED
523
+ ProgramStatus:
524
+ title: ProgramStatus
525
+ type: object
526
+ required:
527
+ - app
528
+ - program
529
+ - run
530
+ - state
531
+ - timestamp
532
+ properties:
533
+ app:
534
+ type: string
535
+ description: The app name where the program is hosted.
536
+ program:
537
+ type: string
538
+ description: Unique identifier of the program.
539
+ run:
540
+ type: string
541
+ description: Unique identifier of the program run.
542
+ state:
543
+ $ref: '#/components/schemas/ProgramRunState'
544
+ description: State of the program run.
545
+ error:
546
+ type: string
547
+ description: Error message if the program run failed.
548
+ start_time:
549
+ type: string
550
+ format: date-time
551
+ description: RFC3339 timestamp when the program run started.
552
+ end_time:
553
+ type: string
554
+ format: date-time
555
+ description: RFC3339 timestamp when the program run ended.
556
+ timestamp:
557
+ type: string
558
+ format: date-time
559
+ description: RFC3339 timestamp when the program run ended.
560
+ ServiceGroup:
561
+ type: string
562
+ enum:
563
+ - SystemService
564
+ - CellService
565
+ - RobotController
566
+ - App
567
+ ServiceStatusSeverity:
568
+ type: string
569
+ enum:
570
+ - INFO
571
+ - WARNING
572
+ - ERROR
573
+ ServiceStatusPhase:
574
+ type: string
575
+ enum:
576
+ - Terminating
577
+ - Initialized
578
+ - Running
579
+ - NoReady
580
+ - Completed
581
+ - ContainerCreating
582
+ - PodInitializing
583
+ - Unknown
584
+ - CrashLoopBackOff
585
+ - Error
586
+ - ImagePullBackOff
587
+ - OOMKilled
588
+ - Pending
589
+ - Evicted
590
+ ServiceStatus:
591
+ type: object
592
+ required:
593
+ - service
594
+ - group
595
+ - status
596
+ properties:
597
+ service:
598
+ type: string
599
+ group:
600
+ $ref: '#/components/schemas/ServiceGroup'
601
+ status:
602
+ type: object
603
+ required:
604
+ - severity
605
+ - code
606
+ properties:
607
+ severity:
608
+ $ref: '#/components/schemas/ServiceStatusSeverity'
609
+ code:
610
+ $ref: '#/components/schemas/ServiceStatusPhase'
611
+ reason:
612
+ type: string
613
+ ServiceStatusList:
614
+ type: array
615
+ items:
616
+ $ref: '#/components/schemas/ServiceStatus'
617
+ CellCycleEvent:
618
+ title: CellCycleEvent
619
+ description: |
620
+ Lifecycle event for a cell cycle.
621
+ type: object
622
+ required:
623
+ - event_type
624
+ - id
625
+ - cycle_id
626
+ - timestamp
627
+ - cell
628
+ properties:
629
+ event_type:
630
+ type: string
631
+ description: Type of the cycle event.
632
+ enum:
633
+ - cycle_started
634
+ - cycle_finished
635
+ - cycle_failed
636
+ id:
637
+ type: string
638
+ description: Unique identifier of this cycle event.
639
+ cycle_id:
640
+ type: string
641
+ description: Unique identifier of the cycle this event belongs to.
642
+ timestamp:
643
+ type: string
644
+ description: Timestamp when the cycle event occurred, in ISO 8601 format.
645
+ cell:
646
+ type: string
647
+ description: Unique identifier of the cell the event belongs to.
648
+ extra:
649
+ type: object
650
+ description: Additional event-specific data. May be empty.
651
+ additionalProperties: true
652
+ duration_ms:
653
+ type: integer
654
+ description: Duration of the cycle in milliseconds.
655
+ reason:
656
+ type: string
657
+ description: Reason for cycle failure.
658
+ Sphere:
659
+ title: Sphere
660
+ type: object
661
+ properties:
662
+ shape_type:
663
+ type: string
664
+ enum:
665
+ - sphere
666
+ radius:
667
+ type: number
668
+ format: double
669
+ description: The radius of the sphere in [mm].
670
+ required:
671
+ - shape_type
672
+ - radius
673
+ description: Defines a spherical shape centred around the origin.
674
+ Box:
675
+ title: Box
676
+ type: object
677
+ properties:
678
+ shape_type:
679
+ type: string
680
+ enum:
681
+ - box
682
+ size_x:
683
+ type: number
684
+ format: double
685
+ description: The dimension in x-direction in [mm].
686
+ size_y:
687
+ type: number
688
+ format: double
689
+ description: The dimension in y-direction in [mm].
690
+ size_z:
691
+ type: number
692
+ format: double
693
+ description: The dimension in z-direction in [mm].
694
+ box_type:
695
+ type: string
696
+ enum:
697
+ - HOLLOW
698
+ - FULL
699
+ default: FULL
700
+ description: The box type defines if the box is hollow or full.
701
+ required:
702
+ - shape_type
703
+ - size_x
704
+ - size_y
705
+ - size_z
706
+ - box_type
707
+ description: |
708
+ Defines a cuboid shape centred around an origin.
709
+
710
+ If a margin is applied to the box type full, it is added to all size values. The shape will keep its edges.
711
+ The hollow box type consists of thin boxes that make up its walls.
712
+ If a margin is applied to the box type hollow, its size values are reduced by the margin.
713
+ Rectangle:
714
+ title: Rectangle
715
+ type: object
716
+ properties:
717
+ shape_type:
718
+ type: string
719
+ enum:
720
+ - rectangle
721
+ size_x:
722
+ type: number
723
+ format: double
724
+ description: The dimension in x-direction in [mm].
725
+ size_y:
726
+ type: number
727
+ format: double
728
+ description: The dimension in y-direction in [mm].
729
+ required:
730
+ - shape_type
731
+ - size_x
732
+ - size_y
733
+ description: Defines an x/y-plane with finite size. Centred around the z-axis.
734
+ Plane:
735
+ title: Plane
736
+ type: object
737
+ properties:
738
+ shape_type:
739
+ type: string
740
+ enum:
741
+ - plane
742
+ required:
743
+ - shape_type
744
+ description: Defines an x/y-plane with infinite size.
745
+ Cylinder:
746
+ title: Cylinder
747
+ type: object
748
+ properties:
749
+ shape_type:
750
+ type: string
751
+ enum:
752
+ - cylinder
753
+ radius:
754
+ type: number
755
+ format: double
756
+ description: The radius of the cylinder in [mm].
757
+ height:
758
+ type: number
759
+ format: double
760
+ description: The height of the cylinder in [mm].
761
+ required:
762
+ - shape_type
763
+ - radius
764
+ - height
765
+ description: |
766
+ Defines a cylindrical shape.
767
+ Centred around origin, symmetric around z-axis.
768
+
769
+ If a margin is applied, it is added to radius and height. The shape will keep its edges.
770
+ Capsule:
771
+ title: Capsule
772
+ type: object
773
+ properties:
774
+ shape_type:
775
+ type: string
776
+ enum:
777
+ - capsule
778
+ radius:
779
+ type: number
780
+ format: double
781
+ description: The radius of the cylinder and semi-spheres in [mm].
782
+ cylinder_height:
783
+ type: number
784
+ format: double
785
+ description: The height of the inner cylinder in [mm].
786
+ required:
787
+ - shape_type
788
+ - radius
789
+ - cylinder_height
790
+ description: |
791
+ Defines a cylindrical shape with 2 semi-spheres on the top and bottom.
792
+ Centred around origin, symmetric around z-axis.
793
+ RectangularCapsule:
794
+ title: RectangularCapsule
795
+ type: object
796
+ properties:
797
+ shape_type:
798
+ type: string
799
+ enum:
800
+ - rectangular_capsule
801
+ radius:
802
+ type: number
803
+ format: double
804
+ description: The radius of the inner spheres in [mm].
805
+ sphere_center_distance_x:
806
+ type: number
807
+ format: double
808
+ description: The distance of the sphere center in x-direction in [mm].
809
+ sphere_center_distance_y:
810
+ type: number
811
+ format: double
812
+ description: The distance of the sphere center in y-direction in [mm].
813
+ required:
814
+ - shape_type
815
+ - radius
816
+ - sphere_center_distance_x
817
+ - sphere_center_distance_y
818
+ description: |
819
+ Convex hull around four spheres. Sphere center points in x/y-plane, offset by either combination "+/- sizeX" or "+/- sizeY".
820
+
821
+ Alternative description: Rectangle in x/y-plane with a 3D padding.
822
+ Vector3d:
823
+ title: Vector3d
824
+ type: array
825
+ maxItems: 3
826
+ minItems: 3
827
+ items:
828
+ type: number
829
+ format: double
830
+ description: |
831
+ A three-dimensional vector [x, y, z] with double precision.
832
+ ConvexHull:
833
+ title: ConvexHull
834
+ type: object
835
+ properties:
836
+ shape_type:
837
+ type: string
838
+ enum:
839
+ - convex_hull
840
+ vertices:
841
+ type: array
842
+ items:
843
+ $ref: '#/components/schemas/Vector3d'
844
+ description: The list of encapsulated points.
845
+ required:
846
+ - shape_type
847
+ - vertices
848
+ description: Defines a convex hull encapsulating a set of vertices.
849
+ RotationVector:
850
+ title: RotationVector
851
+ type: array
852
+ maxItems: 3
853
+ minItems: 3
854
+ items:
855
+ type: number
856
+ format: double
857
+ description: |
858
+ Defines a rotation in 3D space.
859
+ A three-dimensional Vector [rx, ry, rz] with double precision.
860
+ Rotation is applied around the vector.
861
+ The angle of rotation equals the length of the vector.
862
+ Pose:
863
+ title: Pose
864
+ type: object
865
+ properties:
866
+ position:
867
+ $ref: '#/components/schemas/Vector3d'
868
+ orientation:
869
+ $ref: '#/components/schemas/RotationVector'
870
+ default:
871
+ position:
872
+ - 0
873
+ - 0
874
+ - 0
875
+ orientation:
876
+ - 0
877
+ - 0
878
+ - 0
879
+ description: |
880
+ Defines a pose in 3D space.
881
+ A pose is a combination of a position and an orientation.
882
+ The position is applied before the orientation.
883
+ Collider:
884
+ title: Collider
885
+ type: object
886
+ description: |
887
+ Defines a collider with a single shape.
888
+
889
+ A collider is an object that is used for collision detection.
890
+ It defines the `shape` that is attached with the offset of `pose` to a reference frame.
891
+
892
+ Use colliders to:
893
+ - Define the shape of a workpiece. The reference frame is the scene origin.
894
+ - Define the shape of a link in a motion group. The reference frame is the link coordinate system.
895
+ - Define the shape of a tool. The reference frame is the flange coordinate system.
896
+ properties:
897
+ shape:
898
+ oneOf:
899
+ - $ref: '#/components/schemas/Sphere'
900
+ - $ref: '#/components/schemas/Box'
901
+ - $ref: '#/components/schemas/Rectangle'
902
+ - $ref: '#/components/schemas/Plane'
903
+ - $ref: '#/components/schemas/Cylinder'
904
+ - $ref: '#/components/schemas/Capsule'
905
+ - $ref: '#/components/schemas/RectangularCapsule'
906
+ - $ref: '#/components/schemas/ConvexHull'
907
+ discriminator: shape_type
908
+ pose:
909
+ $ref: '#/components/schemas/Pose'
910
+ margin:
911
+ type: number
912
+ description: Increases the shape's size in all dimensions. Applied in [mm]. Can be used to keep a safe distance to the shape.
913
+ format: float
914
+ default: 0
915
+ required:
916
+ - shape
917
+ ColliderDictionary:
918
+ type: object
919
+ title: ColliderDictionary
920
+ description: A collection of identifiable colliders.
921
+ additionalProperties:
922
+ $ref: '#/components/schemas/Collider'
923
+ Link:
924
+ type: object
925
+ title: Collision Motion Group Link
926
+ additionalProperties:
927
+ $ref: '#/components/schemas/Collider'
928
+ LinkChain:
929
+ title: Link Chain
930
+ type: array
931
+ description: |
932
+ A link chain is a kinematic chain of links that is connected via joints.
933
+ A motion group can be used to control the motion of the joints in a link chain.
934
+
935
+ A link is a group of colliders that is attached to the link reference frame.
936
+
937
+ The reference frame of a link is obtained after applying all sets of Denavit-Hartenberg-parameters from base to (including) the link index.
938
+
939
+ This means that the reference frame of the link is on the rotation axis of the next joint in the kinematic chain.
940
+ Example: For a motion group with 2 joints, the collider reference frame (CRF) for link 1 is on the rotation axis of joint 2. The chain looks like:
941
+ - Origin >> Mounting >> Base >> (CRF Base) Joint 0 >> Link 0 >> (CRF Link 0) Joint 1 >> Link 1 >> (CRF Link 1) Flange (CRF Tool) >> TCP
942
+
943
+ Adjacent links in the kinematic chain of the motion group are not checked for mutual collision.
944
+ items:
945
+ $ref: '#/components/schemas/Link'
946
+ Tool:
947
+ type: object
948
+ title: Collision Motion Group Tool
949
+ description: |
950
+ Defines the shape of a tool.
951
+
952
+ A tool is a dictionary of colliders.
953
+
954
+ All colliders that make up a tool are attached to the flange frame of the motion group.
955
+ additionalProperties:
956
+ $ref: '#/components/schemas/Collider'
957
+ CollisionSetup:
958
+ title: CollisionSetup
959
+ type: object
960
+ properties:
961
+ colliders:
962
+ $ref: '#/components/schemas/ColliderDictionary'
963
+ description: |
964
+ Colliders are checked against links and tool.
965
+ link_chain:
966
+ $ref: '#/components/schemas/LinkChain'
967
+ description: |
968
+ The shape of the motion groups links to validate against colliders.
969
+ Indexed along the kinematic chain, starting with a static base shape before first joint.
970
+ The base of the motion group is not checked for collision against the environment.
971
+ tool:
972
+ $ref: '#/components/schemas/Tool'
973
+ description: |
974
+ Shape of the tool to validate against colliders.
975
+ self_collision_detection:
976
+ type: boolean
977
+ description: |
978
+ If true, self-collision detection is enabled for the motion group.
979
+
980
+ Self-collision detection checks if links in the kinematic chain of the motion group collide with each other.
981
+ Adjacent links in the kinematic chain of the motion group are not checked for mutual collision.
982
+ The tool is treated like a link at the end of the kinematic chain. It is checked against all links except the last one.
983
+
984
+ Default is true.
985
+ default: true
986
+ BusIOsStateEnum:
987
+ enum:
988
+ - BUS_IOS_STATE_UNKNOWN
989
+ - BUS_IOS_STATE_INITIALIZING
990
+ - BUS_IOS_STATE_CONNECTED
991
+ - BUS_IOS_STATE_DISCONNECTED
992
+ type: string
993
+ format: enum
994
+ description: |
995
+ Current state of the BUS input/output service.
996
+ BusIOsState:
997
+ type: object
998
+ required:
999
+ - state
1000
+ properties:
1001
+ state:
1002
+ $ref: '#/components/schemas/BusIOsStateEnum'
1003
+ message:
1004
+ type: string
1005
+ description: |
1006
+ A message providing additional information on the input/output service, e.g., BUS service status, encountered errors.
1007
+ May be empty if no additional information is available.
1008
+ IOBooleanValue:
1009
+ title: IOBooleanValue
1010
+ required:
1011
+ - io
1012
+ - value
1013
+ - value_type
1014
+ type: object
1015
+ properties:
1016
+ io:
1017
+ type: string
1018
+ description: Unique identifier of the input/output.
1019
+ value:
1020
+ type: boolean
1021
+ description: |
1022
+ Value of a digital input/output.
1023
+ value_type:
1024
+ type: string
1025
+ enum:
1026
+ - boolean
1027
+ x-go-type-skip-optional-pointer: true
1028
+ x-is-discriminator: true
1029
+ description: Input/Output boolean value representation.
1030
+ IOIntegerValue:
1031
+ required:
1032
+ - value_type
1033
+ - io
1034
+ - value
1035
+ type: object
1036
+ properties:
1037
+ io:
1038
+ type: string
1039
+ description: Unique identifier of the input/output.
1040
+ value:
1041
+ type: string
1042
+ description: |
1043
+ Value of an input/output with integer representation.
1044
+
1045
+ > The integral value is transmitted as a string to avoid precision loss during conversion to JSON.
1046
+ > Recommended: Use int64 in your implementation. If you want to interact with int64 in numbers,
1047
+ > JS bigint libraries can help you to parse the string into an integral value.
1048
+ value_type:
1049
+ type: string
1050
+ enum:
1051
+ - integer
1052
+ x-go-type-skip-optional-pointer: true
1053
+ x-is-discriminator: true
1054
+ title: IOIntegerValue
1055
+ IOFloatValue:
1056
+ required:
1057
+ - value_type
1058
+ - io
1059
+ - value
1060
+ type: object
1061
+ properties:
1062
+ io:
1063
+ type: string
1064
+ description: Unique identifier of the input/output.
1065
+ value:
1066
+ type: number
1067
+ description: |
1068
+ Value of an analog input/output in floating number representation.
1069
+ format: double
1070
+ value_type:
1071
+ type: string
1072
+ enum:
1073
+ - float
1074
+ x-go-type-skip-optional-pointer: true
1075
+ x-is-discriminator: true
1076
+ title: IOFloatValue
1077
+ IOValue:
1078
+ oneOf:
1079
+ - $ref: '#/components/schemas/IOBooleanValue'
1080
+ - $ref: '#/components/schemas/IOIntegerValue'
1081
+ - $ref: '#/components/schemas/IOFloatValue'
1082
+ discriminator: value_type
1083
+ ListIOValuesResponse:
1084
+ type: array
1085
+ items:
1086
+ $ref: '#/components/schemas/IOValue'
1087
+ description: Array of input/output values.
1088
+ example:
1089
+ - io: io1
1090
+ value: true
1091
+ value_type: boolean
1092
+ - io: io2
1093
+ value: '42'
1094
+ value_type: integer
1095
+ - io: io3
1096
+ value: 3.14
1097
+ value_type: float
1098
+ Error:
1099
+ type: object
1100
+ required:
1101
+ - message
1102
+ properties:
1103
+ code:
1104
+ type: string
1105
+ message:
1106
+ type: string
1107
+ SelectIOs:
1108
+ type: object
1109
+ required:
1110
+ - ios
1111
+ properties:
1112
+ ios:
1113
+ type: array
1114
+ description: Array of input/output identifiers to retrieve the values for.
1115
+ items:
1116
+ type: string
1117
+ update_type:
1118
+ type: string
1119
+ description: |
1120
+ Type of update.
1121
+ - changes: Only send updates when the value changes.
1122
+ - full: Send the full list of values at the update rate.
1123
+ default: full
1124
+ enum:
1125
+ - changes
1126
+ - full
1127
+ StreamIOValuesResponse:
1128
+ required:
1129
+ - io_values
1130
+ - timestamp
1131
+ - sequence_number
1132
+ type: object
1133
+ properties:
1134
+ io_values:
1135
+ type: array
1136
+ items:
1137
+ $ref: '#/components/schemas/IOValue'
1138
+ timestamp:
1139
+ type: string
1140
+ format: date-time
1141
+ description: Timestamp indicating when the represented information was received from the robot controller.
1142
+ sequence_number:
1143
+ type: integer
1144
+ format: int64
1145
+ minimum: 0
1146
+ maximum: 4294967295
1147
+ description: |
1148
+ Sequence number of the controller state. It starts with 0 upon establishing the connection with a physical controller.
1149
+ The sequence number is reset when the connection to the physical controller is closed and re-established.
1150
+ description: Array of input/output values.
1151
+ example:
1152
+ io_values:
1153
+ - io: io1
1154
+ value: true
1155
+ value_type: boolean
1156
+ - io: io2
1157
+ value: '42'
1158
+ value_type: integer
1159
+ - io: io3
1160
+ value: 3.14
1161
+ value_type: float
1162
+ RobotSystemMode:
1163
+ enum:
1164
+ - MODE_CONTROLLER_NOT_CONFIGURED
1165
+ - MODE_INITIALIZING
1166
+ - MODE_MONITOR
1167
+ - MODE_CONTROL
1168
+ - MODE_FREE_DRIVE
1169
+ type: string
1170
+ description: |
1171
+ Defines the current system mode of the robot system, including NOVA communicating with the robot controller.
1172
+
1173
+ ### MODE_CONTROLLER_NOT_CONFIGURED
1174
+
1175
+ No controller with the specified identifier is configured. Call [addRobotController](#/operations/addRobotController) to register a controller.
1176
+
1177
+ ### MODE_INITIALIZING
1178
+
1179
+ Indicates that a connection to the robot controller is established or reestablished in case of a disconnect.
1180
+ On success, the controller is set to MODE_MONITOR.
1181
+ On failure, the initialization process is retried until successful or cancelled by the user.
1182
+
1183
+ ### MODE_MONITOR
1184
+
1185
+ Read-only mode with an active controller connection.
1186
+ - Receives robot state and I/O signals
1187
+ - Move requests are rejected
1188
+ - No commands are sent to the controller
1189
+
1190
+ ### MODE_CONTROL
1191
+
1192
+ Active control mode.
1193
+
1194
+ **Movement is possible in this mode**
1195
+
1196
+ The robot is cyclically commanded to hold its current position.
1197
+ The robot state is received in sync with the controller cycle.
1198
+ Motion and jogging requests are accepted and executed.
1199
+ Input/Output interaction is enabled.
1200
+
1201
+ ### MODE_FREE_DRIVE
1202
+
1203
+ Read-only mode with servo motors enabled for manual movement (Free Drive).
1204
+
1205
+ Move requests are rejected.
1206
+
1207
+ Not supported by all robots: Use [getSupportedModes](#/operations/getSupportedModes) to check Free Drive availability.
1208
+ format: enum
1209
+ OperationMode:
1210
+ enum:
1211
+ - OPERATION_MODE_UNKNOWN
1212
+ - OPERATION_MODE_NO_CONTROLLER
1213
+ - OPERATION_MODE_DISCONNECTED
1214
+ - OPERATION_MODE_POWER_ON
1215
+ - OPERATION_MODE_PENDING
1216
+ - OPERATION_MODE_MANUAL
1217
+ - OPERATION_MODE_MANUAL_T1
1218
+ - OPERATION_MODE_MANUAL_T2
1219
+ - OPERATION_MODE_AUTO
1220
+ - OPERATION_MODE_RECOVERY
1221
+ type: string
1222
+ format: enum
1223
+ description: |
1224
+ Current operation mode of the configured robot controller.
1225
+ Operation modes in which the attached motion groups can be moved are:
1226
+ - OPERATION_MODE_MANUAL (if enabling switch is pressed)
1227
+ - OPERATION_MODE_MANUAL_T1 (if enabling switch is pressed)
1228
+ - OPERATION_MODE_MANUAL_T2 (if enabling switch is pressed)
1229
+ - OPERATION_MODE_AUTO (without needing to press enabling switch)
1230
+ All other modes are considered as non-operational.
1231
+ SafetyStateType:
1232
+ enum:
1233
+ - SAFETY_STATE_UNKNOWN
1234
+ - SAFETY_STATE_FAULT
1235
+ - SAFETY_STATE_NORMAL
1236
+ - SAFETY_STATE_MASTERING
1237
+ - SAFETY_STATE_CONFIRM_SAFETY
1238
+ - SAFETY_STATE_OPERATOR_SAFETY
1239
+ - SAFETY_STATE_PROTECTIVE_STOP
1240
+ - SAFETY_STATE_REDUCED
1241
+ - SAFETY_STATE_STOP
1242
+ - SAFETY_STATE_STOP_0
1243
+ - SAFETY_STATE_STOP_1
1244
+ - SAFETY_STATE_STOP_2
1245
+ - SAFETY_STATE_RECOVERY
1246
+ - SAFETY_STATE_DEVICE_EMERGENCY_STOP
1247
+ - SAFETY_STATE_ROBOT_EMERGENCY_STOP
1248
+ - SAFETY_STATE_VIOLATION
1249
+ type: string
1250
+ format: enum
1251
+ description: |
1252
+ Current safety state of the configured robot controller.
1253
+ Operation modes in which the attached motion groups can be moved are:
1254
+ - SAFETY_STATE_NORMAL
1255
+ - SAFETY_STATE_REDUCED
1256
+ All other modes are considered as non-operational.
1257
+ Joints:
1258
+ type: array
1259
+ items:
1260
+ type: number
1261
+ format: double
1262
+ description: |
1263
+ This structure describes a set of joint values, e.g., positions, currents, torques, of a motion group.
1264
+
1265
+ Float precision is the default.
1266
+ MotionGroupState_JointLimitReached:
1267
+ type: object
1268
+ required:
1269
+ - limit_reached
1270
+ properties:
1271
+ limit_reached:
1272
+ type: array
1273
+ items:
1274
+ type: boolean
1275
+ description: If true, operational (soft) jointLimit is reached for specific joint.
1276
+ description: |
1277
+ Indicates which joint of the motion group is in a limit.
1278
+ If a joint is in its limit, only this joint can be moved. Movements that affect any other joints are not executed.
1279
+ JoggingRunning:
1280
+ title: JoggingRunning
1281
+ type: object
1282
+ required:
1283
+ - kind
1284
+ properties:
1285
+ kind:
1286
+ type: string
1287
+ enum:
1288
+ - RUNNING
1289
+ description: |
1290
+ Jogging is active.
1291
+ JoggingPausedByUser:
1292
+ title: JoggingPausedByUser
1293
+ type: object
1294
+ required:
1295
+ - kind
1296
+ properties:
1297
+ kind:
1298
+ type: string
1299
+ enum:
1300
+ - PAUSED_BY_USER
1301
+ description: |
1302
+ User has paused jogging.
1303
+ JoggingPausedOnIO:
1304
+ title: JoggingPausedOnIO
1305
+ type: object
1306
+ required:
1307
+ - kind
1308
+ properties:
1309
+ kind:
1310
+ type: string
1311
+ enum:
1312
+ - PAUSED_ON_IO
1313
+ description: |
1314
+ Jogging was paused because of an I/O event.
1315
+ JoggingPausedNearJointLimit:
1316
+ title: JoggingPausedNearJointLimit
1317
+ type: object
1318
+ required:
1319
+ - kind
1320
+ - joint_indices
1321
+ properties:
1322
+ kind:
1323
+ type: string
1324
+ enum:
1325
+ - PAUSED_NEAR_JOINT_LIMIT
1326
+ joint_indices:
1327
+ type: array
1328
+ items:
1329
+ type: integer
1330
+ format: int32
1331
+ minimum: 0
1332
+ maximum: 2147483647
1333
+ description: |
1334
+ Jogging was paused because a joint is near its limit.
1335
+ JoggingPausedNearCollision:
1336
+ title: JoggingPausedNearCollision
1337
+ type: object
1338
+ required:
1339
+ - kind
1340
+ - description
1341
+ properties:
1342
+ kind:
1343
+ type: string
1344
+ enum:
1345
+ - PAUSED_NEAR_COLLISION
1346
+ description:
1347
+ type: string
1348
+ description: |
1349
+ Jogging was paused because the motion group neared a collision.
1350
+ JoggingPausedNearSingularity:
1351
+ title: JoggingPausedNearSingularity
1352
+ type: object
1353
+ required:
1354
+ - kind
1355
+ - description
1356
+ properties:
1357
+ kind:
1358
+ type: string
1359
+ enum:
1360
+ - PAUSED_NEAR_SINGULARITY
1361
+ description:
1362
+ type: string
1363
+ description: |
1364
+ Jogging was paused because the motion group neared a singularity or the workspace boundary.
1365
+ JoggingDetails:
1366
+ title: JoggingDetails
1367
+ type: object
1368
+ required:
1369
+ - state
1370
+ - kind
1371
+ properties:
1372
+ state:
1373
+ oneOf:
1374
+ - $ref: '#/components/schemas/JoggingRunning'
1375
+ - $ref: '#/components/schemas/JoggingPausedByUser'
1376
+ - $ref: '#/components/schemas/JoggingPausedOnIO'
1377
+ - $ref: '#/components/schemas/JoggingPausedNearJointLimit'
1378
+ - $ref: '#/components/schemas/JoggingPausedNearCollision'
1379
+ - $ref: '#/components/schemas/JoggingPausedNearSingularity'
1380
+ discriminator: kind
1381
+ jogger_session_timestamp_ms:
1382
+ type: integer
1383
+ format: int64
1384
+ minimum: 0
1385
+ maximum: 9223372036854776000
1386
+ description: |
1387
+ Timestamp of the current jogger session in milliseconds.
1388
+ Only waypoint sessions are supported. Other sessions return 0.
1389
+
1390
+ > **NOTE**
1391
+ >
1392
+ > This field is experimental and its behavior may change in future releases.
1393
+ kind:
1394
+ type: string
1395
+ enum:
1396
+ - JOGGING
1397
+ description: |
1398
+ State of jogging execution.
1399
+ This state is sent during jogging movement, response-rate closest to the nearest multiple of controller step-rate but not exceeding the configured rate.
1400
+ The jogging state can be one of the following:
1401
+ - RUNNING: Jogging is active.
1402
+ - PAUSED_BY_USER: User has paused jogging.
1403
+ - PAUSED_NEAR_JOINT_LIMIT: Jogging was paused because a joint is near its limit.
1404
+ - PAUSED_NEAR_COLLISION: Jogging was paused because the motion group neared a collision.
1405
+ - PAUSED_NEAR_SINGULARITY: Jogging was paused because the motion group neared a singularity or the workspace boundary.
1406
+ - PAUSED_ON_IO: Jogging was paused because of an I/O event.
1407
+ Location:
1408
+ type: number
1409
+ format: double
1410
+ description: |
1411
+ - The location is a scalar value that defines a position along a path, typically ranging from 0 to `n`,
1412
+ where `n` denotes the number of motion commands
1413
+ - Each integer value of the location corresponds to a specific motion command,
1414
+ while non-integer values interpolate positions within the segments.
1415
+ - The location is calculated from the joint path
1416
+ TrajectoryRunning:
1417
+ title: TrajectoryRunning
1418
+ type: object
1419
+ required:
1420
+ - kind
1421
+ - time_to_end
1422
+ properties:
1423
+ kind:
1424
+ type: string
1425
+ enum:
1426
+ - RUNNING
1427
+ time_to_end:
1428
+ type: integer
1429
+ description: Remaining time in milliseconds (ms) to reach the end of the motion.
1430
+ format: int64
1431
+ minimum: 0
1432
+ maximum: 4294967295
1433
+ description: |
1434
+ Trajectory is being executed.
1435
+ TrajectoryPausedByUser:
1436
+ title: TrajectoryPausedByUser
1437
+ type: object
1438
+ required:
1439
+ - kind
1440
+ properties:
1441
+ kind:
1442
+ type: string
1443
+ enum:
1444
+ - PAUSED_BY_USER
1445
+ description: |
1446
+ User has paused execution.
1447
+ TrajectoryEnded:
1448
+ title: TrajectoryEnded
1449
+ type: object
1450
+ required:
1451
+ - kind
1452
+ properties:
1453
+ kind:
1454
+ type: string
1455
+ enum:
1456
+ - END_OF_TRAJECTORY
1457
+ description: |
1458
+ First or last sample (depending on direction) of trajectory has been sent.
1459
+ TrajectoryWaitForIO:
1460
+ title: TrajectoryWaitForIO
1461
+ type: object
1462
+ required:
1463
+ - kind
1464
+ properties:
1465
+ kind:
1466
+ type: string
1467
+ enum:
1468
+ - WAIT_FOR_IO
1469
+ description: |
1470
+ Waiting for an I/O event to start execution.
1471
+ TrajectoryPausedOnIO:
1472
+ title: TrajectoryPausedOnIO
1473
+ type: object
1474
+ required:
1475
+ - kind
1476
+ properties:
1477
+ kind:
1478
+ type: string
1479
+ enum:
1480
+ - PAUSED_ON_IO
1481
+ description: |
1482
+ Execution was paused because of an I/O event.
1483
+ TrajectoryDetails:
1484
+ title: TrajectoryDetails
1485
+ type: object
1486
+ required:
1487
+ - trajectory
1488
+ - location
1489
+ - state
1490
+ - kind
1491
+ properties:
1492
+ trajectory:
1493
+ type: string
1494
+ description: |
1495
+ Unique identifier of the trajectory being executed.
1496
+ location:
1497
+ $ref: '#/components/schemas/Location'
1498
+ description: |
1499
+ Location of current joint position commmand on the trajectory being executed.
1500
+ state:
1501
+ oneOf:
1502
+ - $ref: '#/components/schemas/TrajectoryRunning'
1503
+ - $ref: '#/components/schemas/TrajectoryPausedByUser'
1504
+ - $ref: '#/components/schemas/TrajectoryEnded'
1505
+ - $ref: '#/components/schemas/TrajectoryWaitForIO'
1506
+ - $ref: '#/components/schemas/TrajectoryPausedOnIO'
1507
+ discriminator: kind
1508
+ kind:
1509
+ type: string
1510
+ enum:
1511
+ - TRAJECTORY
1512
+ description: |
1513
+ Discriminator for OpenApi generators, which is always "TRAJECTORY" for this schema.
1514
+ description: |
1515
+ State of trajectory execution.
1516
+ This state is sent during trajectory movement, response-rate closest to the nearest multiple of controller step-rate but not exceeding the configured rate.
1517
+ The trajectory state can be one of the following:
1518
+ - RUNNING: Trajectory is being executed.
1519
+ - PAUSED_BY_USER: User has paused execution.
1520
+ - END_OF_TRAJECTORY: First or last sample (depending on direction) of trajectory has been sent.
1521
+ - WAIT_FOR_IO: Waiting for an I/O event to start execution.
1522
+ - PAUSED_ON_IO: Execution was paused because of an I/O event.
1523
+ Execute:
1524
+ title: Execute
1525
+ type: object
1526
+ required:
1527
+ - joint_position
1528
+ properties:
1529
+ joint_position:
1530
+ type: array
1531
+ items:
1532
+ type: number
1533
+ format: double
1534
+ description: |
1535
+ Commanded joint position of each joint. This command was sent in the time step the corresponding state was received.
1536
+ The unit depends on the type of joint: For revolute joints, the angle is given in [rad]; for prismatic joints, the displacement is given in [mm].
1537
+ details:
1538
+ oneOf:
1539
+ - $ref: '#/components/schemas/JoggingDetails'
1540
+ - $ref: '#/components/schemas/TrajectoryDetails'
1541
+ discriminator: kind
1542
+ description: |
1543
+ Details about the state of the motion execution.
1544
+ The details are either for a jogging or a trajectory.
1545
+ If NOVA is not controlling this motion group at the moment, this field is omitted.
1546
+ MotionGroupState:
1547
+ required:
1548
+ - timestamp
1549
+ - sequence_number
1550
+ - motion_group
1551
+ - controller
1552
+ - joint_position
1553
+ - joint_limit_reached
1554
+ - standstill
1555
+ - description_revision
1556
+ type: object
1557
+ properties:
1558
+ timestamp:
1559
+ type: string
1560
+ format: date-time
1561
+ description: Timestamp for when data was received from the robot controller.
1562
+ sequence_number:
1563
+ type: integer
1564
+ format: int64
1565
+ minimum: 0
1566
+ maximum: 4294967295
1567
+ description: |
1568
+ Sequence number of the controller state. It starts with 0 upon establishing the connection with a physical controller.
1569
+ The sequence number is reset when the connection to the physical controller is closed and re-established.
1570
+ motion_group:
1571
+ type: string
1572
+ description: Identifier of the motion group.
1573
+ controller:
1574
+ type: string
1575
+ description: 'Convenience: Identifier of the robot controller the motion group is attached to.'
1576
+ joint_position:
1577
+ $ref: '#/components/schemas/Joints'
1578
+ description: |
1579
+ Current joint position of each joint.
1580
+ The unit depends on the type of joint: For revolute joints, the angle is given in [rad]; for prismatic joints, the displacement is given in [mm].
1581
+ joint_limit_reached:
1582
+ $ref: '#/components/schemas/MotionGroupState_JointLimitReached'
1583
+ description: |
1584
+ Indicates whether the joint is in a limit for all joints of the motion group.
1585
+ joint_torque:
1586
+ $ref: '#/components/schemas/Joints'
1587
+ description: |
1588
+ Current joint torque of each joint in [Nm].
1589
+ Is only available if the robot controller supports it, e.g., available for UR controllers.
1590
+ joint_current:
1591
+ $ref: '#/components/schemas/Joints'
1592
+ description: |
1593
+ Current at TCP in [A].
1594
+ Is only available if the robot controller supports it, e.g., available for UR controllers.
1595
+ flange_pose:
1596
+ $ref: '#/components/schemas/Pose'
1597
+ description: |
1598
+ Pose of the flange.
1599
+ Positions are in [mm].
1600
+ Orientations are in [rad].
1601
+ The pose is relative to the response_coordinate_system specified in the request.
1602
+ For robot arms, a flange pose is always returned. For positioners, the flange might not be available, depending on the model.
1603
+ tcp:
1604
+ type: string
1605
+ description: |
1606
+ Unique identifier addressing the active TCP.
1607
+ Might not be returned for positioners as some do not support TCPs, depending on the model.
1608
+ tcp_pose:
1609
+ $ref: '#/components/schemas/Pose'
1610
+ description: |
1611
+ Pose of the TCP selected on the robot control panel.
1612
+ Positions are in [mm].
1613
+ Orientations are in [rad].
1614
+ The pose is relative to the response_coordinate_system specified in the request.
1615
+ Might not be returned for positioners as some do not support TCPs, depending on the model.
1616
+ coordinate_system:
1617
+ type: string
1618
+ description: |
1619
+ Unique identifier addressing the reference coordinate system of the cartesian data.
1620
+ Might not be returned for positioners as some do not support TCPs, depending on the model.
1621
+ Default: world coordinate system of corresponding controller.
1622
+ payload:
1623
+ type: string
1624
+ description: |
1625
+ Unique identifier addressing the active payload.
1626
+ Only fetchable via GET endpoint, not available in WebSocket.
1627
+ standstill:
1628
+ type: boolean
1629
+ description: |
1630
+ Indicates whether the motion group is in standstill.
1631
+ Convenience: Signals that NOVA treats measured joint velocities as 0.
1632
+ execute:
1633
+ $ref: '#/components/schemas/Execute'
1634
+ description: |
1635
+ Data that was commanded to the motion group. Includes additional data on NOVA's execution components for executing trajectories and jogging.
1636
+ This is a convenience field to indicate the last command sent to the motion group.
1637
+ It is not available in all cases, e.g., if the motion group is not moved by NOVA.
1638
+ description_revision:
1639
+ type: integer
1640
+ format: int32
1641
+ minimum: 0
1642
+ maximum: 2147483647
1643
+ description: |
1644
+ Revision number of the motion group description.
1645
+ The revision is incremented whenever the motion group description changes due to a modification of the tools or the payloads in the robot configuration.
1646
+ The robot controller is polled every 10 s during Monitoring Mode to detect those changes.
1647
+ Use to trigger fetching based on robot configuration changes.
1648
+ description: Presents the current state of the motion group.
1649
+ RobotControllerState:
1650
+ required:
1651
+ - mode
1652
+ - timestamp
1653
+ - sequence_number
1654
+ - controller
1655
+ - operation_mode
1656
+ - safety_state
1657
+ - motion_groups
1658
+ type: object
1659
+ properties:
1660
+ mode:
1661
+ $ref: '#/components/schemas/RobotSystemMode'
1662
+ description: Mode of communication and control between NOVA and the robot controller.
1663
+ last_error:
1664
+ type: array
1665
+ items:
1666
+ type: string
1667
+ description: |
1668
+ Last error stack encountered during initialization process or after a controller disconnect.
1669
+ At this stage, it's unclear whether the error is fatal.
1670
+
1671
+ Evaluate `last_error` to decide whether to remove the controller using `deleteController`.
1672
+ Examples:
1673
+ - Delete required: Host resolution fails repeatedly due to an incorrect IP.
1674
+ - Delete not required: Temporary network delay caused a disconnect; the system will auto-reconnect.
1675
+ timestamp:
1676
+ type: string
1677
+ format: date-time
1678
+ description: Timestamp indicating when the represented information was received from the robot controller.
1679
+ sequence_number:
1680
+ type: integer
1681
+ format: int64
1682
+ minimum: 0
1683
+ maximum: 4294967295
1684
+ description: |
1685
+ Sequence number of the controller state. It starts with 0 upon establishing the connection with a physical controller.
1686
+ The sequence number is reset when the connection to the physical controller is closed and re-established.
1687
+ controller:
1688
+ type: string
1689
+ default: controller
1690
+ description: Identifier of the configured robot controller.
1691
+ operation_mode:
1692
+ $ref: '#/components/schemas/OperationMode'
1693
+ safety_state:
1694
+ $ref: '#/components/schemas/SafetyStateType'
1695
+ velocity_override:
1696
+ type: integer
1697
+ description: |
1698
+ If made available by the robot controller, returns the current velocity override in
1699
+ [percentage] for movements adjusted on robot control panel.
1700
+ Valid value range: 1 - 100.
1701
+ format: int32
1702
+ minimum: 1
1703
+ maximum: 100
1704
+ motion_groups:
1705
+ title: MotionGroupState[]
1706
+ type: array
1707
+ items:
1708
+ $ref: '#/components/schemas/MotionGroupState'
1709
+ description: |
1710
+ State of indicated motion groups.
1711
+ In case of state request via controller all configured motion groups are returned.
1712
+ In case of executing a motion only the affected motion groups are returned.
1713
+ description: Returns the whole current state of robot controller.
1714
+ TcpOffset:
1715
+ title: TcpOffset
1716
+ required:
1717
+ - name
1718
+ - pose
1719
+ type: object
1720
+ properties:
1721
+ name:
1722
+ type: string
1723
+ description: A readable and changeable name for frontend visualization.
1724
+ pose:
1725
+ $ref: '#/components/schemas/Pose'
1726
+ LimitRange:
1727
+ type: object
1728
+ properties:
1729
+ lower_limit:
1730
+ type: number
1731
+ format: double
1732
+ upper_limit:
1733
+ type: number
1734
+ format: double
1735
+ description: The upper_limit must be greater then the lower_limit.
1736
+ JointLimits:
1737
+ title: JointLimits
1738
+ type: object
1739
+ properties:
1740
+ position:
1741
+ $ref: '#/components/schemas/LimitRange'
1742
+ velocity:
1743
+ type: number
1744
+ format: double
1745
+ acceleration:
1746
+ type: number
1747
+ format: double
1748
+ jerk:
1749
+ type: number
1750
+ format: double
1751
+ description: |
1752
+ > **NOTE**
1753
+ >
1754
+ > This limit type is experimental and its behavior may change in future releases.
1755
+ torque:
1756
+ type: number
1757
+ format: double
1758
+ CartesianLimits:
1759
+ title: CartesianLimits
1760
+ type: object
1761
+ properties:
1762
+ velocity:
1763
+ type: number
1764
+ format: double
1765
+ acceleration:
1766
+ type: number
1767
+ format: double
1768
+ jerk:
1769
+ type: number
1770
+ format: double
1771
+ description: |
1772
+ > **NOTE**
1773
+ >
1774
+ > This limit type is experimental and its behavior may change in future releases.
1775
+ orientation_velocity:
1776
+ type: number
1777
+ format: double
1778
+ orientation_acceleration:
1779
+ type: number
1780
+ format: double
1781
+ orientation_jerk:
1782
+ type: number
1783
+ format: double
1784
+ description: |
1785
+ > **NOTE**
1786
+ >
1787
+ > This limit type is experimental and its behavior may change in future releases.
1788
+ LimitSet:
1789
+ title: LimitSet
1790
+ type: object
1791
+ properties:
1792
+ joints:
1793
+ type: array
1794
+ items:
1795
+ $ref: '#/components/schemas/JointLimits'
1796
+ tcp:
1797
+ $ref: '#/components/schemas/CartesianLimits'
1798
+ elbow:
1799
+ $ref: '#/components/schemas/CartesianLimits'
1800
+ flange:
1801
+ $ref: '#/components/schemas/CartesianLimits'
1802
+ coupled_shoulder_elbow_joint:
1803
+ $ref: '#/components/schemas/JointLimits'
1804
+ OperationLimits:
1805
+ title: OperationLimits
1806
+ type: object
1807
+ properties:
1808
+ auto_limits:
1809
+ $ref: '#/components/schemas/LimitSet'
1810
+ manual_limits:
1811
+ $ref: '#/components/schemas/LimitSet'
1812
+ manual_t1_limits:
1813
+ $ref: '#/components/schemas/LimitSet'
1814
+ manual_t2_limits:
1815
+ $ref: '#/components/schemas/LimitSet'
1816
+ safety_limit_elbow_flange_velocity_in_auto:
1817
+ type: boolean
1818
+ default: false
1819
+ description: Flag to indicate whether the TCP velocity limit is also applied for the elbow and flange in auto mode.
1820
+ Payload:
1821
+ required:
1822
+ - name
1823
+ - payload
1824
+ type: object
1825
+ properties:
1826
+ name:
1827
+ type: string
1828
+ payload:
1829
+ type: number
1830
+ description: Mass of payload in [kg].
1831
+ format: double
1832
+ center_of_mass:
1833
+ $ref: '#/components/schemas/Vector3d'
1834
+ description: Center of mass of payload as a three-dimensional position vector [x, y, z] in [mm].
1835
+ moment_of_inertia:
1836
+ $ref: '#/components/schemas/Vector3d'
1837
+ description: Principal moments of inertia of payload as three-dimensional vector [I_xx, I_yy, I_zz] in [kg·m²].
1838
+ JointTypeEnum:
1839
+ type: string
1840
+ enum:
1841
+ - REVOLUTE_JOINT
1842
+ - PRISMATIC_JOINT
1843
+ default: REVOLUTE_JOINT
1844
+ DHParameter:
1845
+ type: object
1846
+ properties:
1847
+ alpha:
1848
+ type: number
1849
+ description: Angle about x-axis in [rad].
1850
+ format: double
1851
+ theta:
1852
+ type: number
1853
+ description: Angle about z-axis in [rad].
1854
+ format: double
1855
+ a:
1856
+ type: number
1857
+ description: Offset along x-axis in [mm].
1858
+ format: double
1859
+ d:
1860
+ type: number
1861
+ description: Offset along z-axis in [mm].
1862
+ format: double
1863
+ reverse_rotation_direction:
1864
+ type: boolean
1865
+ description: True, if rotation direction of joint is reversed.
1866
+ type:
1867
+ $ref: '#/components/schemas/JointTypeEnum'
1868
+ description: A single set of DH parameters.
1869
+ MotionGroupDescription:
1870
+ required:
1871
+ - motion_group_model
1872
+ - operation_limits
1873
+ type: object
1874
+ properties:
1875
+ motion_group_model:
1876
+ $ref: '#/components/schemas/MotionGroupModel'
1877
+ mounting:
1878
+ $ref: '#/components/schemas/Pose'
1879
+ description: The offset from the world frame to the motion group base.
1880
+ tcps:
1881
+ type: object
1882
+ title: TcpOffsetDictionary
1883
+ description: |
1884
+ Maps a TCP name to its offset relative to the flange coordinate system. Key must be a TCP identifier.
1885
+ Values are TcpOffsets.
1886
+ additionalProperties:
1887
+ $ref: '#/components/schemas/TcpOffset'
1888
+ safety_zones:
1889
+ $ref: '#/components/schemas/ColliderDictionary'
1890
+ description: |
1891
+ SafetyZones are areas which cannot be entered or where certain limits apply.
1892
+ SafetyZones are defined in the world coordinate system.
1893
+ safety_link_colliders:
1894
+ type: array
1895
+ items:
1896
+ $ref: '#/components/schemas/ColliderDictionary'
1897
+ description: |
1898
+ The shape of the MotionGroups links to validate against safety zones.
1899
+ Indexed along the kinematic chain, starting with a static base shape before first joint.
1900
+ safety_tool_colliders:
1901
+ type: object
1902
+ title: SafetyToolColliders
1903
+ additionalProperties:
1904
+ $ref: '#/components/schemas/ColliderDictionary'
1905
+ description: |
1906
+ Maps a TCP name to its tool collider. Key must be a TCP identifier.
1907
+ Values are ColliderDictionaries that make up the shape of one tool to validate against safety zones.
1908
+ operation_limits:
1909
+ $ref: '#/components/schemas/OperationLimits'
1910
+ payloads:
1911
+ type: object
1912
+ title: PayloadDictionary
1913
+ description: |
1914
+ Maps a payload name to its configuration. Key must be a payload identifier.
1915
+ Values are payload objects.
1916
+ additionalProperties:
1917
+ $ref: '#/components/schemas/Payload'
1918
+ cycle_time:
1919
+ type: integer
1920
+ format: int32
1921
+ minimum: 0
1922
+ maximum: 2147483647
1923
+ description: '[ms] cycle time of the motion group controller. A trajectory for this motion group should be computed to this resolution.'
1924
+ dh_parameters:
1925
+ type: array
1926
+ items:
1927
+ $ref: '#/components/schemas/DHParameter'
1928
+ description: The Denavit-Hartenberg parameters describing the motion group kinematics.
1929
+ kinematic_chain_offset:
1930
+ description: |
1931
+ Constant coordinate transformation between the motion group base frame and the start of the kinematic chain modelled by Denavit-Hartenberg parameters.
1932
+ Unlike the mounting, which is used to set the actual position and orientation of the motion group within a cell, this offset is fixed.
1933
+ It is part of the description of the kinematical structure of the motion group.
1934
+ $ref: '#/components/schemas/Pose'
1935
+ flange_offset:
1936
+ description: |
1937
+ Constant coordinate transformation between the end of the kinematic chain modelled by Denavit-Hartenberg parameters and the flange frame.
1938
+ This can be used, e.g., to ensure that the flange frame has a certain orientation.
1939
+ $ref: '#/components/schemas/Pose'
1940
+ serial_number:
1941
+ type: string
1942
+ description: |
1943
+ The serial number of the motion group, if available. If not available, the serial number of the robot controller. If not available, empty.
1944
+ description_revision:
1945
+ type: integer
1946
+ format: int32
1947
+ minimum: 0
1948
+ maximum: 2147483647
1949
+ description: |
1950
+ Revision number of the motion group description.
1951
+ The revision is incremented whenever the motion group description changes due to a modification of the tools or the payloads in the robot configuration.
1952
+ The robot controller is polled every 10 s in Monitoring Mode to detect those changes.
1953
+ Use to detect changes since the last retrieval.
1954
+ description: |
1955
+ The configuration of a motion-group used for motion planning.
1956
+ The parameters `mounting`, `kinematic_chain_offset`, `dh_parameters`, `flange_offset` and `tcp_offset` are used to model the kinematic structure of the motion group.
1957
+ They can be used to compute the coordinate transformations from world to tcp frame:
1958
+ [world frame] -> mounting -> [base frame] -> kinematic chain offset + motion group kinematics (Denavit-Hartenberg parameters) -> [end of kinematic chain frame]
1959
+ -> flange_offset -> [flange frame] -> tcp_offset -> [tcp frame].
1960
+ CloudEvent:
1961
+ type: object
1962
+ description: |
1963
+ CloudEvents specification v1.0.2 compliant event structure.
1964
+ This schema defines the standardized format for event data across all NOVA services.
1965
+ required:
1966
+ - specversion
1967
+ - type
1968
+ - source
1969
+ - id
1970
+ properties:
1971
+ specversion:
1972
+ type: string
1973
+ description: The version of the CloudEvents specification which the event uses
1974
+ enum:
1975
+ - '1.0'
1976
+ example: '1.0'
1977
+ type:
1978
+ type: string
1979
+ description: Type of the event related to the source occurrence
1980
+ pattern: ^[a-z0-9\-\.]+$
1981
+ example: com.wandelbots.nova.system.update.started
1982
+ source:
1983
+ type: string
1984
+ format: uri-reference
1985
+ description: Identifies the context in which an event happened
1986
+ example: /nova/service-manager
1987
+ id:
1988
+ type: string
1989
+ description: Unique identifier for the event
1990
+ pattern: ^[a-zA-Z0-9\-_]+$
1991
+ example: update-2025-01-27-001
1992
+ time:
1993
+ type: string
1994
+ format: date-time
1995
+ description: Timestamp of when the occurrence happened (RFC3339)
1996
+ example: '2025-01-27T10:00:00Z'
1997
+ datacontenttype:
1998
+ type: string
1999
+ description: Content type of the data value
2000
+ default: application/json
2001
+ example: application/json
2002
+ dataschema:
2003
+ type: string
2004
+ format: uri
2005
+ description: URI reference that identifies the schema that the data adheres to
2006
+ example: https://schemas.wandelbots.com/nova/system-update/v2
2007
+ subject:
2008
+ type: string
2009
+ description: Subject of the event in the context of the event producer
2010
+ example: system/update
2011
+ data:
2012
+ type: object
2013
+ description: The event payload specific to the event type
2014
+ additionalProperties: true
2015
+ SystemUpdateStartedEvent:
2016
+ allOf:
2017
+ - $ref: '#/components/schemas/CloudEvent'
2018
+ - type: object
2019
+ description: |
2020
+ Event published when a system update process is started.
2021
+ Uses CloudEvents default fields for ID and timestamp, minimal data payload.
2022
+ required:
2023
+ - id
2024
+ - time
2025
+ - data
2026
+ properties:
2027
+ type:
2028
+ enum:
2029
+ - nova.v2.events.system.update.started
2030
+ example: nova.v2.events.system.update.started
2031
+ source:
2032
+ enum:
2033
+ - /nova/service-manager
2034
+ example: /nova/service-manager
2035
+ id:
2036
+ description: Unique identifier for this update process
2037
+ pattern: ^update-[a-zA-Z0-9\-_]+$
2038
+ example: update-nova-20250127T100000Z
2039
+ time:
2040
+ description: Timestamp when the update process started (RFC3339)
2041
+ data:
2042
+ type: object
2043
+ description: System update started event payload
2044
+ required:
2045
+ - newVersion
2046
+ properties:
2047
+ newVersion:
2048
+ type: string
2049
+ description: New system version being installed
2050
+ example: 2.1.0
2051
+ oldVersion:
2052
+ type: string
2053
+ description: Previous system version, if available
2054
+ example: 2.0.5
2055
+ additionalProperties: false
2056
+ SystemUpdateCompletedEvent:
2057
+ allOf:
2058
+ - $ref: '#/components/schemas/CloudEvent'
2059
+ - type: object
2060
+ description: |
2061
+ Event published once a system update process is completed.
2062
+ Uses CloudEvents default fields for ID and timestamp, minimal data payload.
2063
+ required:
2064
+ - id
2065
+ - time
2066
+ - data
2067
+ properties:
2068
+ type:
2069
+ enum:
2070
+ - nova.v2.events.system.update.completed
2071
+ example: nova.v2.events.system.update.completed
2072
+ source:
2073
+ enum:
2074
+ - /nova/service-manager
2075
+ example: /nova/service-manager
2076
+ id:
2077
+ description: Same unique identifier from the started event for correlation
2078
+ pattern: ^update-[a-zA-Z0-9\-_]+$
2079
+ example: update-nova-20250127T100000Z
2080
+ time:
2081
+ description: Timestamp when the update process completed (RFC3339)
2082
+ data:
2083
+ type: object
2084
+ description: System update completed event payload
2085
+ required:
2086
+ - newVersion
2087
+ properties:
2088
+ newVersion:
2089
+ type: string
2090
+ description: New system version that was installed
2091
+ example: 2.1.0
2092
+ error:
2093
+ type: string
2094
+ description: Error message if update failed
2095
+ example: 'Helm upgrade failed: context deadline exceeded'
2096
+ additionalProperties: false
2097
+ NetworkState:
2098
+ type: object
2099
+ required:
2100
+ - internet_connected
2101
+ properties:
2102
+ internet_connected:
2103
+ type: boolean
2104
+ description: |
2105
+ Indicates whether the system is connected to the internet.
2106
+ connection_type:
2107
+ type: string
2108
+ description: |
2109
+ Type of the active network link (e.g., ethernet, wifi, cellular, vpn, unknown).
2110
+ enum:
2111
+ - ethernet
2112
+ - wifi
2113
+ - cellular
2114
+ - vpn
2115
+ - unknown
2116
+ signal_strength:
2117
+ type: integer
2118
+ format: int32
2119
+ description: |
2120
+ Received signal strength in dBm for wireless interfaces; negative values indicate weaker signals.
2121
+ link_quality:
2122
+ type: number
2123
+ format: float
2124
+ minimum: 0
2125
+ maximum: 1
2126
+ description: |
2127
+ Normalized link quality metric from 0 (poor) to 1 (excellent) when provided by the interface.
2128
+ latency_ms:
2129
+ type: number
2130
+ format: float
2131
+ description: |
2132
+ Round-trip latency to the probe endpoint measured in milliseconds.
2133
+ bandwidth_mbps:
2134
+ type: number
2135
+ format: float
2136
+ description: |
2137
+ Estimated downstream bandwidth in megabits per second based on the probe.
2138
+ NetworkStatusChangedEvent:
2139
+ type: object
2140
+ description: |
2141
+ CloudEvents v1.0 compliant event published when system network status changes.
2142
+ This event wraps the NetworkState payload in a standard CloudEvents envelope.
2143
+ required:
2144
+ - specversion
2145
+ - type
2146
+ - source
2147
+ - id
2148
+ - time
2149
+ - data
2150
+ properties:
2151
+ specversion:
2152
+ type: string
2153
+ description: The version of the CloudEvents specification which the event uses
2154
+ enum:
2155
+ - '1.0'
2156
+ example: '1.0'
2157
+ type:
2158
+ type: string
2159
+ description: Type of the event related to the source occurrence
2160
+ enum:
2161
+ - nova.v2.events.system.network.status.changed
2162
+ example: nova.v2.events.system.network.status.changed
2163
+ source:
2164
+ type: string
2165
+ description: Identifies the context in which an event happened
2166
+ enum:
2167
+ - /nova/system-info
2168
+ example: /nova/system-info
2169
+ id:
2170
+ type: string
2171
+ description: Unique identifier for this network status change event
2172
+ pattern: ^network-status-change-[a-zA-Z0-9\-]+$
2173
+ example: network-status-change-20240615T101500Z
2174
+ time:
2175
+ type: string
2176
+ format: date-time
2177
+ description: Timestamp when the network status changed (RFC3339)
2178
+ example: '2024-06-15T10:15:00Z'
2179
+ datacontenttype:
2180
+ type: string
2181
+ description: Content type of the data value
2182
+ default: application/json
2183
+ example: application/json
2184
+ data:
2185
+ $ref: '#/components/schemas/NetworkState'
2186
+ OperatingState:
2187
+ format: enum
2188
+ type: string
2189
+ enum:
2190
+ - ACTIVE
2191
+ - INACTIVE
2192
+ description: The operating state.
2193
+ CellEventData:
2194
+ type: object
2195
+ description: Payload for a cell lifecycle event.
2196
+ required:
2197
+ - version
2198
+ - operating_state
2199
+ properties:
2200
+ version:
2201
+ type: string
2202
+ description: Chart version of the cell foundation release.
2203
+ example: 2.1.0
2204
+ operating_state:
2205
+ $ref: '#/components/schemas/OperatingState'
2206
+ additionalProperties: false
2207
+ CellCreatedEvent:
2208
+ allOf:
2209
+ - type: object
2210
+ description: CloudEvent published when a cell foundation release is created.
2211
+ required:
2212
+ - id
2213
+ - time
2214
+ - data
2215
+ properties:
2216
+ type:
2217
+ enum:
2218
+ - nova.v2.events.cells.{cell}.created
2219
+ example: nova.v2.events.cells.demo.created
2220
+ source:
2221
+ enum:
2222
+ - /nova/service-manager
2223
+ example: /nova/service-manager
2224
+ id:
2225
+ description: Unique identifier for this cell created event.
2226
+ example: cells-demo-created-550e8400-e29b-41d4-a716-446655440000
2227
+ time:
2228
+ description: Timestamp when the cell foundation release was created.
2229
+ data:
2230
+ $ref: '#/components/schemas/CellEventData'
2231
+ - $ref: '#/components/schemas/CloudEvent'
2232
+ CellUpdatedEvent:
2233
+ allOf:
2234
+ - type: object
2235
+ description: CloudEvent published when a cell foundation release is updated.
2236
+ required:
2237
+ - id
2238
+ - time
2239
+ - data
2240
+ properties:
2241
+ type:
2242
+ enum:
2243
+ - nova.v2.events.cells.{cell}.updated
2244
+ example: nova.v2.events.cells.demo.updated
2245
+ source:
2246
+ enum:
2247
+ - /nova/service-manager
2248
+ example: /nova/service-manager
2249
+ id:
2250
+ description: Unique identifier for this cell updated event.
2251
+ example: cells-demo-updated-a3bb189e-8bf9-4c8b-a7b4-8e78f6e5e7b1
2252
+ time:
2253
+ description: Timestamp when the cell foundation release was updated.
2254
+ data:
2255
+ $ref: '#/components/schemas/CellEventData'
2256
+ - $ref: '#/components/schemas/CloudEvent'
2257
+ CellDeletedEvent:
2258
+ allOf:
2259
+ - type: object
2260
+ description: CloudEvent published when a cell foundation release is deleted.
2261
+ required:
2262
+ - id
2263
+ - time
2264
+ - data
2265
+ properties:
2266
+ type:
2267
+ enum:
2268
+ - nova.v2.events.cells.{cell}.deleted
2269
+ example: nova.v2.events.cells.demo.deleted
2270
+ source:
2271
+ enum:
2272
+ - /nova/service-manager
2273
+ example: /nova/service-manager
2274
+ id:
2275
+ description: Unique identifier for this cell deleted event.
2276
+ example: cells-demo-deleted-b5e2e4f3-7c1d-4f2b-8e5f-9a3c6b7d8e0f
2277
+ time:
2278
+ description: Timestamp when the cell foundation release was deleted.
2279
+ data:
2280
+ $ref: '#/components/schemas/CellEventData'
2281
+ - $ref: '#/components/schemas/CloudEvent'
2282
+ AppEventData:
2283
+ type: object
2284
+ description: Payload for an app lifecycle event.
2285
+ required:
2286
+ - image
2287
+ - operating_state
2288
+ properties:
2289
+ image:
2290
+ type: string
2291
+ description: OCI image reference of the app release.
2292
+ example: example.com/demo/portal:1.0.0
2293
+ operating_state:
2294
+ $ref: '#/components/schemas/OperatingState'
2295
+ additionalProperties: false
2296
+ AppCreatedEvent:
2297
+ allOf:
2298
+ - type: object
2299
+ description: CloudEvent published when an app release is created in a cell.
2300
+ required:
2301
+ - id
2302
+ - time
2303
+ - data
2304
+ properties:
2305
+ type:
2306
+ enum:
2307
+ - nova.v2.events.cells.{cell}.apps.{app}.created
2308
+ example: nova.v2.events.cells.demo.apps.portal.created
2309
+ source:
2310
+ enum:
2311
+ - /nova/service-manager
2312
+ example: /nova/service-manager
2313
+ id:
2314
+ description: Unique identifier for this app created event.
2315
+ example: apps-portal-created-c7f3a5b2-9d4e-4f6a-b8c1-2d3e4f5a6b7c
2316
+ time:
2317
+ description: Timestamp when the app release was created.
2318
+ data:
2319
+ $ref: '#/components/schemas/AppEventData'
2320
+ - $ref: '#/components/schemas/CloudEvent'
2321
+ AppUpdatedEvent:
2322
+ allOf:
2323
+ - type: object
2324
+ description: CloudEvent published when an app release is updated in a cell.
2325
+ required:
2326
+ - id
2327
+ - time
2328
+ - data
2329
+ properties:
2330
+ type:
2331
+ enum:
2332
+ - nova.v2.events.cells.{cell}.apps.{app}.updated
2333
+ example: nova.v2.events.cells.demo.apps.portal.updated
2334
+ source:
2335
+ enum:
2336
+ - /nova/service-manager
2337
+ example: /nova/service-manager
2338
+ id:
2339
+ description: Unique identifier for this app updated event.
2340
+ example: apps-portal-updated-d8e4b6c3-ae5f-4a7b-9d2e-3e4f5a6b7c8d
2341
+ time:
2342
+ description: Timestamp when the app release was updated.
2343
+ data:
2344
+ $ref: '#/components/schemas/AppEventData'
2345
+ - $ref: '#/components/schemas/CloudEvent'
2346
+ AppDeletedEvent:
2347
+ allOf:
2348
+ - type: object
2349
+ description: CloudEvent published when an app release is deleted from a cell.
2350
+ required:
2351
+ - id
2352
+ - time
2353
+ - data
2354
+ properties:
2355
+ type:
2356
+ enum:
2357
+ - nova.v2.events.cells.{cell}.apps.{app}.deleted
2358
+ example: nova.v2.events.cells.demo.apps.portal.deleted
2359
+ source:
2360
+ enum:
2361
+ - /nova/service-manager
2362
+ example: /nova/service-manager
2363
+ id:
2364
+ description: Unique identifier for this app deleted event.
2365
+ example: apps-portal-deleted-e9f5c7d4-bf6a-4b8c-8a3e-4f5a6b7c8d9e
2366
+ time:
2367
+ description: Timestamp when the app release was deleted.
2368
+ data:
2369
+ $ref: '#/components/schemas/AppEventData'
2370
+ - $ref: '#/components/schemas/CloudEvent'
2371
+ RobotControllerEventData:
2372
+ type: object
2373
+ description: Payload for a robot controller lifecycle event.
2374
+ required:
2375
+ - manufacturer
2376
+ - virtual
2377
+ - operating_state
2378
+ properties:
2379
+ manufacturer:
2380
+ $ref: '#/components/schemas/Manufacturer'
2381
+ virtual:
2382
+ type: boolean
2383
+ description: Indicates whether the controller is virtual.
2384
+ operating_state:
2385
+ $ref: '#/components/schemas/OperatingState'
2386
+ additionalProperties: false
2387
+ RobotControllerCreatedEvent:
2388
+ allOf:
2389
+ - type: object
2390
+ description: CloudEvent published when a robot controller release is created in a cell.
2391
+ required:
2392
+ - id
2393
+ - time
2394
+ - data
2395
+ properties:
2396
+ type:
2397
+ enum:
2398
+ - nova.v2.events.cells.{cell}.controllers.{controller}.created
2399
+ example: nova.v2.events.cells.demo.controllers.ur10e.created
2400
+ source:
2401
+ enum:
2402
+ - /nova/service-manager
2403
+ example: /nova/service-manager
2404
+ id:
2405
+ description: Unique identifier for this robot controller created event.
2406
+ example: controllers-ur10e-created-f0a6d8e5-ca7b-4c9d-ab4f-5a6b7c8d9e0f
2407
+ time:
2408
+ description: Timestamp when the robot controller release was created.
2409
+ data:
2410
+ $ref: '#/components/schemas/RobotControllerEventData'
2411
+ - $ref: '#/components/schemas/CloudEvent'
2412
+ RobotControllerUpdatedEvent:
2413
+ allOf:
2414
+ - type: object
2415
+ description: CloudEvent published when a robot controller release is updated in a cell.
2416
+ required:
2417
+ - id
2418
+ - time
2419
+ - data
2420
+ properties:
2421
+ type:
2422
+ enum:
2423
+ - nova.v2.events.cells.{cell}.controllers.{controller}.updated
2424
+ example: nova.v2.events.cells.demo.controllers.ur10e.updated
2425
+ source:
2426
+ enum:
2427
+ - /nova/service-manager
2428
+ example: /nova/service-manager
2429
+ id:
2430
+ description: Unique identifier for this robot controller updated event.
2431
+ example: controllers-ur10e-updated-1b7e9f06-db8c-4dae-9c50-6b7c8d9e0f1a
2432
+ time:
2433
+ description: Timestamp when the robot controller release was updated.
2434
+ data:
2435
+ $ref: '#/components/schemas/RobotControllerEventData'
2436
+ - $ref: '#/components/schemas/CloudEvent'
2437
+ RobotControllerDeletedEvent:
2438
+ allOf:
2439
+ - type: object
2440
+ description: CloudEvent published when a robot controller release is deleted from a cell.
2441
+ required:
2442
+ - id
2443
+ - time
2444
+ - data
2445
+ properties:
2446
+ type:
2447
+ enum:
2448
+ - nova.v2.events.cells.{cell}.controllers.{controller}.deleted
2449
+ example: nova.v2.events.cells.demo.controllers.ur10e.deleted
2450
+ source:
2451
+ enum:
2452
+ - /nova/service-manager
2453
+ example: /nova/service-manager
2454
+ id:
2455
+ description: Unique identifier for this robot controller deleted event.
2456
+ example: controllers-ur10e-deleted-2c8f0a17-ec9d-4ebf-8d61-7c8d9e0f1a2b
2457
+ time:
2458
+ description: Timestamp when the robot controller release was deleted.
2459
+ data:
2460
+ $ref: '#/components/schemas/RobotControllerEventData'
2461
+ - $ref: '#/components/schemas/CloudEvent'
2462
+ asyncapi: 3.0.0
2463
+ operations:
2464
+ publishCell:
2465
+ action: send
2466
+ title: Cell Configuration
2467
+ description: |
2468
+ Publishes the configuration for a cell.
2469
+
2470
+ The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2471
+ tags:
2472
+ - name: Cell
2473
+ channel:
2474
+ $ref: '#/channels/{instance}.v2.cells.{cell}'
2475
+ publishApp:
2476
+ action: send
2477
+ title: App Configuration
2478
+ description: |
2479
+ Publishes the configuration for a GUI application in the cell.
2480
+
2481
+ The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2482
+ tags:
2483
+ - name: Cell
2484
+ channel:
2485
+ $ref: '#/channels/{instance}.v2.cells.{cell}.apps.{app}'
2486
+ publishProgramStatus:
2487
+ action: send
2488
+ title: Program Status
2489
+ description: |
2490
+ Publishes status messages for programs running in an app within a cell.
2491
+ The status messages provide information about the current state of a program run.
2492
+ tags:
2493
+ - name: Program
2494
+ channel:
2495
+ $ref: '#/channels/{instance}.v2.cells.{cell}.programs'
2496
+ publishRobotController:
2497
+ action: send
2498
+ title: Robot Controller Configuration
2499
+ description: Publishes the configuration of a robot controller.
2500
+ tags:
2501
+ - name: Cell
2502
+ channel:
2503
+ $ref: '#/channels/{instance}.v2.cells.{cell}.controllers.{controller}'
2504
+ publishCellStatus:
2505
+ action: send
2506
+ title: Service Status
2507
+ description: |
2508
+ Publishes the status of all cell resources.
2509
+
2510
+ The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2511
+ tags:
2512
+ - name: Cell
2513
+ channel:
2514
+ $ref: '#/channels/{instance}.v2.cells.{cell}.status'
2515
+ publishCellCycle:
2516
+ action: send
2517
+ title: Cell Cycle Event
2518
+ description: |
2519
+ Publishes the cycle events for a cell.
2520
+ tags:
2521
+ - name: Cell
2522
+ description: Cell-scoped messaging operations.
2523
+ channel:
2524
+ $ref: '#/channels/{instance}.v2.cells.{cell}.cycle'
2525
+ publishSystemStatus:
2526
+ action: send
2527
+ title: Wandelbots NOVA status
2528
+ description: |
2529
+ Publishes the status of all system services.
2530
+
2531
+ The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2532
+ tags:
2533
+ - name: System
2534
+ channel:
2535
+ $ref: '#/channels/{instance}.v2.system.status'
2536
+ publishCollisionSetup:
2537
+ action: send
2538
+ title: Collision Setup
2539
+ description: |
2540
+ Publishes the stored collision setup.
2541
+
2542
+ The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2543
+ tags:
2544
+ - name: Store Collision Setups
2545
+ channel:
2546
+ $ref: '#/channels/{instance}.v2.cells.{cell}.collision.setups.{setup}'
2547
+ publishBUSIOStatus:
2548
+ action: send
2549
+ title: BUS Inputs/Outputs Service Status
2550
+ description: |
2551
+ Publishes the status of BUS inputs/outputs service.
2552
+
2553
+ The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`.
2554
+ tags:
2555
+ - name: BUS Inputs/Outputs
2556
+ channel:
2557
+ $ref: '#/channels/{instance}.v2.cells.{cell}.bus-ios.status'
2558
+ publishBUSIOsIOs:
2559
+ action: send
2560
+ title: BUS Input/Output Values
2561
+ description: Publishes updates of BUS input/output values.
2562
+ tags:
2563
+ - name: BUS Inputs/Outputs
2564
+ channel:
2565
+ $ref: '#/channels/{instance}.v2.cells.{cell}.bus-ios.ios'
2566
+ setBUSIOsIOs:
2567
+ action: receive
2568
+ title: Set Output Values
2569
+ description: |
2570
+ Set output values published with the BUS inputs/outputs service.
2571
+ If you're using a virtual service, you can set inputs as well.
2572
+ tags:
2573
+ - name: BUS Inputs/Outputs
2574
+ channel:
2575
+ $ref: '#/channels/{instance}.v2.cells.{cell}.bus-ios.ios.set'
2576
+ reply:
2577
+ channel:
2578
+ $ref: '#/channels/{instance}.v2.cells.{cell}.bus-ios.ios.set.reply'
2579
+ address:
2580
+ location: $message.header#/replyTo
2581
+ selectRobotControllerIOs:
2582
+ action: receive
2583
+ title: Select Input/Output Values
2584
+ description: Select input/output values published by the controller.
2585
+ tags:
2586
+ - name: Controller
2587
+ channel:
2588
+ $ref: '#/channels/{instance}.v2.cells.{cell}.controllers.{controller}.ios.select'
2589
+ reply:
2590
+ channel:
2591
+ $ref: '#/channels/{instance}.v2.cells.{cell}.controllers.{controller}.ios.select.reply'
2592
+ address:
2593
+ location: $message.header#/replyTo
2594
+ publishRobotControllerIOs:
2595
+ action: send
2596
+ title: Input/Output Values
2597
+ description: Publishes updates of input/output values.
2598
+ tags:
2599
+ - name: Controller
2600
+ channel:
2601
+ $ref: '#/channels/{instance}.v2.cells.{cell}.controllers.{controller}.ios'
2602
+ publishRobotControllersState:
2603
+ action: send
2604
+ title: State of Robot Controller
2605
+ description: Publishes the current state of a robot controller.
2606
+ tags:
2607
+ - name: Controller
2608
+ channel:
2609
+ $ref: '#/channels/{instance}.v2.cells.{cell}.controllers.{controller}.state'
2610
+ publishMotionGroupDescription:
2611
+ action: send
2612
+ title: Description of Motion Group
2613
+ description: Publishes the description of a motion group, including TCPs, mounting, safety zones, limits, etc.
2614
+ tags:
2615
+ - name: Controller
2616
+ channel:
2617
+ $ref: '#/channels/{instance}.v2.cells.{cell}.controllers.{controller}.motion-groups.{motion-group}.description'
2618
+ eventSystemUpdateStarted:
2619
+ action: send
2620
+ title: System Update Started
2621
+ description: |
2622
+ Publishes an event when a system update process is initiated.
2623
+
2624
+ This event is triggered once the service-manager begins a system update process,
2625
+ providing details about the update metadata, trigger information, and pre-update checks.
2626
+
2627
+ The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2628
+ for reliable delivery and event replay capabilities.
2629
+ tags:
2630
+ - name: Events
2631
+ channel:
2632
+ $ref: '#/channels/{instance}.v2.events.system.update.started'
2633
+ eventSystemUpdateCompleted:
2634
+ action: send
2635
+ title: System Update Completed
2636
+ description: |
2637
+ Publishes an event when a system update process is completed.
2638
+
2639
+ This event is triggered once the service-manager completes a system update process,
2640
+ providing comprehensive results including success status, component outcomes,
2641
+ error details, and post-update validation results.
2642
+
2643
+ The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2644
+ for reliable delivery and event replay capabilities.
2645
+ tags:
2646
+ - name: Events
2647
+ channel:
2648
+ $ref: '#/channels/{instance}.v2.events.system.update.completed'
2649
+ eventSystemNetworkStatusChanged:
2650
+ action: send
2651
+ title: System Network Status Changed
2652
+ description: |
2653
+ Publishes an event when a system network status changes.
2654
+
2655
+ This event is triggered once system-info service detects a change in the system network status,
2656
+ providing details about the new network state and related information.
2657
+
2658
+ The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2659
+ for reliable delivery and event replay capabilities.
2660
+ tags:
2661
+ - name: Events
2662
+ channel:
2663
+ $ref: '#/channels/{instance}.v2.events.system.network.status.changed'
2664
+ eventCellCreated:
2665
+ action: send
2666
+ title: Cell Created
2667
+ description: |
2668
+ Publishes an event when a cell foundation release is created.
2669
+
2670
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2671
+ tags:
2672
+ - name: Events
2673
+ channel:
2674
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.created'
2675
+ eventCellUpdated:
2676
+ action: send
2677
+ title: Cell Updated
2678
+ description: |
2679
+ Publishes an event when a cell foundation release is updated.
2680
+
2681
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2682
+ tags:
2683
+ - name: Events
2684
+ channel:
2685
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.updated'
2686
+ eventCellDeleted:
2687
+ action: send
2688
+ title: Cell Deleted
2689
+ description: |
2690
+ Publishes an event when a cell foundation release is deleted.
2691
+
2692
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2693
+ tags:
2694
+ - name: Events
2695
+ channel:
2696
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.deleted'
2697
+ eventAppCreated:
2698
+ action: send
2699
+ title: App Created
2700
+ description: |
2701
+ Publishes an event when an app release is created in a cell.
2702
+
2703
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2704
+ tags:
2705
+ - name: Events
2706
+ channel:
2707
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.apps.{app}.created'
2708
+ eventAppUpdated:
2709
+ action: send
2710
+ title: App Updated
2711
+ description: |
2712
+ Publishes an event when an app release is updated in a cell.
2713
+
2714
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2715
+ tags:
2716
+ - name: Events
2717
+ channel:
2718
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.apps.{app}.updated'
2719
+ eventAppDeleted:
2720
+ action: send
2721
+ title: App Deleted
2722
+ description: |
2723
+ Publishes an event when an app release is deleted from a cell.
2724
+
2725
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2726
+ tags:
2727
+ - name: Events
2728
+ channel:
2729
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.apps.{app}.deleted'
2730
+ eventRobotControllerCreated:
2731
+ action: send
2732
+ title: Robot Controller Created
2733
+ description: |
2734
+ Publishes an event when a robot controller release is created in a cell.
2735
+
2736
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2737
+ tags:
2738
+ - name: Events
2739
+ channel:
2740
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.controllers.{controller}.created'
2741
+ eventRobotControllerUpdated:
2742
+ action: send
2743
+ title: Robot Controller Updated
2744
+ description: |
2745
+ Publishes an event when a robot controller release is updated in a cell.
2746
+
2747
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2748
+ tags:
2749
+ - name: Events
2750
+ channel:
2751
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.controllers.{controller}.updated'
2752
+ eventRobotControllerDeleted:
2753
+ action: send
2754
+ title: Robot Controller Deleted
2755
+ description: |
2756
+ Publishes an event when a robot controller release is deleted from a cell.
2757
+
2758
+ The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2759
+ tags:
2760
+ - name: Events
2761
+ channel:
2762
+ $ref: '#/channels/{instance}.v2.events.cells.{cell}.controllers.{controller}.deleted'
2763
+ channels:
2764
+ '{instance}.v2.cells.{cell}':
2765
+ address: '{instance}.v2.cells.{cell}'
2766
+ parameters:
2767
+ instance:
2768
+ description: Unique identifier addressing an instance in all API calls.
2769
+ default: nova
2770
+ cell:
2771
+ description: Unique identifier addressing a cell in all API calls.
2772
+ messages:
2773
+ Cell:
2774
+ contentType: application/json
2775
+ payload:
2776
+ $ref: '#/components/schemas/Cell'
2777
+ x-nats-jetstream-stream:
2778
+ name: system-state
2779
+ description: Stream for system state messages, only the latest message per subject is kept.
2780
+ retention: limits
2781
+ discard: old
2782
+ storage: file
2783
+ max_msgs_per_subject: 1
2784
+ '{instance}.v2.cells.{cell}.apps.{app}':
2785
+ address: '{instance}.v2.cells.{cell}.apps.{app}'
2786
+ parameters:
2787
+ instance:
2788
+ description: Unique identifier addressing an instance in all API calls.
2789
+ default: nova
2790
+ cell:
2791
+ description: Unique identifier addressing a cell in all API calls.
2792
+ app:
2793
+ description: |
2794
+ Name of the provided application.
2795
+ Must be unique within the cell and is used as an identifier for addressing the application in all API calls, e.g., when updating the application.
2796
+ messages:
2797
+ App:
2798
+ contentType: application/json
2799
+ payload:
2800
+ $ref: '#/components/schemas/App'
2801
+ x-nats-jetstream-stream:
2802
+ name: system-state
2803
+ description: Stream for system state messages, only the latest message per subject is kept.
2804
+ retention: limits
2805
+ discard: old
2806
+ storage: file
2807
+ max_msgs_per_subject: 1
2808
+ '{instance}.v2.cells.{cell}.programs':
2809
+ address: '{instance}.v2.cells.{cell}.programs'
2810
+ parameters:
2811
+ instance:
2812
+ description: Unique identifier addressing an instance in all API calls.
2813
+ default: nova
2814
+ cell:
2815
+ description: Unique identifier addressing a cell in all API calls.
2816
+ messages:
2817
+ ProgramStatus:
2818
+ contentType: application/json
2819
+ payload:
2820
+ $ref: '#/components/schemas/ProgramStatus'
2821
+ '{instance}.v2.cells.{cell}.controllers.{controller}':
2822
+ address: '{instance}.v2.cells.{cell}.controllers.{controller}'
2823
+ parameters:
2824
+ instance:
2825
+ description: Unique identifier addressing an instance in all API calls.
2826
+ default: nova
2827
+ cell:
2828
+ description: Unique identifier addressing a cell in all API calls.
2829
+ controller:
2830
+ description: Unique identifier to address a controller in the cell.
2831
+ messages:
2832
+ RobotController:
2833
+ contentType: application/json
2834
+ payload:
2835
+ $ref: '#/components/schemas/RobotController'
2836
+ x-nats-jetstream-stream:
2837
+ name: system-state
2838
+ description: Stream for system state messages, only the latest message per subject is kept.
2839
+ retention: limits
2840
+ discard: old
2841
+ storage: file
2842
+ max_msgs_per_subject: 1
2843
+ '{instance}.v2.cells.{cell}.status':
2844
+ address: '{instance}.v2.cells.{cell}.status'
2845
+ parameters:
2846
+ instance:
2847
+ description: Unique identifier addressing an instance in all API calls.
2848
+ default: nova
2849
+ cell:
2850
+ description: Unique identifier addressing a cell in all API calls.
2851
+ messages:
2852
+ StatusList:
2853
+ contentType: application/json
2854
+ payload:
2855
+ $ref: '#/components/schemas/ServiceStatusList'
2856
+ x-nats-jetstream-stream:
2857
+ name: system-state
2858
+ description: Stream for system state messages, only the latest message per subject is kept.
2859
+ retention: limits
2860
+ discard: old
2861
+ storage: file
2862
+ max_msgs_per_subject: 1
2863
+ '{instance}.v2.cells.{cell}.cycle':
2864
+ address: '{instance}.v2.cells.{cell}.cycle'
2865
+ parameters:
2866
+ instance:
2867
+ description: Unique identifier addressing an instance in all API calls.
2868
+ default: nova
2869
+ cell:
2870
+ description: Unique identifier addressing a cell in all API calls.
2871
+ messages:
2872
+ CellCycleEvent:
2873
+ contentType: application/json
2874
+ payload:
2875
+ $ref: '#/components/schemas/CellCycleEvent'
2876
+ '{instance}.v2.system.status':
2877
+ address: '{instance}.v2.system.status'
2878
+ parameters:
2879
+ instance:
2880
+ description: Unique identifier addressing an instance in all API calls.
2881
+ default: nova
2882
+ messages:
2883
+ StatusList:
2884
+ contentType: application/json
2885
+ payload:
2886
+ $ref: '#/components/schemas/ServiceStatusList'
2887
+ x-nats-jetstream-stream:
2888
+ name: system-state
2889
+ description: Stream for system state messages, only the latest message per subject is kept.
2890
+ retention: limits
2891
+ discard: old
2892
+ storage: file
2893
+ max_msgs_per_subject: 1
2894
+ '{instance}.v2.cells.{cell}.collision.setups.{setup}':
2895
+ address: '{instance}.v2.cells.{cell}.collision.setups.{setup}'
2896
+ parameters:
2897
+ instance:
2898
+ description: Unique identifier addressing an instance in all API calls.
2899
+ default: nova
2900
+ cell:
2901
+ description: Unique identifier addressing a cell in all API calls.
2902
+ setup:
2903
+ description: Unique identifier addressing a collision setup.
2904
+ messages:
2905
+ StatusList:
2906
+ contentType: application/json
2907
+ payload:
2908
+ $ref: '#/components/schemas/CollisionSetup'
2909
+ x-nats-jetstream-stream:
2910
+ name: system-state
2911
+ description: Stream for system state messages, only the latest message per subject is kept.
2912
+ retention: limits
2913
+ discard: old
2914
+ storage: file
2915
+ max_msgs_per_subject: 1
2916
+ '{instance}.v2.cells.{cell}.bus-ios.status':
2917
+ address: '{instance}.v2.cells.{cell}.bus-ios.status'
2918
+ parameters:
2919
+ instance:
2920
+ description: Unique identifier addressing an instance in all API calls.
2921
+ default: nova
2922
+ cell:
2923
+ description: Unique identifier addressing a cell in all API calls.
2924
+ messages:
2925
+ Status:
2926
+ contentType: application/json
2927
+ payload:
2928
+ $ref: '#/components/schemas/BusIOsState'
2929
+ x-nats-jetstream-stream:
2930
+ name: system-state
2931
+ description: Stream for system state messages, only the latest message per subject is kept.
2932
+ retention: limits
2933
+ discard: old
2934
+ storage: file
2935
+ max_msgs_per_subject: 1
2936
+ '{instance}.v2.cells.{cell}.bus-ios.ios':
2937
+ address: '{instance}.v2.cells.{cell}.bus-ios.ios'
2938
+ parameters:
2939
+ instance:
2940
+ description: Unique identifier addressing an instance in all API calls.
2941
+ default: nova
2942
+ cell:
2943
+ description: Unique identifier addressing a cell in all API calls.
2944
+ messages:
2945
+ IOValues:
2946
+ contentType: application/json
2947
+ payload:
2948
+ $ref: '#/components/schemas/ListIOValuesResponse'
2949
+ '{instance}.v2.cells.{cell}.bus-ios.ios.set':
2950
+ address: '{instance}.v2.cells.{cell}.bus-ios.ios.set'
2951
+ parameters:
2952
+ instance:
2953
+ description: Unique identifier addressing an instance in all API calls.
2954
+ default: nova
2955
+ cell:
2956
+ description: Unique identifier addressing a cell in all API calls.
2957
+ messages:
2958
+ BUSIOValues:
2959
+ contentType: application/json
2960
+ headers:
2961
+ type: object
2962
+ properties:
2963
+ replyTo:
2964
+ type: string
2965
+ description: Address to send the response to.
2966
+ payload:
2967
+ $ref: '#/components/schemas/ListIOValuesResponse'
2968
+ '{instance}.v2.cells.{cell}.bus-ios.ios.set.reply':
2969
+ address: null
2970
+ messages:
2971
+ Response:
2972
+ contentType: application/json
2973
+ payload:
2974
+ $ref: '#/components/schemas/Error'
2975
+ '{instance}.v2.cells.{cell}.controllers.{controller}.ios.select':
2976
+ address: '{instance}.v2.cells.{cell}.controllers.{controller}.ios.select'
2977
+ parameters:
2978
+ instance:
2979
+ description: Unique identifier addressing an instance in all API calls.
2980
+ default: nova
2981
+ cell:
2982
+ description: Unique identifier addressing a cell in all API calls.
2983
+ controller:
2984
+ description: Unique identifier to address a controller in a cell.
2985
+ messages:
2986
+ IOValues:
2987
+ contentType: application/json
2988
+ headers:
2989
+ type: object
2990
+ properties:
2991
+ replyTo:
2992
+ type: string
2993
+ description: Address to send the response to.
2994
+ payload:
2995
+ $ref: '#/components/schemas/SelectIOs'
2996
+ '{instance}.v2.cells.{cell}.controllers.{controller}.ios.select.reply':
2997
+ address: null
2998
+ messages:
2999
+ Response:
3000
+ contentType: application/json
3001
+ payload:
3002
+ $ref: '#/components/schemas/Error'
3003
+ '{instance}.v2.cells.{cell}.controllers.{controller}.ios':
3004
+ address: '{instance}.v2.cells.{cell}.controllers.{controller}.ios'
3005
+ parameters:
3006
+ instance:
3007
+ description: Unique identifier addressing an instance in all API calls.
3008
+ default: nova
3009
+ cell:
3010
+ description: Unique identifier addressing a cell in all API calls.
3011
+ controller:
3012
+ description: Unique identifier to address a controller in the cell.
3013
+ messages:
3014
+ IOValues:
3015
+ contentType: application/json
3016
+ payload:
3017
+ $ref: '#/components/schemas/StreamIOValuesResponse'
3018
+ '{instance}.v2.cells.{cell}.controllers.{controller}.state':
3019
+ address: '{instance}.v2.cells.{cell}.controllers.{controller}.state'
3020
+ parameters:
3021
+ instance:
3022
+ description: Unique identifier addressing an instance in all API calls.
3023
+ default: nova
3024
+ cell:
3025
+ description: Unique identifier addressing a cell in all API calls.
3026
+ controller:
3027
+ description: Unique identifier to address a controller in the cell.
3028
+ messages:
3029
+ RobotControllerState:
3030
+ contentType: application/json
3031
+ payload:
3032
+ $ref: '#/components/schemas/RobotControllerState'
3033
+ '{instance}.v2.cells.{cell}.controllers.{controller}.motion-groups.{motion-group}.description':
3034
+ address: '{instance}.v2.cells.{cell}.controllers.{controller}.motion-groups.{motion-group}.description'
3035
+ parameters:
3036
+ instance:
3037
+ description: Unique identifier addressing an instance in all API calls.
3038
+ default: nova
3039
+ cell:
3040
+ description: Unique identifier addressing a cell in all API calls.
3041
+ controller:
3042
+ description: Unique identifier addressing a controller in the cell.
3043
+ motion-group:
3044
+ description: Motion group identifier.
3045
+ messages:
3046
+ MotionGroupDescription:
3047
+ contentType: application/json
3048
+ payload:
3049
+ $ref: '#/components/schemas/MotionGroupDescription'
3050
+ x-nats-jetstream-stream:
3051
+ name: system-state
3052
+ description: Stream for system state messages, only the latest message per subject is kept.
3053
+ retention: limits
3054
+ discard: old
3055
+ storage: file
3056
+ max_msgs_per_subject: 1
3057
+ '{instance}.v2.events.system.update.started':
3058
+ address: '{instance}.v2.events.system.update.started'
3059
+ parameters:
3060
+ instance:
3061
+ description: Unique identifier addressing an instance in all API calls.
3062
+ default: nova
3063
+ messages:
3064
+ SystemUpdateStarted:
3065
+ name: SystemUpdateStarted
3066
+ title: System Update Started Event
3067
+ contentType: application/json
3068
+ description: |
3069
+ CloudEvents v1.0 compliant event published when a system update is initiated.
3070
+ Contains comprehensive metadata about the update process and pre-update checks.
3071
+ payload:
3072
+ $ref: '#/components/schemas/SystemUpdateStartedEvent'
3073
+ examples:
3074
+ - name: successful_update
3075
+ summary: Update successfully initiated
3076
+ payload:
3077
+ specversion: '1.0'
3078
+ type: nova.v2.events.system.update.started
3079
+ source: /nova/service-manager
3080
+ id: update-nova-20250127T100000Z
3081
+ time: '2025-01-27T10:00:00Z'
3082
+ datacontenttype: application/json
3083
+ data:
3084
+ newVersion: 2.1.0
3085
+ oldVersion: 2.0.5
3086
+ x-nats-jetstream-stream:
3087
+ name: system-events
3088
+ description: '|'
3089
+ retention: limits
3090
+ discard: old
3091
+ storage: file
3092
+ max_msgs: 10000
3093
+ max_bytes: '104857600 # 100MiB'
3094
+ max_age: '2592000 # 30 days in seconds'
3095
+ max_msg_size: '10240 # 10KiB'
3096
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3097
+ subjects:
3098
+ - nova.v2.events.>
3099
+ '{instance}.v2.events.system.update.completed':
3100
+ address: '{instance}.v2.events.system.update.completed'
3101
+ parameters:
3102
+ instance:
3103
+ description: Unique identifier addressing an instance in all API calls.
3104
+ default: nova
3105
+ messages:
3106
+ SystemUpdateCompleted:
3107
+ name: SystemUpdateCompleted
3108
+ title: System Update Completed Event
3109
+ contentType: application/json
3110
+ description: |
3111
+ CloudEvents v1.0 compliant event published when a system update is completed.
3112
+ Success is indicated by absence of error field.
3113
+ payload:
3114
+ $ref: '#/components/schemas/SystemUpdateCompletedEvent'
3115
+ examples:
3116
+ - name: successful_update
3117
+ summary: Successful system update
3118
+ payload:
3119
+ specversion: '1.0'
3120
+ type: nova.v2.events.system.update.completed
3121
+ source: /nova/service-manager
3122
+ id: update-nova-20250127T100000Z
3123
+ time: '2025-01-27T10:05:00Z'
3124
+ datacontenttype: application/json
3125
+ data:
3126
+ newVersion: 2.1.0
3127
+ - name: failed_update
3128
+ summary: Failed system update with error
3129
+ payload:
3130
+ specversion: '1.0'
3131
+ type: nova.v2.events.system.update.completed
3132
+ source: /nova/service-manager
3133
+ id: update-nova-20250127T120000Z
3134
+ time: '2025-01-27T12:30:00Z'
3135
+ datacontenttype: application/json
3136
+ data:
3137
+ newVersion: 2.1.0
3138
+ error: 'Helm upgrade failed: context deadline exceeded'
3139
+ x-nats-jetstream-stream:
3140
+ name: system-events
3141
+ description: '|'
3142
+ retention: limits
3143
+ discard: old
3144
+ storage: file
3145
+ max_msgs: 10000
3146
+ max_bytes: '104857600 # 100MiB'
3147
+ max_age: '2592000 # 30 days in seconds'
3148
+ max_msg_size: '10240 # 10KiB'
3149
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3150
+ subjects:
3151
+ - nova.v2.events.>
3152
+ '{instance}.v2.events.system.network.status.changed':
3153
+ address: '{instance}.v2.events.system.network.status.changed'
3154
+ parameters:
3155
+ instance:
3156
+ description: Unique identifier addressing an instance in all API calls.
3157
+ default: nova
3158
+ messages:
3159
+ NetworkStatusChanged:
3160
+ name: NetworkStatusChanged
3161
+ title: System Network Status Changed Event
3162
+ contentType: application/json
3163
+ description: |
3164
+ CloudEvents v1.0 compliant event published when a system network status changes.
3165
+ payload:
3166
+ $ref: '#/components/schemas/NetworkStatusChangedEvent'
3167
+ examples:
3168
+ - name: network_status_disconnected
3169
+ summary: System network disconnected event
3170
+ payload:
3171
+ specversion: '1.0'
3172
+ type: nova.v2.events.system.network.status.changed
3173
+ source: /nova/system-info
3174
+ id: network-status-change-20240615T101500Z
3175
+ time: '2024-06-15T10:15:00Z'
3176
+ datacontenttype: application/json
3177
+ data:
3178
+ internet_connected: false
3179
+ x-nats-jetstream-stream:
3180
+ name: system-events
3181
+ description: '|'
3182
+ retention: limits
3183
+ discard: old
3184
+ storage: file
3185
+ max_msgs: 10000
3186
+ max_bytes: '104857600 # 100MiB'
3187
+ max_age: '2592000 # 30 days in seconds'
3188
+ max_msg_size: '10240 # 10KiB'
3189
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3190
+ subjects:
3191
+ - nova.v2.events.>
3192
+ '{instance}.v2.events.cells.{cell}.created':
3193
+ address: '{instance}.v2.events.cells.{cell}.created'
3194
+ parameters:
3195
+ instance:
3196
+ description: Unique identifier addressing an instance in all API calls.
3197
+ default: nova
3198
+ cell:
3199
+ description: Unique identifier addressing a cell in all API calls.
3200
+ messages:
3201
+ CellCreated:
3202
+ name: CellCreated
3203
+ title: Cell Created Event
3204
+ contentType: application/json
3205
+ description: |
3206
+ CloudEvents v1.0 compliant event published when a cell foundation release is created.
3207
+ payload:
3208
+ $ref: '#/components/schemas/CellCreatedEvent'
3209
+ examples:
3210
+ - name: cell_created
3211
+ summary: Cell foundation release created.
3212
+ payload:
3213
+ specversion: '1.0'
3214
+ type: nova.v2.events.cells.demo.created
3215
+ source: /nova/service-manager
3216
+ id: nova.v2.events.cells.demo.created.1737972000
3217
+ time: '2025-01-27T10:00:00Z'
3218
+ datacontenttype: application/json
3219
+ data:
3220
+ version: 2.1.0
3221
+ operating_state: ACTIVE
3222
+ x-nats-jetstream-stream:
3223
+ name: system-events
3224
+ description: '|'
3225
+ retention: limits
3226
+ discard: old
3227
+ storage: file
3228
+ max_msgs: 10000
3229
+ max_bytes: '104857600 # 100MiB'
3230
+ max_age: '2592000 # 30 days in seconds'
3231
+ max_msg_size: '10240 # 10KiB'
3232
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3233
+ subjects:
3234
+ - nova.v2.events.>
3235
+ '{instance}.v2.events.cells.{cell}.updated':
3236
+ address: '{instance}.v2.events.cells.{cell}.updated'
3237
+ parameters:
3238
+ instance:
3239
+ description: Unique identifier addressing an instance in all API calls.
3240
+ default: nova
3241
+ cell:
3242
+ description: Unique identifier addressing a cell in all API calls.
3243
+ messages:
3244
+ CellUpdated:
3245
+ name: CellUpdated
3246
+ title: Cell Updated Event
3247
+ contentType: application/json
3248
+ description: |
3249
+ CloudEvents v1.0 compliant event published when a cell foundation release is updated.
3250
+ payload:
3251
+ $ref: '#/components/schemas/CellUpdatedEvent'
3252
+ examples:
3253
+ - name: cell_updated
3254
+ summary: Cell foundation release updated.
3255
+ payload:
3256
+ specversion: '1.0'
3257
+ type: nova.v2.events.cells.demo.updated
3258
+ source: /nova/service-manager
3259
+ id: nova.v2.events.cells.demo.updated.1737972600
3260
+ time: '2025-01-27T10:10:00Z'
3261
+ datacontenttype: application/json
3262
+ data:
3263
+ version: 2.1.1
3264
+ operating_state: ACTIVE
3265
+ x-nats-jetstream-stream:
3266
+ name: system-events
3267
+ description: '|'
3268
+ retention: limits
3269
+ discard: old
3270
+ storage: file
3271
+ max_msgs: 10000
3272
+ max_bytes: '104857600 # 100MiB'
3273
+ max_age: '2592000 # 30 days in seconds'
3274
+ max_msg_size: '10240 # 10KiB'
3275
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3276
+ subjects:
3277
+ - nova.v2.events.>
3278
+ '{instance}.v2.events.cells.{cell}.deleted':
3279
+ address: '{instance}.v2.events.cells.{cell}.deleted'
3280
+ parameters:
3281
+ instance:
3282
+ description: Unique identifier addressing an instance in all API calls.
3283
+ default: nova
3284
+ cell:
3285
+ description: Unique identifier addressing a cell in all API calls.
3286
+ messages:
3287
+ CellDeleted:
3288
+ name: CellDeleted
3289
+ title: Cell Deleted Event
3290
+ contentType: application/json
3291
+ description: |
3292
+ CloudEvents v1.0 compliant event published when a cell foundation release is deleted.
3293
+ payload:
3294
+ $ref: '#/components/schemas/CellDeletedEvent'
3295
+ examples:
3296
+ - name: cell_deleted
3297
+ summary: Cell foundation release deleted.
3298
+ payload:
3299
+ specversion: '1.0'
3300
+ type: nova.v2.events.cells.demo.deleted
3301
+ source: /nova/service-manager
3302
+ id: nova.v2.events.cells.demo.deleted.1737973200
3303
+ time: '2025-01-27T10:20:00Z'
3304
+ datacontenttype: application/json
3305
+ data:
3306
+ version: 2.1.1
3307
+ operating_state: ACTIVE
3308
+ x-nats-jetstream-stream:
3309
+ name: system-events
3310
+ description: '|'
3311
+ retention: limits
3312
+ discard: old
3313
+ storage: file
3314
+ max_msgs: 10000
3315
+ max_bytes: '104857600 # 100MiB'
3316
+ max_age: '2592000 # 30 days in seconds'
3317
+ max_msg_size: '10240 # 10KiB'
3318
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3319
+ subjects:
3320
+ - nova.v2.events.>
3321
+ '{instance}.v2.events.cells.{cell}.apps.{app}.created':
3322
+ address: '{instance}.v2.events.cells.{cell}.apps.{app}.created'
3323
+ parameters:
3324
+ instance:
3325
+ description: Unique identifier addressing an instance in all API calls.
3326
+ default: nova
3327
+ cell:
3328
+ description: Unique identifier addressing a cell in all API calls.
3329
+ app:
3330
+ description: Unique identifier addressing an app in the cell.
3331
+ messages:
3332
+ AppCreated:
3333
+ name: AppCreated
3334
+ title: App Created Event
3335
+ contentType: application/json
3336
+ description: |
3337
+ CloudEvents v1.0 compliant event published when an app release is created in a cell.
3338
+ payload:
3339
+ $ref: '#/components/schemas/AppCreatedEvent'
3340
+ examples:
3341
+ - name: app_created
3342
+ summary: App release created.
3343
+ payload:
3344
+ specversion: '1.0'
3345
+ type: nova.v2.events.cells.demo.apps.portal.created
3346
+ source: /nova/service-manager
3347
+ id: nova.v2.events.cells.demo.apps.portal.created.1737972000
3348
+ time: '2025-01-27T10:00:00Z'
3349
+ datacontenttype: application/json
3350
+ data:
3351
+ image: example.com/demo/portal:1.0.0
3352
+ operating_state: ACTIVE
3353
+ x-nats-jetstream-stream:
3354
+ name: system-events
3355
+ description: '|'
3356
+ retention: limits
3357
+ discard: old
3358
+ storage: file
3359
+ max_msgs: 10000
3360
+ max_bytes: '104857600 # 100MiB'
3361
+ max_age: '2592000 # 30 days in seconds'
3362
+ max_msg_size: '10240 # 10KiB'
3363
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3364
+ subjects:
3365
+ - nova.v2.events.>
3366
+ '{instance}.v2.events.cells.{cell}.apps.{app}.updated':
3367
+ address: '{instance}.v2.events.cells.{cell}.apps.{app}.updated'
3368
+ parameters:
3369
+ instance:
3370
+ description: Unique identifier addressing an instance in all API calls.
3371
+ default: nova
3372
+ cell:
3373
+ description: Unique identifier addressing a cell in all API calls.
3374
+ app:
3375
+ description: Unique identifier addressing an app in the cell.
3376
+ messages:
3377
+ AppUpdated:
3378
+ name: AppUpdated
3379
+ title: App Updated Event
3380
+ contentType: application/json
3381
+ description: |
3382
+ CloudEvents v1.0 compliant event published when an app release is updated in a cell.
3383
+ payload:
3384
+ $ref: '#/components/schemas/AppUpdatedEvent'
3385
+ examples:
3386
+ - name: app_updated
3387
+ summary: App release updated.
3388
+ payload:
3389
+ specversion: '1.0'
3390
+ type: nova.v2.events.cells.demo.apps.portal.updated
3391
+ source: /nova/service-manager
3392
+ id: nova.v2.events.cells.demo.apps.portal.updated.1737972600
3393
+ time: '2025-01-27T10:10:00Z'
3394
+ datacontenttype: application/json
3395
+ data:
3396
+ image: example.com/demo/portal:1.1.0
3397
+ operating_state: INACTIVE
3398
+ x-nats-jetstream-stream:
3399
+ name: system-events
3400
+ description: '|'
3401
+ retention: limits
3402
+ discard: old
3403
+ storage: file
3404
+ max_msgs: 10000
3405
+ max_bytes: '104857600 # 100MiB'
3406
+ max_age: '2592000 # 30 days in seconds'
3407
+ max_msg_size: '10240 # 10KiB'
3408
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3409
+ subjects:
3410
+ - nova.v2.events.>
3411
+ '{instance}.v2.events.cells.{cell}.apps.{app}.deleted':
3412
+ address: '{instance}.v2.events.cells.{cell}.apps.{app}.deleted'
3413
+ parameters:
3414
+ instance:
3415
+ description: Unique identifier addressing an instance in all API calls.
3416
+ default: nova
3417
+ cell:
3418
+ description: Unique identifier addressing a cell in all API calls.
3419
+ app:
3420
+ description: Unique identifier addressing an app in the cell.
3421
+ messages:
3422
+ AppDeleted:
3423
+ name: AppDeleted
3424
+ title: App Deleted Event
3425
+ contentType: application/json
3426
+ description: |
3427
+ CloudEvents v1.0 compliant event published when an app release is deleted from a cell.
3428
+ payload:
3429
+ $ref: '#/components/schemas/AppDeletedEvent'
3430
+ examples:
3431
+ - name: app_deleted
3432
+ summary: App release deleted.
3433
+ payload:
3434
+ specversion: '1.0'
3435
+ type: nova.v2.events.cells.demo.apps.portal.deleted
3436
+ source: /nova/service-manager
3437
+ id: nova.v2.events.cells.demo.apps.portal.deleted.1737973200
3438
+ time: '2025-01-27T10:20:00Z'
3439
+ datacontenttype: application/json
3440
+ data:
3441
+ image: example.com/demo/portal:1.1.0
3442
+ operating_state: INACTIVE
3443
+ x-nats-jetstream-stream:
3444
+ name: system-events
3445
+ description: '|'
3446
+ retention: limits
3447
+ discard: old
3448
+ storage: file
3449
+ max_msgs: 10000
3450
+ max_bytes: '104857600 # 100MiB'
3451
+ max_age: '2592000 # 30 days in seconds'
3452
+ max_msg_size: '10240 # 10KiB'
3453
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3454
+ subjects:
3455
+ - nova.v2.events.>
3456
+ '{instance}.v2.events.cells.{cell}.controllers.{controller}.created':
3457
+ address: '{instance}.v2.events.cells.{cell}.controllers.{controller}.created'
3458
+ parameters:
3459
+ instance:
3460
+ description: Unique identifier addressing an instance in all API calls.
3461
+ default: nova
3462
+ cell:
3463
+ description: Unique identifier addressing a cell in all API calls.
3464
+ controller:
3465
+ description: Unique identifier to address a controller in the cell.
3466
+ messages:
3467
+ RobotControllerCreated:
3468
+ name: RobotControllerCreated
3469
+ title: Robot Controller Created Event
3470
+ contentType: application/json
3471
+ description: |
3472
+ CloudEvents v1.0 compliant event published when a robot controller release is created in a cell.
3473
+ payload:
3474
+ $ref: '#/components/schemas/RobotControllerCreatedEvent'
3475
+ examples:
3476
+ - name: robot_controller_created
3477
+ summary: Robot controller release created.
3478
+ payload:
3479
+ specversion: '1.0'
3480
+ type: nova.v2.events.cells.demo.controllers.ur10e.created
3481
+ source: /nova/service-manager
3482
+ id: nova.v2.events.cells.demo.controllers.ur10e.created.1737972000
3483
+ time: '2025-01-27T10:00:00Z'
3484
+ datacontenttype: application/json
3485
+ data:
3486
+ manufacturer: universalrobots
3487
+ virtual: false
3488
+ operating_state: ACTIVE
3489
+ x-nats-jetstream-stream:
3490
+ name: system-events
3491
+ description: '|'
3492
+ retention: limits
3493
+ discard: old
3494
+ storage: file
3495
+ max_msgs: 10000
3496
+ max_bytes: '104857600 # 100MiB'
3497
+ max_age: '2592000 # 30 days in seconds'
3498
+ max_msg_size: '10240 # 10KiB'
3499
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3500
+ subjects:
3501
+ - nova.v2.events.>
3502
+ '{instance}.v2.events.cells.{cell}.controllers.{controller}.updated':
3503
+ address: '{instance}.v2.events.cells.{cell}.controllers.{controller}.updated'
3504
+ parameters:
3505
+ instance:
3506
+ description: Unique identifier addressing an instance in all API calls.
3507
+ default: nova
3508
+ cell:
3509
+ description: Unique identifier addressing a cell in all API calls.
3510
+ controller:
3511
+ description: Unique identifier to address a controller in the cell.
3512
+ messages:
3513
+ RobotControllerUpdated:
3514
+ name: RobotControllerUpdated
3515
+ title: Robot Controller Updated Event
3516
+ contentType: application/json
3517
+ description: |
3518
+ CloudEvents v1.0 compliant event published when a robot controller release is updated in a cell.
3519
+ payload:
3520
+ $ref: '#/components/schemas/RobotControllerUpdatedEvent'
3521
+ examples:
3522
+ - name: robot_controller_updated
3523
+ summary: Robot controller release updated.
3524
+ payload:
3525
+ specversion: '1.0'
3526
+ type: nova.v2.events.cells.demo.controllers.ur10e.updated
3527
+ source: /nova/service-manager
3528
+ id: nova.v2.events.cells.demo.controllers.ur10e.updated.1737972600
3529
+ time: '2025-01-27T10:10:00Z'
3530
+ datacontenttype: application/json
3531
+ data:
3532
+ manufacturer: universalrobots
3533
+ virtual: false
3534
+ operating_state: ACTIVE
3535
+ x-nats-jetstream-stream:
3536
+ name: system-events
3537
+ description: '|'
3538
+ retention: limits
3539
+ discard: old
3540
+ storage: file
3541
+ max_msgs: 10000
3542
+ max_bytes: '104857600 # 100MiB'
3543
+ max_age: '2592000 # 30 days in seconds'
3544
+ max_msg_size: '10240 # 10KiB'
3545
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3546
+ subjects:
3547
+ - nova.v2.events.>
3548
+ '{instance}.v2.events.cells.{cell}.controllers.{controller}.deleted':
3549
+ address: '{instance}.v2.events.cells.{cell}.controllers.{controller}.deleted'
3550
+ parameters:
3551
+ instance:
3552
+ description: Unique identifier addressing an instance in all API calls.
3553
+ default: nova
3554
+ cell:
3555
+ description: Unique identifier addressing a cell in all API calls.
3556
+ controller:
3557
+ description: Unique identifier to address a controller in the cell.
3558
+ messages:
3559
+ RobotControllerDeleted:
3560
+ name: RobotControllerDeleted
3561
+ title: Robot Controller Deleted Event
3562
+ contentType: application/json
3563
+ description: |
3564
+ CloudEvents v1.0 compliant event published when a robot controller release is deleted from a cell.
3565
+ payload:
3566
+ $ref: '#/components/schemas/RobotControllerDeletedEvent'
3567
+ examples:
3568
+ - name: robot_controller_deleted
3569
+ summary: Robot controller release deleted.
3570
+ payload:
3571
+ specversion: '1.0'
3572
+ type: nova.v2.events.cells.demo.controllers.ur10e.deleted
3573
+ source: /nova/service-manager
3574
+ id: nova.v2.events.cells.demo.controllers.ur10e.deleted.1737973200
3575
+ time: '2025-01-27T10:20:00Z'
3576
+ datacontenttype: application/json
3577
+ data:
3578
+ manufacturer: universalrobots
3579
+ virtual: false
3580
+ operating_state: ACTIVE
3581
+ x-nats-jetstream-stream:
3582
+ name: system-events
3583
+ description: '|'
3584
+ retention: limits
3585
+ discard: old
3586
+ storage: file
3587
+ max_msgs: 10000
3588
+ max_bytes: '104857600 # 100MiB'
3589
+ max_age: '2592000 # 30 days in seconds'
3590
+ max_msg_size: '10240 # 10KiB'
3591
+ duplicate_window: '300 # 5 minutes for duplicate detection'
3592
+ subjects:
3593
+ - nova.v2.events.>