@wandelbots/nova-js
Version:
Official JS client for the Wandelbots API
1,493 lines (1,454 loc) • 129 kB
YAML
info:
title: Wandelbots NOVA Async API
version: '2.0'
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
description: |
Interact with robots in an easy and intuitive way.
contact:
name: Copyright (c) 2025 Wandelbots GmbH
url: https://www.wandelbots.com
components:
schemas:
CellName:
type: string
description: |
A unique name for the cell used as an identifier for addressing the cell in all API calls.
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).
pattern: ^[a-z][a-z0-9-]{0,30}[a-z0-9]$
default: cell
CellDescription:
type: string
maxLength: 200
description: |
A description of the cell.
AbbController:
title: AbbController
description: |
The configuration of a physical ABB robot controller has to contain IP address.
Additionally an EGM server configuration has to be specified in order to control the robot.
Deploying the server is a functionality of this API.
type: object
required:
- kind
- controller_ip
- controller_port
- egm_server
properties:
kind:
type: string
enum:
- AbbController
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
controller_ip:
type: string
controller_port:
description: |
Default values: 80, 443. If custom value is set, field is required.
type: integer
default: 80
egm_server:
description: The EGM server runs inside of the cell, thus its IP must be in the same network as the 'controller_ip'
type: object
required:
- ip
- port
properties:
ip:
type: string
port:
type: integer
default: 32112
ControllerNetworkInterface:
title: ControllerNetworkInterface
description: |
Optional dedicated network interface for a physical robot controller.
When set, the controller is given its own network interface on the selected
physical network port (`pf`) with the given `address`, so it can reach the
robot network directly.
type: object
required:
- address
- pf
properties:
address:
description: |
IPv4 address in CIDR notation to assign to the controller's network
interface, for example `192.168.1.10/24`. The value must be a valid IPv4
address followed by a prefix length between 0 and 32.
type: string
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])$
example: 192.168.1.10/24
pf:
description: |
Name of the node's physical network port that connects to the robot
network, for example `enp10s0f0`. The controller's interface is provided
from this port.
type: string
pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,14}$
example: enp10s0f0
FanucController:
title: FanucController
description: The configuration of a physical FANUC robot controller has to contain IP address of the controller.
type: object
required:
- kind
- controller_ip
properties:
kind:
type: string
enum:
- FanucController
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
controller_ip:
type: string
network_interface:
$ref: '#/components/schemas/ControllerNetworkInterface'
KukaController:
title: KukaController
description: |
The configuration of a physical KUKA robot controller has to contain an IP address.
Additionally an RSI server configuration has to be specified in order to control the robot.
Deploying the server is a functionality of this API.
type: object
required:
- kind
- controller_ip
- controller_port
- rsi_server
properties:
kind:
type: string
enum:
- KukaController
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
controller_ip:
type: string
controller_port:
type: integer
default: 54600
rsi_server:
description: The RSI server runs inside of the cell.
type: object
required:
- ip
- port
properties:
ip:
type: string
default: 0.0.0.0
port:
type: integer
default: 30152
slow_cycle_rate:
type: boolean
default: false
description: |
If true, uses slower cycle time of 12ms instead of 4ms.
UniversalrobotsController:
title: UniversalrobotsController
description: The configuration of a physical Universal Robots controller has to contain IP address of the controller.
type: object
required:
- kind
- controller_ip
properties:
kind:
type: string
enum:
- UniversalrobotsController
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
controller_ip:
type: string
Manufacturer:
type: string
enum:
- abb
- fanuc
- kuka
- staubli
- universalrobots
- yaskawa
MotionGroupModel:
title: MotionGroupModel
type: string
description: |
Identifies a single motion group model.
See [getMotionGroupModels](#/operations/getMotionGroupModels) for supported types.
MotionGroupFromType:
title: Motion Group from Model
type: object
required:
- motion_group_model
- motion_group
properties:
motion_group:
type: string
description: Unique identifier for the motion group to be added.
motion_group_model:
$ref: '#/components/schemas/MotionGroupModel'
initial_joint_position:
type: string
description: |
Initial joint position of the added motion group.
Provides the joint position as a JSON array of float values in radians. The array length
must match the robot's degrees of freedom, e.g., `"[0, 0, 0, 0, 0, 0]"` for a 6-DOF robot.
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;
if it is shorter, missing values will be filled with zeros.
MotionGroupFromJson:
title: Motion Group from JSON
type: object
required:
- json_data
- extracted_motion_group_id
- motion_group
properties:
motion_group:
type: string
description: Unique identifier for the motion group to be added.
json_data:
type: string
description: |
JSON configuration of the virtual robot controller, can be obtained from the physical controller's configuration
via [getVirtualControllerConfiguration](#/operations/getVirtualControllerConfiguration).
extracted_motion_group_id:
type: string
description: |
The identifier of the motion group that needs to be extracted from the provided JSON configuration.
initial_joint_position:
type: string
description: |
Initial joint position of the added motion group.
Provides the joint position as a JSON array of float values in radians. The array length
must match the robot's degrees of freedom, e.g., `"[0, 0, 0, 0, 0, 0]"` for a 6-DOF robot.
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;
if it is shorter, missing values will be filled with zeros.
AddVirtualControllerMotionGroupRequest:
title: AddVirtualControllerMotionGroupRequest
description: |
Request body wrapper for `addVirtualControllerMotionGroup`.
Allow either referencing a predefined motion group model or
uploading a JSON configuration that the backend converts into a
motion group description.
oneOf:
- $ref: '#/components/schemas/MotionGroupFromType'
- $ref: '#/components/schemas/MotionGroupFromJson'
VirtualController:
title: VirtualController
description: |
The configuration of a virtual robot controller has to contain the manufacturer string,
an optional joint position string array, and either a preset `type` **or** the complete JSON configuration.
type: object
required:
- kind
- manufacturer
properties:
kind:
type: string
enum:
- VirtualController
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
manufacturer:
$ref: '#/components/schemas/Manufacturer'
type:
type: string
description: |
Preset type of the virtual robot controller.
See [getRobotConfigurations](#/operations/getRobotConfigurations) for supported types.
json:
type: string
description: |
Complete JSON configuration of the virtual robot controller.
Can be obtained from the physical controller's configuration via [getVirtualControllerConfiguration](#/operations/getVirtualControllerConfiguration).
If provided, the `type` field should not be used.
initial_joint_position:
type: string
description: |
Initial joint position of the first motion group from the virtual robot controller.
Provides the joint position as a JSON array of float values in radians. The array length
must match the robot's degrees of freedom, e.g., `"[0, 0, 0, 0, 0, 0]"` for a 6-DOF robot.
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;
if it is shorter, missing values will be filled with zeros.
motion_groups:
type: array
maxItems: 10
description: |
Adds a motion group configuration for the virtual robot controller.
> **NOTE**
>
> Set only one of the two options, **motion_group_model**, or **json_data**
- **motion_group_model**: Identifies a single motion group. See [getMotionGroupModels](#/operations/getMotionGroupModels) for supported types
- **json_data**: JSON configuration of the virtual robot controller, can be obtained from the physical controller's configuration
via [getVirtualControllerConfiguration](#/operations/getVirtualControllerConfiguration)
- **extracted_motion_group_id**: Motion group identifier to extract from the provided JSON configuration, required when using json_data
- **motion_group**: Unique identifier for the motion group
- **initial_joint_position**: Specifies the initial joint position for the added motion group
items:
$ref: '#/components/schemas/AddVirtualControllerMotionGroupRequest'
YaskawaController:
title: YaskawaController
description: The configuration of a physical Yaskawa robot controller has to contain IP address of the controller.
type: object
required:
- kind
- controller_ip
properties:
kind:
type: string
enum:
- YaskawaController
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
controller_ip:
type: string
RobotController:
type: object
description: The configuration of a physical or virtual robot controller.
required:
- name
- configuration
properties:
name:
description: |
Unique name of controller within the cell.
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).
type: string
pattern: ^[a-z][a-z0-9-]{0,61}[a-z0-9]$
configuration:
oneOf:
- $ref: '#/components/schemas/AbbController'
- $ref: '#/components/schemas/FanucController'
- $ref: '#/components/schemas/KukaController'
- $ref: '#/components/schemas/UniversalrobotsController'
- $ref: '#/components/schemas/VirtualController'
- $ref: '#/components/schemas/YaskawaController'
discriminator: kind
x-go-type-name: ControllerConfig
ImageCredentials:
type: object
description: |
User provided credentials for creating a secret to pull an image from a registry.
required:
- registry
- user
- password
properties:
registry:
type: string
user:
type: string
password:
type: string
ContainerImage:
type: object
description: |
A user provided, custom container image and the required credentials to pull it from a registry.
required:
- image
properties:
image:
description: The location of a container image in the form of `<registry>/<image>:<tag>`.
type: string
minLength: 1
credentials:
$ref: '#/components/schemas/ImageCredentials'
secrets:
type: array
description: Known secrets for authentication with the container registry.
items:
type: object
required:
- name
properties:
name:
type: string
ContainerEnvironment:
type: array
description: |
A list of environment variables with name and their value.
These can be used to configure the containerized application, and turn features on or off.
items:
type: object
required:
- name
- value
properties:
name:
type: string
value:
type: string
Capacity:
type: string
description: The amount of requested storage capacity.
pattern: ^[0-9]+(\\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|B)?$
example: 100Mi
ContainerStorage:
type: object
description: |
The path and capacity of a volume that retains data across application restarts.
The maximal requestable capacity is 300Mi.
If you need more capacity consider using [storeObject](#/operations/storeObject).
required:
- mount_path
- capacity
properties:
mount_path:
type: string
format: path
example: /data
capacity:
$ref: '#/components/schemas/Capacity'
description: |
The amount of local storage available for the application.
**NOTE:** The capacity can NEVER be reduced!
ContainerResources:
type: object
description: Additional resources that the application requires.
properties:
intel_gpu:
type: integer
description: Number of GPUs the application requires.
minimum: 0
maximum: 1
memory_limit:
type: string
description: The maximum memory allocated to this application.
example: 1000Mi
App:
type: object
description: |
An App is defined by a webserver, packed inside a container, serving a web-application.
required:
- name
- app_icon
- container_image
properties:
name:
description: |
The name of the provided application.
The name 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.
It also defines where the application is reachable (/$cell/$name).
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).
type: string
pattern: ^[a-z][a-z0-9-]{0,61}[a-z0-9]$
minLength: 1
app_icon:
description: The path of the icon for the App (/$cell/$name/$app_icon).
type: string
minLength: 1
container_image:
$ref: '#/components/schemas/ContainerImage'
port:
description: The port the containerized webserver is listening on.
type: integer
default: 8080
environment:
$ref: '#/components/schemas/ContainerEnvironment'
storage:
$ref: '#/components/schemas/ContainerStorage'
resources:
$ref: '#/components/schemas/ContainerResources'
health_path:
description: |
Defines the URL path suffix used to check the application's health status. The complete health check URL
is constructed as `/$cell/$name/$health_path`. When the application is working as expected,
the endpoint returns an HTTP 200 status code.
If not specified, the system will default to using the application icon path suffix
(the value of `app_icon`) as the health check endpoint, resulting in `/$cell/$name/$app_icon`.
If the health check fails (no response or non-200 status code), the system will
automatically restart the application container to restore service.
type: string
diagnosis_path:
description: |
Defines the URL path suffix used to provide an endpoint for diagnosis data collection.
The complete diagnosis check URL is constructed as `/$cell/$name/$diagnosis_path`.
The endpoint is called when a diagnosis package is requested via the diagnosis API.
The endpoint needs to return the data within a zip file `application/zip` response.
type: string
Cell:
type: object
description: |
To create a robot cell, only a valid name is required.
Once created, a robot cell provides access to the Wandelbots NOVA foundation services.
The configuration can be customized, e.g., robot controllers, also within apps.
required:
- name
additionalProperties: {}
properties:
name:
$ref: '#/components/schemas/CellName'
default: cell
version:
description: |
Wandelbots NOVA version of the cell.
This version must not exceed the current system version.
type: string
description:
$ref: '#/components/schemas/CellDescription'
controllers:
type: array
items:
$ref: '#/components/schemas/RobotController'
apps:
type: array
items:
$ref: '#/components/schemas/App'
ProgramRunState:
title: ProgramRunState
description: The state of a program run.
type: string
format: enum
enum:
- PREPARING
- RUNNING
- COMPLETED
- FAILED
- STOPPED
ProgramStatus:
title: ProgramStatus
type: object
required:
- app
- program
- run
- state
- timestamp
properties:
app:
type: string
description: The app name where the program is hosted.
program:
type: string
description: Unique identifier of the program.
run:
type: string
description: Unique identifier of the program run.
state:
$ref: '#/components/schemas/ProgramRunState'
description: State of the program run.
error:
type: string
description: Error message if the program run failed.
start_time:
type: string
format: date-time
description: RFC3339 timestamp when the program run started.
end_time:
type: string
format: date-time
description: RFC3339 timestamp when the program run ended.
timestamp:
type: string
format: date-time
description: RFC3339 timestamp when the program run ended.
ServiceGroup:
type: string
enum:
- SystemService
- CellService
- RobotController
- App
ServiceStatusSeverity:
type: string
enum:
- INFO
- WARNING
- ERROR
ServiceStatusPhase:
type: string
enum:
- Terminating
- Initialized
- Running
- NoReady
- Completed
- ContainerCreating
- PodInitializing
- Unknown
- CrashLoopBackOff
- Error
- ImagePullBackOff
- OOMKilled
- Pending
- Evicted
ServiceStatus:
type: object
required:
- service
- group
- status
properties:
service:
type: string
group:
$ref: '#/components/schemas/ServiceGroup'
status:
type: object
required:
- severity
- code
properties:
severity:
$ref: '#/components/schemas/ServiceStatusSeverity'
code:
$ref: '#/components/schemas/ServiceStatusPhase'
reason:
type: string
ServiceStatusList:
type: array
items:
$ref: '#/components/schemas/ServiceStatus'
CellCycleEvent:
title: CellCycleEvent
description: |
Lifecycle event for a cell cycle.
type: object
required:
- event_type
- id
- cycle_id
- timestamp
- cell
properties:
event_type:
type: string
description: Type of the cycle event.
enum:
- cycle_started
- cycle_finished
- cycle_failed
id:
type: string
description: Unique identifier of this cycle event.
cycle_id:
type: string
description: Unique identifier of the cycle this event belongs to.
timestamp:
type: string
description: Timestamp when the cycle event occurred, in ISO 8601 format.
cell:
type: string
description: Unique identifier of the cell the event belongs to.
extra:
type: object
description: Additional event-specific data. May be empty.
additionalProperties: true
duration_ms:
type: integer
description: Duration of the cycle in milliseconds.
reason:
type: string
description: Reason for cycle failure.
Sphere:
title: Sphere
type: object
properties:
shape_type:
type: string
enum:
- sphere
radius:
type: number
format: double
description: The radius of the sphere in [mm].
required:
- shape_type
- radius
description: Defines a spherical shape centred around the origin.
Box:
title: Box
type: object
properties:
shape_type:
type: string
enum:
- box
size_x:
type: number
format: double
description: The dimension in x-direction in [mm].
size_y:
type: number
format: double
description: The dimension in y-direction in [mm].
size_z:
type: number
format: double
description: The dimension in z-direction in [mm].
box_type:
type: string
enum:
- HOLLOW
- FULL
default: FULL
description: The box type defines if the box is hollow or full.
required:
- shape_type
- size_x
- size_y
- size_z
- box_type
description: |
Defines a cuboid shape centred around an origin.
If a margin is applied to the box type full, it is added to all size values. The shape will keep its edges.
The hollow box type consists of thin boxes that make up its walls.
If a margin is applied to the box type hollow, its size values are reduced by the margin.
Rectangle:
title: Rectangle
type: object
properties:
shape_type:
type: string
enum:
- rectangle
size_x:
type: number
format: double
description: The dimension in x-direction in [mm].
size_y:
type: number
format: double
description: The dimension in y-direction in [mm].
required:
- shape_type
- size_x
- size_y
description: Defines an x/y-plane with finite size. Centred around the z-axis.
Plane:
title: Plane
type: object
properties:
shape_type:
type: string
enum:
- plane
required:
- shape_type
description: Defines an x/y-plane with infinite size.
Cylinder:
title: Cylinder
type: object
properties:
shape_type:
type: string
enum:
- cylinder
radius:
type: number
format: double
description: The radius of the cylinder in [mm].
height:
type: number
format: double
description: The height of the cylinder in [mm].
required:
- shape_type
- radius
- height
description: |
Defines a cylindrical shape.
Centred around origin, symmetric around z-axis.
If a margin is applied, it is added to radius and height. The shape will keep its edges.
Capsule:
title: Capsule
type: object
properties:
shape_type:
type: string
enum:
- capsule
radius:
type: number
format: double
description: The radius of the cylinder and semi-spheres in [mm].
cylinder_height:
type: number
format: double
description: The height of the inner cylinder in [mm].
required:
- shape_type
- radius
- cylinder_height
description: |
Defines a cylindrical shape with 2 semi-spheres on the top and bottom.
Centred around origin, symmetric around z-axis.
RectangularCapsule:
title: RectangularCapsule
type: object
properties:
shape_type:
type: string
enum:
- rectangular_capsule
radius:
type: number
format: double
description: The radius of the inner spheres in [mm].
sphere_center_distance_x:
type: number
format: double
description: The distance of the sphere center in x-direction in [mm].
sphere_center_distance_y:
type: number
format: double
description: The distance of the sphere center in y-direction in [mm].
required:
- shape_type
- radius
- sphere_center_distance_x
- sphere_center_distance_y
description: |
Convex hull around four spheres. Sphere center points in x/y-plane, offset by either combination "+/- sizeX" or "+/- sizeY".
Alternative description: Rectangle in x/y-plane with a 3D padding.
Vector3d:
title: Vector3d
type: array
maxItems: 3
minItems: 3
items:
type: number
format: double
description: |
A three-dimensional vector [x, y, z] with double precision.
ConvexHull:
title: ConvexHull
type: object
properties:
shape_type:
type: string
enum:
- convex_hull
vertices:
type: array
items:
$ref: '#/components/schemas/Vector3d'
description: The list of encapsulated points.
required:
- shape_type
- vertices
description: Defines a convex hull encapsulating a set of vertices.
RotationVector:
title: RotationVector
type: array
maxItems: 3
minItems: 3
items:
type: number
format: double
description: |
Defines a rotation in 3D space.
A three-dimensional Vector [rx, ry, rz] with double precision.
Rotation is applied around the vector.
The angle of rotation equals the length of the vector.
Pose:
title: Pose
type: object
properties:
position:
$ref: '#/components/schemas/Vector3d'
orientation:
$ref: '#/components/schemas/RotationVector'
default:
position:
- 0
- 0
- 0
orientation:
- 0
- 0
- 0
description: |
Defines a pose in 3D space.
A pose is a combination of a position and an orientation.
The position is applied before the orientation.
Collider:
title: Collider
type: object
description: |
Defines a collider with a single shape.
A collider is an object that is used for collision detection.
It defines the `shape` that is attached with the offset of `pose` to a reference frame.
Use colliders to:
- Define the shape of a workpiece. The reference frame is the scene origin.
- Define the shape of a link in a motion group. The reference frame is the link coordinate system.
- Define the shape of a tool. The reference frame is the flange coordinate system.
properties:
shape:
oneOf:
- $ref: '#/components/schemas/Sphere'
- $ref: '#/components/schemas/Box'
- $ref: '#/components/schemas/Rectangle'
- $ref: '#/components/schemas/Plane'
- $ref: '#/components/schemas/Cylinder'
- $ref: '#/components/schemas/Capsule'
- $ref: '#/components/schemas/RectangularCapsule'
- $ref: '#/components/schemas/ConvexHull'
discriminator: shape_type
pose:
$ref: '#/components/schemas/Pose'
margin:
type: number
description: Increases the shape's size in all dimensions. Applied in [mm]. Can be used to keep a safe distance to the shape.
format: float
default: 0
required:
- shape
ColliderDictionary:
type: object
title: ColliderDictionary
description: A collection of identifiable colliders.
additionalProperties:
$ref: '#/components/schemas/Collider'
Link:
type: object
title: Collision Motion Group Link
additionalProperties:
$ref: '#/components/schemas/Collider'
LinkChain:
title: Link Chain
type: array
description: |
A link chain is a kinematic chain of links that is connected via joints.
A motion group can be used to control the motion of the joints in a link chain.
A link is a group of colliders that is attached to the link reference frame.
The reference frame of a link is obtained after applying all sets of Denavit-Hartenberg-parameters from base to (including) the link index.
This means that the reference frame of the link is on the rotation axis of the next joint in the kinematic chain.
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:
- Origin >> Mounting >> Base >> (CRF Base) Joint 0 >> Link 0 >> (CRF Link 0) Joint 1 >> Link 1 >> (CRF Link 1) Flange (CRF Tool) >> TCP
Adjacent links in the kinematic chain of the motion group are not checked for mutual collision.
items:
$ref: '#/components/schemas/Link'
Tool:
type: object
title: Collision Motion Group Tool
description: |
Defines the shape of a tool.
A tool is a dictionary of colliders.
All colliders that make up a tool are attached to the flange frame of the motion group.
additionalProperties:
$ref: '#/components/schemas/Collider'
CollisionSetup:
title: CollisionSetup
type: object
properties:
colliders:
$ref: '#/components/schemas/ColliderDictionary'
description: |
Colliders are checked against links and tool.
link_chain:
$ref: '#/components/schemas/LinkChain'
description: |
The shape of the motion groups links to validate against colliders.
Indexed along the kinematic chain, starting with a static base shape before first joint.
The base of the motion group is not checked for collision against the environment.
tool:
$ref: '#/components/schemas/Tool'
description: |
Shape of the tool to validate against colliders.
self_collision_detection:
type: boolean
description: |
If true, self-collision detection is enabled for the motion group.
Self-collision detection checks if links in the kinematic chain of the motion group collide with each other.
Adjacent links in the kinematic chain of the motion group are not checked for mutual collision.
The tool is treated like a link at the end of the kinematic chain. It is checked against all links except the last one.
Default is true.
default: true
BusIOsStateEnum:
enum:
- BUS_IOS_STATE_UNKNOWN
- BUS_IOS_STATE_INITIALIZING
- BUS_IOS_STATE_CONNECTED
- BUS_IOS_STATE_DISCONNECTED
type: string
format: enum
description: |
Current state of the BUS input/output service.
BusIOsState:
type: object
required:
- state
properties:
state:
$ref: '#/components/schemas/BusIOsStateEnum'
message:
type: string
description: |
A message providing additional information on the input/output service, e.g., BUS service status, encountered errors.
May be empty if no additional information is available.
IOBooleanValue:
title: IOBooleanValue
required:
- io
- value
- value_type
type: object
properties:
io:
type: string
description: Unique identifier of the input/output.
value:
type: boolean
description: |
Value of a digital input/output.
value_type:
type: string
enum:
- boolean
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
description: Input/Output boolean value representation.
IOIntegerValue:
required:
- value_type
- io
- value
type: object
properties:
io:
type: string
description: Unique identifier of the input/output.
value:
type: string
description: |
Value of an input/output with integer representation.
> The integral value is transmitted as a string to avoid precision loss during conversion to JSON.
> Recommended: Use int64 in your implementation. If you want to interact with int64 in numbers,
> JS bigint libraries can help you to parse the string into an integral value.
value_type:
type: string
enum:
- integer
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
title: IOIntegerValue
IOFloatValue:
required:
- value_type
- io
- value
type: object
properties:
io:
type: string
description: Unique identifier of the input/output.
value:
type: number
description: |
Value of an analog input/output in floating number representation.
format: double
value_type:
type: string
enum:
- float
x-go-type-skip-optional-pointer: true
x-is-discriminator: true
title: IOFloatValue
IOValue:
oneOf:
- $ref: '#/components/schemas/IOBooleanValue'
- $ref: '#/components/schemas/IOIntegerValue'
- $ref: '#/components/schemas/IOFloatValue'
discriminator: value_type
ListIOValuesResponse:
type: array
items:
$ref: '#/components/schemas/IOValue'
description: Array of input/output values.
example:
- io: io1
value: true
value_type: boolean
- io: io2
value: '42'
value_type: integer
- io: io3
value: 3.14
value_type: float
Error:
type: object
required:
- message
properties:
code:
type: string
message:
type: string
SelectIOs:
type: object
required:
- ios
properties:
ios:
type: array
description: Array of input/output identifiers to retrieve the values for.
items:
type: string
update_type:
type: string
description: |
Type of update.
- changes: Only send updates when the value changes.
- full: Send the full list of values at the update rate.
default: full
enum:
- changes
- full
StreamIOValuesResponse:
required:
- io_values
- timestamp
- sequence_number
type: object
properties:
io_values:
type: array
items:
$ref: '#/components/schemas/IOValue'
timestamp:
type: string
format: date-time
description: Timestamp indicating when the represented information was received from the robot controller.
sequence_number:
type: integer
format: int64
minimum: 0
maximum: 4294967295
description: |
Sequence number of the controller state. It starts with 0 upon establishing the connection with a physical controller.
The sequence number is reset when the connection to the physical controller is closed and re-established.
description: Array of input/output values.
example:
io_values:
- io: io1
value: true
value_type: boolean
- io: io2
value: '42'
value_type: integer
- io: io3
value: 3.14
value_type: float
RobotSystemMode:
enum:
- MODE_CONTROLLER_NOT_CONFIGURED
- MODE_INITIALIZING
- MODE_MONITOR
- MODE_CONTROL
- MODE_FREE_DRIVE
type: string
description: |
Defines the current system mode of the robot system, including NOVA communicating with the robot controller.
### MODE_CONTROLLER_NOT_CONFIGURED
No controller with the specified identifier is configured. Call [addRobotController](#/operations/addRobotController) to register a controller.
### MODE_INITIALIZING
Indicates that a connection to the robot controller is established or reestablished in case of a disconnect.
On success, the controller is set to MODE_MONITOR.
On failure, the initialization process is retried until successful or cancelled by the user.
### MODE_MONITOR
Read-only mode with an active controller connection.
- Receives robot state and I/O signals
- Move requests are rejected
- No commands are sent to the controller
### MODE_CONTROL
Active control mode.
**Movement is possible in this mode**
The robot is cyclically commanded to hold its current position.
The robot state is received in sync with the controller cycle.
Motion and jogging requests are accepted and executed.
Input/Output interaction is enabled.
### MODE_FREE_DRIVE
Read-only mode with servo motors enabled for manual movement (Free Drive).
Move requests are rejected.
Not supported by all robots: Use [getSupportedModes](#/operations/getSupportedModes) to check Free Drive availability.
format: enum
OperationMode:
enum:
- OPERATION_MODE_UNKNOWN
- OPERATION_MODE_NO_CONTROLLER
- OPERATION_MODE_DISCONNECTED
- OPERATION_MODE_POWER_ON
- OPERATION_MODE_PENDING
- OPERATION_MODE_MANUAL
- OPERATION_MODE_MANUAL_T1
- OPERATION_MODE_MANUAL_T2
- OPERATION_MODE_AUTO
- OPERATION_MODE_RECOVERY
type: string
format: enum
description: |
Current operation mode of the configured robot controller.
Operation modes in which the attached motion groups can be moved are:
- OPERATION_MODE_MANUAL (if enabling switch is pressed)
- OPERATION_MODE_MANUAL_T1 (if enabling switch is pressed)
- OPERATION_MODE_MANUAL_T2 (if enabling switch is pressed)
- OPERATION_MODE_AUTO (without needing to press enabling switch)
All other modes are considered as non-operational.
SafetyStateType:
enum:
- SAFETY_STATE_UNKNOWN
- SAFETY_STATE_FAULT
- SAFETY_STATE_NORMAL
- SAFETY_STATE_MASTERING
- SAFETY_STATE_CONFIRM_SAFETY
- SAFETY_STATE_OPERATOR_SAFETY
- SAFETY_STATE_PROTECTIVE_STOP
- SAFETY_STATE_REDUCED
- SAFETY_STATE_STOP
- SAFETY_STATE_STOP_0
- SAFETY_STATE_STOP_1
- SAFETY_STATE_STOP_2
- SAFETY_STATE_RECOVERY
- SAFETY_STATE_DEVICE_EMERGENCY_STOP
- SAFETY_STATE_ROBOT_EMERGENCY_STOP
- SAFETY_STATE_VIOLATION
type: string
format: enum
description: |
Current safety state of the configured robot controller.
Operation modes in which the attached motion groups can be moved are:
- SAFETY_STATE_NORMAL
- SAFETY_STATE_REDUCED
All other modes are considered as non-operational.
Joints:
type: array
items:
type: number
format: double
description: |
This structure describes a set of joint values, e.g., positions, currents, torques, of a motion group.
Float precision is the default.
MotionGroupState_JointLimitReached:
type: object
required:
- limit_reached
properties:
limit_reached:
type: array
items:
type: boolean
description: If true, operational (soft) jointLimit is reached for specific joint.
description: |
Indicates which joint of the motion group is in a limit.
If a joint is in its limit, only this joint can be moved. Movements that affect any other joints are not executed.
JoggingRunning:
title: JoggingRunning
type: object
required:
- kind
properties:
kind:
type: string
enum:
- RUNNING
description: |
Jogging is active.
JoggingPausedByUser:
title: JoggingPausedByUser
type: object
required:
- kind
properties:
kind:
type: string
enum:
- PAUSED_BY_USER
description: |
User has paused jogging.
JoggingPausedOnIO:
title: JoggingPausedOnIO
type: object
required:
- kind
properties:
kind:
type: string
enum:
- PAUSED_ON_IO
description: |
Jogging was paused because of an I/O event.
JoggingPausedNearJointLimit:
title: JoggingPausedNearJointLimit
type: object
required:
- kind
- joint_indices
properties:
kind:
type: string
enum:
- PAUSED_NEAR_JOINT_LIMIT
joint_indices:
type: array
items:
type: integer
format: int32
minimum: 0
maximum: 2147483647
description: |
Jogging was paused because a joint is near its limit.
JoggingPausedNearCollision:
title: JoggingPausedNearCollision
type: object
required:
- kind
- description
properties:
kind:
type: string
enum:
- PAUSED_NEAR_COLLISION
description:
type: string
description: |
Jogging was paused because the motion group neared a collision.
JoggingPausedNearSingularity:
title: JoggingPausedNearSingularity
type: object
required:
- kind
- description
properties:
kind:
type: string
enum:
- PAUSED_NEAR_SINGULARITY
description:
type: string
description: |
Jogging was paused because the motion group neared a singularity or the workspace boundary.
JoggingDetails:
title: JoggingDetails
type: object
required:
- state
- kind
properties:
state:
oneOf:
- $ref: '#/components/schemas/JoggingRunning'
- $ref: '#/components/schemas/JoggingPausedByUser'
- $ref: '#/components/schemas/JoggingPausedOnIO'
- $ref: '#/components/schemas/JoggingPausedNearJointLimit'
- $ref: '#/components/schemas/JoggingPausedNearCollision'
- $ref: '#/components/schemas/JoggingPausedNearSingularity'
discriminator: kind
jogger_session_timestamp_ms:
type: integer
format: int64
minimum: 0
maximum: 9223372036854776000
description: |
Timestamp of the current jogger session in milliseconds.
Only waypoint sessions are supported. Other sessions return 0.
> **NOTE**
>
> This field is experimental and its behavior may change in future releases.
kind:
type: string
enum:
- JOGGING
description: |
State of jogging execution.
This state is sent during jogging movement, response-rate closest to the nearest multiple of controller step-rate but not exceeding the configured rate.
The jogging state can be one of the following:
- RUNNING: Jogging is active.
- PAUSED_BY_USER: User has paused jogging.
- PAUSED_NEAR_JOINT_LIMIT: Jogging was paused because a joint is near its limit.
- PAUSED_NEAR_COLLISION: Jogging was paused because the motion group neared a collision.
- PAUSED_NEAR_SINGULARITY: Jogging was paused because the motion group neared a singularity or the workspace boundary.
- PAUSED_ON_IO: Jogging was paused because of an I/O event.
Location:
type: number
format: double
description: |
- The location is a scalar value that defines a position along a path, typically ranging from 0 to `n`,
where `n` denotes the number of motion commands
- Each integer value of the location corresponds to a specific motion command,
while non-integer values interpolate positions within the segments.
- The location is calculated from the joint path
TrajectoryRunning:
title: TrajectoryRunning
type: object
required:
- kind
- time_to_end
properties:
kind:
type: string
enum:
- RUNNING
time_to_end:
type: integer
description: Remaining time in milliseconds (ms) to reach the end of the motion.
format: int64
minimum: 0
maximum: 4294967295
description: |
Trajectory is being executed.
TrajectoryPausedByUser:
title: TrajectoryPausedByUser
type: object
required:
- kind
properties:
kind:
type: string
enum:
- PAUSED_BY_USER
description: |
User has paused execution.
TrajectoryEnded:
title: TrajectoryEnded
type: object
required:
- kind
properties:
kind:
type: string
enum:
- END_OF_TRAJECTORY
description: |
First or last sample (depending on direction) of trajectory has been sent.
TrajectoryWaitForIO:
title: TrajectoryWaitForIO
type: object
required:
- kind
properties:
kind:
type: string
enum:
- WAIT_FOR_IO
description: |
Waiting for an I/O event to start execution.
TrajectoryPausedOnIO:
title: TrajectoryPausedOnIO
type: object
required:
- kind
properties:
kind:
type: string
enum:
- PAUSED_ON_IO
description: |
Execution was paused because of an I/O event.
TrajectoryDetails:
title: TrajectoryDetails
type: object
required:
- trajectory
- location
- state
- kind
properties:
trajectory:
type: str