Cuica API (Version: 0.9.0)

Download OpenAPI specification:Download

Cuica CI Pipeline-Ready Test Fixture API Development version: 2de78572

Auth

Operations related to access tokens and users, prefixed with the endpoint /auth

Get tokens

Get the list of token UUIDs

Authorizations:
bearerAdminAuthcookieAdminAuth

Responses

Response samples

Content type
application/json
{
  • "tokens": [
    ]
}

Create a new token

Create a new token. The limit for tokens across all users is 25.

Authorizations:
bearerAdminAuthcookieAdminAuth
Request Body schema: application/json
label
string

The label to associate with the token

expires
number

The expiration time of the token seconds from now

Responses

Request samples

Content type
application/json
{
  • "label": "my new token",
  • "expires": 1000
}

Response samples

Content type
application/json
{
  • "token": "eyJhbGciOiJIUz...",
  • "uuid": "SRHsEFH64ypAmtSD-QUgUw=="
}

Delete all tokens

Delete all the tokens from the system permanently

Authorizations:
bearerAdminAuthcookieAdminAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Delete a token

Delete a specific token from the system permanently by UUID

Authorizations:
bearerAdminAuthcookieAdminAuth
path Parameters
token-uuid
required
string

The UUID of the token to delete

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get users

Get the list of users on the system

Authorizations:
bearerAdminAuthcookieAdminAuth

Responses

Response samples

Content type
application/json
{
  • "users": [
    ]
}

Create a new user

Create a new user. The limit for users is 10.

Authorizations:
bearerAdminAuthcookieAdminAuth
Request Body schema: application/json
username
string

The username of the new user

fullName
number

The full name of the new user

password
string

The password for the new user

isAdmin
number

Whether the new user should have administrator privileges

Responses

Request samples

Content type
application/json
{
  • "username": "Nena",
  • "fullName": "Gabriele Susanne Kerner",
  • "password": "gg Luftball0n$",
  • "isAdmin": 1
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Delete a user

Delete a specific user from the system permanently by username

Authorizations:
bearerAdminAuthcookieAdminAuth
path Parameters
username
required
string

The username of the user to delete

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Binary Image Programs

Operations related to binary image program history, prefixed with the endpoint /binary-image-programs

Get binary image programs

Get some or all binary image programs. If the filter-by-binary-image query parameter is provided, only binary image programs associated with that binary image will be returned. Use the metadata query parameter to control the amount of detail returned.

Authorizations:
bearerAuthcookieAuth
query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned
filter-by-binary-image
string <uuid>

Optional UUID of the binary image by which to filter the results

Responses

Response samples

Content type
application/json
{
  • "binaryImageProgramsUuids": [
    ]
}

Delete binary image programs

Delete some or all binary image programs. If the filter-by-binary-image query parameter is provided, only binary image programs associated with that binary image will be deleted.

Authorizations:
bearerAuthcookieAuth
query Parameters
filter-by-binary-image
string <uuid>

Optional UUID of the binary image by which to filter the deletions

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get binary image program

Get the data associated with a binary image program by UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-run-uuid
required
any

The test script run UUID

Responses

Response samples

Content type
application/json
{
  • "binaryImagePrograms": {
    }
}

Delete a binary image program

Delete a binary image program by UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-run-uuid
required
any

The test script run UUID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get binary image program stdout

Get the textual output from the binary image program

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-run-uuid
required
any

The test script run UUID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Deployer

Operations related to deployer operations, prefixed with the endpoint /deployer

Set user config

Set the user deployer configuration by deployer type and label.

Authorizations:
bearerAuthcookieAuth
path Parameters
type
required
string (DeployerType)
Enum: "openocd" "avr"

The type of the deployer: [openocd, avr].

label
required
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

The label of the deployer configuration.

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get configuration

Get configuration for a specific deployer type and label

Authorizations:
bearerAuthcookieAuth
path Parameters
type
required
string (DeployerType)
Enum: "openocd" "avr"

The type of the deployer: [openocd, avr].

label
required
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

The label of the deployer configuration.

Responses

Response samples

Content type
application/json
{
  • "label": "jlink",
  • "configData": "#\n# SEGGER J-Link\n#\n# http://www.segger.com/jlink.html\n#\n\nadapter driver jlink\n\n# The serial number can be used to select a specific device in case more than\n# one is connected to the host.\n#\n# Example: Select J-Link with serial number 123456789\n#\n# jlink serial 123456789\n"
}

Remove configuration

Remove user configuration for a specific deployer type and label

Authorizations:
bearerAuthcookieAuth
path Parameters
type
required
string (DeployerType)
Enum: "openocd" "avr"

The type of the deployer: [openocd, avr].

label
required
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

The label of the deployer configuration.

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Add user configuration

Add user configuration for a specific deployer type. The configuration format is specific to the deployer. Some may be proprietary config formats like OpenOCD's or they may be JSON files specific to the cuica which are used to construct the file or files expected by an alternate programmer.

Authorizations:
bearerAuthcookieAuth
path Parameters
type
required
string (DeployerType)
Enum: "openocd" "avr"

The type of the deployer: [openocd, avr].

Request Body schema: application/json
required
label
required
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

config
required
string

Configuration details for the deployer

Responses

Request samples

Content type
application/json
{
  • "label": "jlink_custom",
  • "config": "# My custom OpenOCD script:\\nadapter driver jlink\\n# etc."
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get configurations

Get configurations for a specific deployer type

Authorizations:
bearerAuthcookieAuth
path Parameters
type
required
string (DeployerType)
Enum: "openocd" "avr"

The type of the deployer: [openocd, avr].

Responses

Response samples

Content type
application/json
{
  • "systemConfigLabels": [
    ],
  • "userConfigLabels": [
    ]
}

Remove configurations

Remove all user configurations

Authorizations:
bearerAuthcookieAuth
path Parameters
type
required
string (DeployerType)
Enum: "openocd" "avr"

The type of the deployer: [openocd, avr].

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

DUT

Operations related to DUT operations, prefixed with the endpoint /dut

Program DUT

This requests the programming of the DUT with a binary uploaded to the endpoint using configuration values, if provided, otherwise by using the default configuration values. The configuration values 'DefaultDUTConfig' and 'DefaultDeployerConfig' must be set using SystemSetConfigurationValue prior to using this endpoint if not provided.

Authorizations:
bearerAuthcookieAuth
Request Body schema:
requestUuid
string

The UUID of the request

deployerType
string (DeployerType)
Enum: "openocd" "avr"
dutConfigLabel
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

deployerConfigLabel
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

Responses

Request samples

Content type
{
  • "requestUuid": "string",
  • "deployerType": "openocd",
  • "dutConfigLabel": "string",
  • "deployerConfigLabel": "string"
}

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Restart DUT

Restart the DUT using the default polarity and duration

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Set DUT reset

Set the DUT reset line to the desired active-high level.

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get DUT reset

Get current active-high DUT reset line state.

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "state": true
}

Remove binary image tag

Remove a tag associated with a binary image.

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

tag
required
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

The binary image tag

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Add binary image tag

Add a tag to the binary image

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Request Body schema: application/json
tag
required
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well the exact string '.' or '..'

Responses

Request samples

Content type
application/json
{
  • "label": "special_release"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get binary image tags

Get the list of tags for the binary image

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Responses

Response samples

Content type
application/json
{
  • "tags": [
    ]
}

Remove all binary image tags

Remove all of tags for the binary image

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Program DUT in bank

This programs the DUT with a binary from the binary image bank using the provided configuration values, if specified, otherwise using the default configuration values. The configuration values 'DefaultDUTConfig' and 'DefaultDeployerConfig' must be set using SystemSetConfigurationValue prior to using this endpoint if not provided.

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Request Body schema: application/json
requestUuid
string

The UUID of the request

deployerType
string (DeployerType)
Enum: "openocd" "avr"
dutConfigLabel
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

deployerConfigLabel
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

Responses

Request samples

Content type
application/json
{
  • "requestUuid": "string",
  • "deployerType": "openocd",
  • "dutConfigLabel": "string",
  • "deployerConfigLabel": "string"
}

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Get binary image

Download the binary image from the binary bank matching the label or get metadata

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned

Responses

Response samples

Content type
No sample

Replace binary image

Replace a binary image in the binary bank by binary image uuid.

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Modify binary image metadata

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove binary image

Remove a binary image from the binary bank matching the label.

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Add binary image

Add a binary image to the binary image bank

Authorizations:
bearerAuthcookieAuth
Request Body schema:
requestUuid
string

The UUID of the request

Responses

Request samples

Content type
{
  • "requestUuid": "string"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get binary images

Get the list of binary images in the binary image bank

Authorizations:
bearerAuthcookieAuth
query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned
tag
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

Only return data for binary images having tag

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    }
}

Remove binary images

Remove all binary images out of the binary image bank

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get configuration

Get DUT configuration for a specific deployer type and label

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Responses

Response samples

Content type
application/json
{
  • "label": "rp2040",
  • "configData": "source [find target/swj-dp.tcl]\nsource [find mem_helper.tcl]\n\nset _CHIPNAME rp2040\nset _CPUTAPID 0x01002927..."
}

Remove configuration

Remove user configuration for a specific deployer type and label

Authorizations:
bearerAuthcookieAuth
path Parameters
binary-image-uuid
required
string <uuid>

The UUID of the binary image

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Add user configuration

Add user DUT configuration for a specific deployer type. The configuration format is specific to the DUT. Some may be proprietary config formats like OpenOCD's or they may be JSON files specific to the cuica which are used to construct the file or files expected by an alternate programmer.

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get DUT configurations

Get all configurations for a specific deployer type

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "systemConfigLabels": [
    ],
  • "userConfigLabels": [
    ]
}

Remove configurations

Remove all DUT user configurations

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Fixture

Operations related to fixture operations, prefixed with the endpoint /fixture

Program fixture

Update the fixture firmware with an uploaded signed binary. This is to program custom fixure programs provided by Uatha. Contact info@uatha.com for more information.

Authorizations:
bearerAuthcookieAuth
Request Body schema: multipart/form-data
required
file
required
string <binary>

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Restore fixture

Program the fixture firmware with the version bundled with the system software.

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Restart fixture

Restart the fixture

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Set fixture reset

Set the fixture reset line to the desired level

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get fixture reset

Get current fixture reset line state

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "state": true
}

Get reference test script

Get the reference test script code by label

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "label": "import_example",
  • "scriptData": "import cuica\\nprint(dir(cuica))"
}

Get reference test scripts

Get list of available reference test scripts

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "labels": [
    ]
}

Run debug test scripts

Run the setup and test case debug test scripts

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Get debug test script

Get either the setup or test case test script code

Authorizations:
bearerAuthcookieAuth
path Parameters
setup_or_test_case
required
string (TestScriptType)
Enum: "shared" "test-case"

The type of test script

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Replace debug test script

Replace either the setup or test case test script code

Authorizations:
bearerAuthcookieAuth
Request Body schema:
required
requestUuid
string or null <uuid>
uploadedFilePath
string or null
testScriptText
string or null

Responses

Request samples

Content type
{
  • "testScriptText": "import time\\ntime.sleep(1.0)"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Clear debug test script

Clear either the setup or test case test script code

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Add test script

Add a test script to the test script bank

Authorizations:
bearerAuthcookieAuth
Request Body schema:
requestUuid
string or null <uuid>
uploadedFilePath
string or null
testScriptText
string or null

Responses

Request samples

Content type
{
  • "testScriptText": "import time\\ntime.sleep(1.0)"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test scripts

Get the list of test scripts in the test script bank

Authorizations:
bearerAuthcookieAuth
query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned
tag
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

Only return data for test scripts having tag

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    }
}

Remove test scripts

Remove all test scripts out of the test script bank

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test script

Get test script or test script metadata by test script UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned

Responses

Response samples

Content type
application/json
{
  • "metadata": {
    }
}

Replace test script

Replace test script code by test script UUID

Authorizations:
bearerAuthcookieAuth
Request Body schema:
required
requestUuid
string or null <uuid>
uploadedFilePath
string or null
testScriptText
string or null

Responses

Request samples

Content type
{
  • "testScriptText": "import time\\ntime.sleep(1.0)"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Set test script metadata

Set test script metadata by test script UUID

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
required
requestUuid
string or null <uuid>
version
string or null
label
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "A new name",
  • "version": "v2.0"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove test script

Remove test script by test script UUID

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Add test script tag

Add test script tag by test script UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test script tags

Get the list of tags for the test script

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Responses

Response samples

Content type
application/json
{
  • "tags": [
    ]
}

Remove all test script tags

Remove all test script tags by test script UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove test script tag

Remove a tag associated with a test script.

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

tag
required
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

The test script tag

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Run test script in bank

Run test script by test script UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Check ad hoc test script

Check ad hoc test script without adding to test script bank

Authorizations:
bearerAuthcookieAuth
Request Body schema:
requestUuid
string or null <uuid>
uploadedFilePath
string or null
testScriptText
string or null

Responses

Request samples

Content type
{
  • "testScriptText": "import time\\ntime.sleep(1.0)"
}

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Run ad hoc test script

Run ad hoc test script without adding to the test script bank

Authorizations:
bearerAuthcookieAuth
Request Body schema:
requestUuid
string or null <uuid>
uploadedFilePath
string or null
testScriptText
string or null

Responses

Request samples

Content type
{
  • "testScriptText": "import time\\ntime.sleep(1.0)"
}

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Set GPIO direction

Set GPIO direction to be out or in

Authorizations:
bearerAuthcookieAuth
path Parameters
gpio-index
required
integer (GPIOIndex) [ 0 .. 3 ]

The GPIO index between 0 and 3 inclusive.

Responses

Response samples

Content type
application/json
{
  • "state": true
}

Get GPIO direction

Get current GPIO direction setting

Authorizations:
bearerAuthcookieAuth
path Parameters
gpio-index
required
integer (GPIOIndex) [ 0 .. 3 ]

The GPIO index between 0 and 3 inclusive.

Responses

Response samples

Content type
application/json
{
  • "state": true
}

Set GPIO

Set current GPIO state to high or low

Authorizations:
bearerAuthcookieAuth
path Parameters
gpio-index
required
integer (GPIOIndex) [ 0 .. 3 ]

The GPIO index between 0 and 3 inclusive.

Responses

Response samples

Content type
application/json
{
  • "state": true
}

Get GPIO

Get current GPIO state

Authorizations:
bearerAuthcookieAuth
path Parameters
gpio-index
required
integer (GPIOIndex) [ 0 .. 3 ]

The GPIO index between 0 and 3 inclusive.

Responses

Response samples

Content type
application/json
{
  • "state": true
}

Software

Operations related to system software, prefixed with the endpoint /software

Check for software update

Determine if there is an available update from the public software update web service.

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "success": {
    }
}

Download software update

Download software update

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Install software update

Install the downloaded software update

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Install software image

Install an uploaded software image.

Authorizations:
bearerAdminAuthcookieAdminAuth

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Install USB software image

Install a software image found on an inserted USB drive.

Authorizations:
bearerAdminAuthcookieAdminAuth

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

System

Operations related to the system and settings, prefixed with the endpoint /system

Get request status

This method is used to check on the state of a request which has been accepted. It's to be used for clients which do not wish to have a websocket client and need to poll for the status in order to determine whether a long-running command is still in progress or has completed, as well as whether the command had succeeded.

Authorizations:
bearerAuthcookieAuth
path Parameters
request_uuid
required
string

UUID of the request

Responses

Response samples

Content type
application/json
{
  • "eventType": "commandCompleted",
  • "command": {
    },
  • "result": {
    }
}

Get requests

Get the list of all requests

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "requestUuid": [
    ]
}

Get system configuration

Get the current system configuration values

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "defaultDeployerConfig": "Cuica",
  • "defaultDeployerType": "openocd",
  • "defaultDutConfig": "rp2040",
  • "hostname": "cuica-host",
  • "ntpEnabled": true,
  • "timezone": "America/New_York"
}

Set system configuration

Set one or more system configuration values

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
required
hostname
string (Hostname) ^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$
defaultDeployerType
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

defaultDeployerConfig
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

defaultDutConfig
string (LabelString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well as a single '.' or '..'

ntpEnabled
boolean

NTP is enabled and will use the server specified by 'ntpServer' to maintain the system time

timezone
string

The current timezone

Responses

Request samples

Content type
application/json
{
  • "hostname": "string",
  • "defaultDeployerType": "string",
  • "defaultDeployerConfig": "string",
  • "defaultDutConfig": "string",
  • "ntpEnabled": true,
  • "timezone": "string"
}

Response samples

Content type
application/json
{
  • "defaultDeployerConfig": "Cuica"
}

Delete system configuration

Delete one or more system configuration values and use the factory default instead.

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "defaultDeployerConfig": "Cuica"
}

Get system state

Get the current system state

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "systemState": "initial",
  • "example": null
}

Perform factory reset

Perform a factory reset. NOTE: This will trigger a reboot of the system.

Authorizations:
cookieAdminAuth
Request Body schema: application/json
required
username
required
string

Username of the user initiating the factory reset

password
required
string <password>

Password for authentication

hardReset
required
boolean

Whether to perform a hard reset

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "pa$$word",
  • "hardReset": true
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Set Wifi connection

Set the Wifi connection parameters

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
required
requestUuid
string <uuid>

The request UUID, if any

ssid
string

The Wifi SSID to which the connection will be made

passphrase
string

The Wifi passphrase to use when connecting

Responses

Request samples

Content type
application/json
{
  • "requestUuid": "aa738192-9680-4e5b-bd2e-c0b19364a1df",
  • "ssid": "string",
  • "passphrase": "string"
}

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Forget Wifi connection

Disconnect and clear the Wifi connection parameters

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
optional
requestUuid
string <uuid>

The request UUID, if any

Responses

Request samples

Content type
application/json
{
  • "requestUuid": "aa738192-9680-4e5b-bd2e-c0b19364a1df"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get Wifi SSIDs

Get the last scanned Wifi SSIDs

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "wifiSsids": [
    ]
}

Get Wifi status

Get the current Wifi connection status

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "ssid": "my-wifi",
  • "passphrase": "supersecretpassphrase"
}

Get timezones

Get the list of available timezones

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "timezones": [
    ]
}

Set date/time

Set the date and time of the system

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get date/time

Get the system date and time

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "epoch": 1711120110.569,
  • "local": "2024-03-22T11:08:30-04:00",
  • "utc": "2024-03-22T15:08:30Z"
}

Get memory usage

Get the current memory usage of the system including both RAM and flash memory

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "memoryUsage": {
    }
}

Get system info

Get some basic system info

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "buildVersion": "b1bd359",
  • "lastCommitTime": "2025-02-11T01:07:43-05:00",
  • "version": "1.3.3"
}

Render the currently shown display

Capture the OLED screen buffer and view it

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Set TLS certificate

Set the TLS certificate & key to use for the web interface. NOTE: This will trigger a reboot of the system to use the new certificate and key.

Authorizations:
bearerAdminAuthcookieAdminAuth
Request Body schema: multipart/form-data
required
certificateFile
string <binary>

The certificate file to be uploaded

keyFile
string <binary>

The key file to be uploaded

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Delete TLS certificate

Delete the TLS certificate to use for the web interface and use the factory-installed default instead

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Whoami

Return the username of the caller

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "user": "jenkins"
}

Send system logs

Send the system logs to Uatha LLC to help with debugging and assistance. The back-end service is rate limited.

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Reboot

Reboot the system

Authorizations:
bearerAdminAuthcookieAdminAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Test Cases

Operations related to test cases, prefixed with the endpoint /test-cases

Note: These fields in the specification are not yet implemented: resultsFormat, resultsFile, retries, delay, shouldSkip, timeout

Get test case

Get the test case data

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "specification": [
    ]
}

Replace test case

Replace the test case with another

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Modify test case

Modify test case

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove test case

Remove a test case

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Test Script Runs

Operations related to test script run history, prefixed with the endpoint /test-script-runs

Get test script runs

Get some or all test script runs. If the filter-by-test-script query parameter is provided, only test script runs associated with that test script will be returned. Use the metadata query parameter to control the amount of detail returned.

Authorizations:
bearerAuthcookieAuth
query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned
filter-by-test-script
string <uuid>

Optional UUID of the test script by which to filter the results

Responses

Response samples

Content type
application/json
{
  • "testScriptRunsUuids": [
    ]
}

Delete test script runs

Delete some or all test script runs. If the filter-by-test-script query parameter is provided, only test script runs associated with that test script will be deleted.

Authorizations:
bearerAuthcookieAuth
query Parameters
filter-by-test-script
string <uuid>

Optional UUID of the test script by which to filter the deletions

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test script run

Get the data associated with a test script run by UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-run-uuid
required
any

The test script run UUID

Responses

Response samples

Content type
application/json
{
  • "testScriptRuns": {
    }
}

Delete a test script run

Delete a test script run by UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-run-uuid
required
any

The test script run UUID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test script run stdout

Get the print() and other console data from the test script run

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-run-uuid
required
any

The test script run UUID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test script run results

Get the results from the test script run

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-run-uuid
required
any

The test script run UUID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Test Suite Runs

Operations related to test suite run history, prefixed with the endpoint /test-suite-runs

Get test suite runs

Get all test suite runs

Authorizations:
bearerAuthcookieAuth
query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned
filter-by-test-suite
string <uuid>

Optional UUID of the test suite by which to filter the results

Responses

Response samples

Content type
application/json
{
  • "testSuiteRunsUuids": [
    ]
}

Delete test suite run

Delete some or all test suite runs

Authorizations:
bearerAuthcookieAuth
query Parameters
filter-by-test-suite
string <uuid>

Optional UUID of the test suite by which to filter the deletions

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test suite run

Get test suite run details by UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-suite-run-uuid
required
any

The test suite run UUID

Responses

Response samples

Content type
application/json
{
  • "testSuiteRuns"": {
    }
}

Delete test suite run

Delete a test suite run by UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-suite-run-uuid
required
any

The test suite run UUID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Test Suites

Operations related to test suite operations, prefixed with the endpoint /test-suites

Note: These fields in the specification are not yet implemented: timeout

Add test suite

Add a test suite to the test script bank

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
requestUuid
string or null <uuid>
uploadedFilePath
string or null
object or null

Responses

Request samples

Content type
application/json
{
  • "requestUuid": "aa738192-9680-4e5b-bd2e-c0b19364a1df",
  • "uploadedFilePath": "string",
  • "specification": {
    }
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test suites

Get the list of test suites

Authorizations:
bearerAuthcookieAuth
query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned
tag
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

Only return data for test scripts having tag

Responses

Response samples

Content type
application/json
{
  • "testSuites": {
    }
}

Remove test suites

Remove all test suites

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Add test suite bundle

Add a test suite from a bundle file. The bundle is a TAR file which contains the specification file, and the binary images and test scripts added by the specification in the addBianries and addScripts blocks. The organization of the TAR file is:

  .
  ├── binary_image1.elf
  ├── binary_image2.elf
  ├── ...
  ├── test_script1.py
  ├── test_script2.py
  ├── ...
  └── spec.yaml
Authorizations:
bearerAuthcookieAuth
Request Body schema: multipart/form-data
file
required
string <binary>

The test suite bundle file

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test suite

Get test suite specification by test suite UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

query Parameters
metadata
string
Enum: "none" "basic" "extended"

The level of metadata to return. Defaults to none. Levels:

  • none: - only the UUIDs are returned
  • basic: - the basic metadata such as label are returned
  • extended: - the full metadata plus the basic metadata is returned

Responses

Response samples

Content type
application/json
{
  • "testSuites": {
    }
}

Replace test suite

Replace test suite by test suite UUID

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
required
requestUuid
string or null <uuid>
uploadedFilePath
string or null
specification
object or null

See schema in post endpoint documentation

Responses

Request samples

Content type
application/json
{
  • "requestUuid": "aa738192-9680-4e5b-bd2e-c0b19364a1df",
  • "uploadedFilePath": "string",
  • "specification": { }
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Modify test suite

Modify test suite by test suite UUID

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
required
requestUuid
string or null <uuid>
version
string or null
label
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "A new name",
  • "version": "v2.0"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove test suite

Remove test suite by test suite UUID

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Run test suite

Run test suite by test suite UUID

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Responses

Response samples

Content type
application/json
{
  • "requestUuid": "ba2f1fba-3ddc-11ee-b03a-ebf94000f79a"
}

Add test suite tag

Add a tag to the test suite

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Request Body schema: application/json
tag
required
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

A URL-encoded string at most 50 characters (urlencoded in paths), excluding '/', '?', '#', '&', and '', as well the exact string '.' or '..'

Responses

Request samples

Content type
application/json
{
  • "label": "special_release"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test suite tags

Get the list of tags for the test suite

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Responses

Response samples

Content type
application/json
{
  • "tags": [
    ]
}

Remove all test suite tags

Remove all of tags for the test suite

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove test suite tag

Remove a tag associated with a test suite

Authorizations:
bearerAuthcookieAuth
path Parameters
test-script-uuid
required
string <uuid>

The UUID of the test script

tag
required
string (TagString) ^([^\u002F\u003F\u0023\u0026\u005C]){1,50}$

The test script tag

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get test cases

Get test cases composing test suite

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "testCaseUuids": [
    ]
}

Add test case

Add test case to test suite

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
required
Array
schemaVersion
string

Represents which parser to use

description
string

Description of the test case

object

A reference to a previously imported binary by label (exclusive, if both are specified, uuid is used)

object

The deployment config to use for this case; if there is no deployment to be done, omit it

object

A reference to a previously imported setup script by label (exclusive, if both are specified, uuid is used)

object

A reference to a previously imported script by label or by uuid (exclusive, if both are specified, uuid is used)

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "error": {
    }
}

Remove test case

Remove test case from test suite

Authorizations:
bearerAuthcookieAuth

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Set test case order

Reorder the test cases within a test suite

Authorizations:
bearerAuthcookieAuth
Request Body schema: application/json
required
testCaseUuids
Array of strings <uuid> [ items <uuid > ]

The test cases within the test suite, in execution order

Responses

Request samples

Content type
application/json
{
  • "testCaseUuids": [
    ]
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Other

Websocket endpoint

Connect to this WebSocket to receive asynchronous events. For commands which aren't serviced immediately, a 202 is returned along with a request UUID. The request UUID can then be either checked synchronously, i.e. polled, via the GET /system/request/{uuid} endpoint or by waiting for the CommandCompleted websocket event. A request UUID can also be provided to those endpoints in order to add flexibility to the client logic.

Some events are also generated when system state changes or when a record has been added, modified, or deleted, as well when a spontaneous system state change occurs, e.g. Wifi signal strength change, so that all clients are aware of the state change.

See the documentation for the individual endpoints to see which events they may trigger.

Every event has an eventType field which can be used to route messages in client applications.

Event: commandCompleted

{
  "eventType": "commandCompleted",
  "command": {
    // Command structure here
  },
  "result": {
    // CommandResult structure here
  }
}

Event: synchronousCommandCompleted

{
  "eventType": "synchronousCommandCompleted",
  "command": {
    // Command structure here
  },
  "result": {
    // CommandResult structure here
  },
  "resultData": {
    // SynchronousCommandResultData structure here (if any)
  }
}

Event: systemShutdownBegun

{
  "eventType": "systemShutdownBegun"
}

Event: notificationPosted

{
  "eventType": "notificationPosted",
  "uuid": "uuid-value",
  "text": "Notification text",
  "severity": "severity-value",
  "time": 1234567890
}

Event: programmingStatusChanged

{
  "eventType": "programmingStatusChanged",
  "status": "status-value",
  "message": "Status message",
  "requestUuid": "uuid-value"
}

Event: programmingOutputAdded

{
  "eventType": "programmingOutputAdded",
  "output": "Output string",
  "requestUuid": "uuid-value",
  "cumulativeOutputSize": 1234
}

Event: factoryResetButtonPress

{
  "eventType": "factoryResetButtonPress",
  "holdCount": 10
}

Event: factoryResetButtonRelease

{
  "eventType": "factoryResetButtonRelease",
  "holdCount": 10
}

Event: testSuitesAdded

{
  "eventType": "testSuitesAdded",
  "requestUuid": "uuid-value",
  "testSuiteUuids": ["uuid-value1", "uuid-value2"]
}

Event: testSuitesChanged

{
  "eventType": "testSuitesChanged",
  "requestUuid": "uuid-value",
  "testSuiteUuids": ["uuid-value1", "uuid-value2"]
}

Event: testSuitesRemoved

{
  "eventType": "testSuitesRemoved",
  "requestUuid": "uuid-value",
  "testSuiteUuids": ["uuid-value1", "uuid-value2"]
}

Event: testSuiteRunStarted

{
  "eventType": "testSuiteRunStarted",
  "requestUuid": "uuid-value",
  "testSuiteLabel": "label",
  "testSuiteUuid": "uuid-value",
  "testSuiteRunUuid": "uuid-value"
}

Event: testSuiteRunCompleted

{
  "eventType": "testSuiteRunCompleted",
  "requestUuid": "uuid-value",
  "testSuiteUuid": "uuid-value",
  "testSuiteRunUuid": "uuid-value",
  "result": "run-result-value"
}

Event: testSuiteRunRemoved

{
  "eventType": "testSuiteRunRemoved",
  "requestUuid": "uuid-value",
  "testSuiteRunUuid": "uuid-value"
}

Event: testCaseRunStarted

{
  "eventType": "testCaseRunStarted",
  "requestUuid": "uuid-value",
  "testSuiteUuid": "uuid-value",
  "testSuiteRunUuid": "uuid-value",
  "testCaseUuid": "uuid-value",
  "testCaseRunUuid": "uuid-value",
  "testCaseIndex": 1,
  "numTestCases": 10
}

Event: testCaseRunCompleted

{
  "eventType": "testCaseRunCompleted",
  "requestUuid": "uuid-value",
  "testSuiteUuid": "uuid-value",
  "testSuiteRunUuid": "uuid-value",
  "testCaseUuid": "uuid-value",
  "testCaseRunUuid": "uuid-value",
  "result": "run-result-value"
}

Event: binaryImagesAdded

{
  "eventType": "binaryImagesAdded",
  "requestUuid": "uuid-value",
  "binaryImageUuids": ["uuid-value1", "uuid-value2"]
}

Event: binaryImagesChanged

{
  "eventType": "binaryImagesChanged",
  "requestUuid": "uuid-value",
  "binaryImageUuids": ["uuid-value1", "uuid-value2"]
}

Event: binaryImagesRemoved

{
  "eventType": "binaryImagesRemoved",
  "requestUuid": "uuid-value",
  "binaryImageUuids": ["uuid-value1", "uuid-value2"]
}

Event: binaryImageProgramStarted

{
  "eventType": "binaryImageProgramStarted",
  "requestUuid": "uuid-value",
  "binaryImageUuid": "uuid-value",
  "binaryImageProgramUuid": "uuid-value",
  "expectedTotalOutputSize": 1234
}

Event: binaryImageProgramCompleted

{
  "eventType": "binaryImageProgramCompleted",
  "requestUuid": "uuid-value",
  "binaryImageUuid": "uuid-value",
  "binaryImageProgramUuid": "uuid-value",
  "binaryImageProgramResult": "program-result-value",
  "stdout": "output string",
  "totalOutputSize": 1234
}

Event: testCasesAdded

{
  "eventType": "testCasesAdded",
  "requestUuid": "uuid-value",
  "testCaseUuids": ["uuid-value1", "uuid-value2"]
}

Event: testCasesChanged

{
  "eventType": "testCasesChanged",
  "requestUuid": "uuid-value",
  "testCaseUuids": ["uuid-value1", "uuid-value2"]
}

Event: testCasesRemoved

{
  "eventType": "testCasesRemoved",
  "requestUuid": "uuid-value",
  "testCaseUuids": ["uuid-value1", "uuid-value2"]
}

Event: deploymentConfigsChanged

{
  "eventType": "deploymentConfigsChanged",
  "requestUuid": "uuid-value"
}

Event: testScriptProgressChanged

{
  "eventType": "testScriptProgressChanged",
  "requestUuid": "uuid-value",
  "testSuiteUuid": "uuid-value",
  "testSuiteRunUuid": "uuid-value",
  "testScriptStatus": "status-value",
  "checkpoint": 10,
  "maxCheckpoint": 100
}

Event: testScriptCheckCompleted

{
  "eventType": "testScriptCheckCompleted",
  "requestUuid": "uuid-value",
  "errorString": "error string",
  "lineNumber": 0,
  "bytesUsed": 123,
  "bytesTotal": 1000
}

Event: testScriptRunStarted

{
  "eventType": "testScriptRunStarted",
  "requestUuid": "uuid-value",
  "setupScriptUuid": "uuid-value",
  "testCaseScriptUuid": "uuid-value",
  "setupScriptRunUuid": "uuid-value",
  "testCaseScriptRunUuid": "uuid-value"
}

Event: testScriptRunCompleted

{
  "eventType": "testScriptRunCompleted",
  "requestUuid": "uuid-value",
  "setupScriptUuid": "uuid-value",
  "testCaseScriptUuid": "uuid-value",
  "setupScriptRunUuid": "uuid-value",
  "testCaseScriptRunUuid": "uuid-value",
  "testScriptRunResult": "run-result-value",
  "stdout": "output string"
}

Event: systemStateChanged

{
  "eventType": "systemStateChanged",
  "systemState": "state-value"
}

Event: systemOperationChanged

{
  "eventType": "systemOperationChanged",
  "requestUuid": "uuid-value",
  "testSuiteUuid": "uuid-value",
  "testSuiteRunUuid": "uuid-value",
  "testCaseUuid": "uuid-value",
  "testCaseRunUuid": "uuid-value",
  "systemOperation": "operation-value"
}

Event: wifiServicesChanged

{
  "eventType": "wifiServicesChanged",
  "wifiSsids": ["ssid1", "ssid2"]
}

Event: wifiStatusChanged

{
  "eventType": "wifiStatusChanged",
  "connectionStatus": "status-value",
  "activeWifiSsid": "ssid",
  "wifiSignalStrength": "signal-strength-value"
}

Event: memoryUsageChanged

{
  "eventType": "memoryUsageChanged",
  "memoryUsage": {
    // MemoryUsage structure here
  }
}

Event: systemConfigurationChanged

{
  "eventType": "systemConfigurationChanged",
  "requestUuid": "uuid-value",
  "configurationValues": {
    "config-key1": "value1",
    "config-key2": "value2"
  }
}

Example of receiving a websocket event using python:

import json
import websocket
api_key = '<my-api-token>'
certificate_chain = 'my-chain.pem'
headers = {'Authorization': f'Bearer {api_key}'}
websocket_connection = websocket.create_connection(f'wss://cuica-host/ws',\
    sslopt={'ca_certs': certificate_chain)}, header=headers)

websocket_connection.timeout = 30

try:
  websocket_result = websocket_connection.recv()
  websocket_json_result = json.loads(websocket_result)
  print(f'Received: {websocket_json_result}')
except websocket._exceptions.WebSocketTimeoutException as _:
  print(f'Websocket event never showed up')

websocket_connection.close()

Sample output:

Received: {'eventType': 'wifiStatusChanged', 'connectionStatus': 'wifiConnected', 'activeWifiSsid': 'my-wifi-router', 'wifiSignalStrength': 'veryGood'}
Authorizations:
bearerAuthcookieAuth