Nerve Management System API

REST API of the Nerve Management System, the cloud-hosted control plane for Nerve edge nodes. Covers authentication and MFA, node registration and lifecycle, workload and workload-version management (Docker, docker-compose, CODESYS, VM), deployment and workload control, labels, LDAP integration, Nerve DNA declarative node configuration, remote connections, notifications, the Nerve Docker registry, node/cloud updates and usage reports. Session-cookie / sessionId authentication with basic and bearer variants; OpenAPI 3.0.3, 151 operations.

Operations 151

POST /nerve/workload/controller Control life-cycle and workflow of the deployed workload #
GET /nerve/workload/node/{serialNumber}/devices Get list of deployed workloads on the selected node #
DELETE /nerve/workload/{workloadId} Delete the selected workload #
POST /nerve/v2/workloads Create workload #
PATCH /nerve/v2/workloads Update workload and version data #
GET /nerve/v2/workloads Get list of all workloads #
GET /nerve/v2/workloads/{workloadId} Get workload selected by ID #
PATCH /nerve/v2/workloads/{workloadId} Update workload data #
DELETE /nerve/v2/workloads/{workloadId}/versions/{versionId} Delete selected workload version #
POST /nerve/v3/workloads Create workload #
GET /nerve/v3/workloads Get list of all workloads #
GET /nerve/v3/workloads/{workloadId} Get data of workload selected by ID #
PATCH /nerve/v3/workloads/{workloadId} Update data of workload selected by ID #
DELETE /nerve/v3/workloads/{workloadId} Delete workload selected by ID #
POST /nerve/v3/workloads/compose Upload and validate docker-compose file #
GET /nerve/v3/workloads/compose/{workloadId}/versions/{versionId}/files/{fileId} Get content of the selected docker-compose file as string #
POST /nerve/v3/workloads/{workloadId}/versions Add new version of the selected workload #
GET /nerve/v3/workloads/{workloadId}/versions Get list of versions of the selected workload #
DELETE /nerve/v3/workloads/{workloadId}/versions/{versionId} Delete version of the selected workload #
GET /nerve/v3/workloads/{workloadId}/versions/{versionId} Get version data of the selected workload #
PATCH /nerve/v3/workloads/{workloadId}/versions/{versionId} Update version data of the selected workload #
POST /nerve/v3/workloads/{workloadId}/versions/{versionId}/export-init Initiates the export of a workload version that uses MS Registry as a storage #
GET /nerve/v3/workloads/{workloadId}/versions/{versionId}/export-status Gets the export status of workload version using MS Registry as storage #
POST /nerve/v3/workloads/{workloadId}/versions/{versionId}/files Add file to the selected workload version #
GET /nerve/v3/workloads/{workloadId}/versions/{versionId}/files Get list of files for the selected version of the selected workload #
GET /nerve/v3/workloads/{workloadId}/versions/{versionId}/files/{fileId} Get information of the selected file #
PATCH /nerve/v3/workloads/{workloadId}/versions/{versionId}/files/{fileId} Edit the selected file #
DELETE /nerve/v3/workloads/{workloadId}/versions/{versionId}/files/{fileId} Delete the selected file #
PATCH /nerve/v3/workloads/{workloadId}/versions/{versionId}/files/{fileId}/cancel Cancel download of the selected file #
PATCH /nerve/v3/workloads/{workloadId}/versions/{versionId}/files/cancel Cancel all file downloads in-progress #
GET /nerve/v3/workloads/{workloadId}/versions/{versionId}/unique-info Get data which identify the selected workload #
POST /nerve/v3/workloads/{workloadId}/versions/{versionId}/define-all-files Define all files for specified workload version #
PUT /nerve/v3/workloads/{workload_id}/versions/{version_id}/import-remote-connections Import remote connections on selected node #
GET /nerve/v3/workloads/{workload_id}/versions/{version_id}/export-remote-connections Export remote connections #
POST /nerve/registry/images List images #
POST /nerve/registry/image-tags List tags for a specific image #
POST /nerve/registry/events Receive Docker Registry Notifications #
GET /nerve/registry/auth Authenticate Docker Registry #
POST /nerve/registry/check-images-status List of images with their statuses #
POST /nerve/registry/delete-image-tag Delete image tag from the registry #
POST /nerve/node Create a node #
GET /nerve/node Get the selected node #
GET /nerve/node/{nodeId} Get data of the selected node #
DELETE /nerve/node/{serialNumber} Delete the selected node #
POST /nerve/node/{serialNumber}/reboot Reboot the selected node #
GET /nerve/nodes/filtered/list Get a list of filtered and sorted nodes #
GET /nerve/nodes/deploy/{workloadId}/{versionId} Get a list of nodes for a possible deployment of the selected workload version #
POST /nerve/node/applyMonitoringAndLoggingSettings/{serialNumber} Set monitoring and logging configuration of the selected node #
GET /nerve/node/monitoringAndLoggingSettings/{serialNumber} Get the monitoring and logging configuration of the selected node #
GET /nerve/v2/node/{serialNumber}/versions/{versionId}/activity-logs Get all activity logs #
GET /nerve/v2/node/{serialNumber}/versions/{versionId}/activity-logs/download Get activity logs for a single workload #
GET /nerve/v2/node/{serialNumber}/workloads/activity-logs/download Get activity logs for all workloads of a single node #
GET /nerve/v2/node/logging-monitoring/{serialNumber} Get the monitoring and logging configuration #
POST /nerve/v2/node/logging-monitoring/{serialNumber} Set monitoring and logging configuration #
PUT /nerve/v2/node/{serial_number}/import-remote-connections Import remote connections on selected node #
GET /nerve/v2/node/{serial_number}/export-remote-connections Export remote connections data with file #
GET /nerve/v2/node/{serial_number}/users Get a list of all users from the selected node #
DELETE /nerve/v2/node/{serial_number}/users Delete all user accounts from a node, or an account specified by username #
DELETE /nerve/v2/node/{serialNumber}/docker-resources/images/unused Removes unused Docker images from the Node #
GET /nerve/v2/node/{serialNumber}/docker-resources/volumes Get a list of all volumes from the selected node #
DELETE /nerve/v2/node/{serialNumber}/docker-resources/volumes/{volumeName} Delete a volume from the selected node #
POST /nerve/v2/node/{serialNumber}/docker-resources/volumes/{volumeName}/import Import data to a volume on the selected node #
POST /nerve/v2/node/{serialNumber}/docker-resources/volumes/{volumeName}/export Initiate volume export from the selected node #
POST /nerve/v2/node/{serialNumber}/docker-resources/volumes/{volumeName}/export/cancel Cancel volume export that is in progress #
POST /nerve/v2/node/{serialNumber}/docker-resources/volumes/{volumeName}/import/cancel Cancel volume import that is in progress #
PUT /nerve/v2/node/{serialNumber}/production-mode Enable or disable production mode for the node #
POST /nerve/labels Create label #
DELETE /nerve/labels/{label_id} Delete the selected label #
GET /nerve/labels/{label_id} Get the selected label #
PATCH /nerve/labels/{label_id} Update the selected label #
GET /nerve/labels/list Get a list of labels #
GET /nerve/labels/group Get labels grouped by their keys #
POST /nerve/nodes/{serialNumber}/workloads/{deviceId}/configurations Apply configuration to docker workload #
POST /nerve/upload-volume-backup Upload a volume backup zip archive from the node to the MS #
GET /nerve/dna/{serialNumber}/target Get target node configuration #
PUT /nerve/dna/{serialNumber}/target Apply target configuration to the selected node #
GET /nerve/dna/{serialNumber}/status Get configuration status #
PATCH /nerve/dna/{serialNumber}/target/cancel Cancel DNA configuration in progress #
GET /nerve/dna/{serialNumber}/current Get current node configuration #
PUT /nerve/dna/{serialNumber}/target/re-apply Re-apply target configuration to the selected node #
PUT /nerve/service-os-dna/{serialNumber}/target Apply target service os configuration #
GET /nerve/service-os-dna/{serialNumber}/target Get target node configuration of Service OS DNA #
GET /nerve/service-os-dna/{serialNumber}/status Get Service OS DNA configuration status #
PATCH /nerve/service-os-dna/{serialNumber}/target/cancel Cancel Service OS DNA configuration in progress #
GET /nerve/service-os-dna/{serialNumber}/current Get current Service OS DNA configuration #
PUT /nerve/service-os-dna/{serialNumber}/target/re-apply Re-apply target configuration #
GET /nerve/notifications/activeNoAuth get active notification without authentication #
GET /nerve/notifications/active get active notification with authentication #
GET /nerve/notifications Get list of all notifications #
POST /nerve/notifications Create new notification #
GET /nerve/notifications/{notification_id} Get one specific notification #
DELETE /nerve/notifications/{notification_id} Delete specific notification #
PUT /nerve/notifications/{notification_id} Update specific notification #
GET /nerve/capabilities/{capability_name_param} Fetch capability by name #
POST /mqtt/auth Authentication of the MQTT client #
POST /mqtt/acl Checks if MQTT client is authorized to publish and subscribe to a specific topic #
POST /mqtt/actions API for MQTT broker to notify Management system of client subscription #
GET /nerve/usage-reports/single Retrieve single usage report #
GET /nerve/usage-reports Retrieve usage reports #
GET /nerve/usage-reports/configuration Retrieve usage reports configuration #
POST /nerve/usage-reports/configuration Update Usage Reports Configuration #
POST /nerve/remote-connections/connect Connect remote connections #
GET /nerve/active-remote-connections Get list of active remote connections #
POST /nerve/active-remote-connections/terminate-connections Terminate active remote connections #
DELETE /nerve/active-remote-connections/cancel-connection-approval/{connectionRequestUid} Cancel pending approval of specific remote connection #
POST /nerve/guacamole-connection-tab/{authToken}/{identifier} Guacamole tab status #
GET /nerve/v2/active-remote-connections/tunnel/{activeConnectionId}/{requestUid}/{generateSessionId} Get active connection by id and rtem-session if it is required #
POST /nerve/v2/remote-connections-file/{target}/validate Validate remote connection yaml file on node or workload #
POST /nerve/data-exchange/cached-data Retrieve cached data from the Cloud server #
POST /nerve/data-exchange/node-data Retrieve node data from the Cloud server #
POST /nerve/data-exchange/set-node-data Update node data from the Cloud server #
POST /nerve/data-exchange/keep-emitting-updates Instruct the node to resume emitting updates #
POST /nerve/data-exchange/start-emitting-updates Instruct the node to begin emitting updates #
GET /nerve/ldap/active Get status of LDAP configuration #
POST /nerve/ldap/connection/test Test LDAP connection #
GET /nerve/ldap/default Get default LDAP #
GET /nerve/ldap Retrieve LDAP configuration details #
POST /nerve/ldap Create LDAP connections #
POST /nerve/ldap/query/groups LDAP server for groups with desired configuration #
POST /nerve/ldap/query/users LDAP server for users with desired configuration #
PATCH /nerve/ldap/{name}/active Activate or deactivate LDAP #
PUT /nerve/ldap/{file} Update LDAP connections #
POST /nerve/ldap/sync Synchronization LDAP users #
GET /auth/log-agents Verify that a log agent has access to logs #
POST /auth/login Login user #
GET /auth/logout Logout user #
POST /auth/mfa/activate/{activationToken} Activate user multi-factor authentication #
GET /auth/mfa/generate/{generationToken} Generates user's multi-factor authentication secret and QR code URL #
GET /auth/mfa/is-enabled Check if multi-factor authentication is enabled on Management System #
POST /auth/mfa/reset/{resetToken} Reset user multi-factor authentication secret #
POST /auth/mfa/validate Validate multi-factor authentication code and login user #
GET /auth/password/is-reset/{resetToken} Check if user password is already reset #
POST /auth/password/reset/{resetToken} Reset user password #
POST /auth/profile/activate/{activationToken} Activate user profile and set password #
GET /auth/profile/is-activated/{activationToken} Check if user profile is already activated #
POST /auth/reset-credentials Request a reset credentials email #
GET /auth/verify-user-access Verify that user has a specific permission #
GET /auth/verify-user-session Verify that user has access to OpenSearch dashboards #
GET /auth/wstunnel-cli Verify that the wstunnel-cli is authorized to open a tunnel #
GET /auth/password-policy Returns the current password policy settings #
GET /nerve/update/cloud/current-version Get the current version of the cloud #
GET /nerve/update/cloud/incompatible-nodes/{version} Get the list of incompatible nodes compared to the specific MS version #
GET /nerve/update/local-node-update Get the list of available node update versions #
GET /nerve/update/node/details-by-name Get the details of a node update version #
GET /nerve/update/fetch-node-updates Trigger fetch of node updates from the NSC #
GET /nerve/update/cloud/fetch-available-versions Trigger fetch of available cloud update versions from the NSC #
GET /nerve/update/cloud/available-versions Get available MS update versions for current cloud version #
POST /nerve/internal-test-api/config/{parameter}/reload Reload configuration for a specific parameter from `configuration.yaml` #
PATCH /nerve/internal-test-api/config/{parameter} Modify configuration for a specific parameter from `configuration.yaml` file #
GET /nerve/internal-test-api/config/{parameter} Get the configuration for a specific parameter from `configuration.yaml` file #
POST /nerve/internal-test-api/mqtt Publish an MQTT message for testing #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nerve-management-system-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tttech-nerve-management-system-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: 3.1.0
  description: 'Nerve Management System API to manage: -labels -nodes -workloads -notifications -capabilities'
  title: Nerve Management System API
  contact:
    name: Nerve support
    email: support@tttech-industrial.com
servers:
- url: https://trynerve1.nerve.cloud
tags:
- name: LABEL
  description: The operations to manage labels
- name: NODE
  description: The operations to manage nodes v1.
- name: NODE_v2
  description: The operations to manage nodes v2.
- name: WORKLOAD
  description: The operations to manage workloads v1.
- name: WORKLOAD_v2
  description: The operations to manage workloads v2.
- name: WORKLOAD_v3
  description: The operations to manage workloads v3.
- name: WL_VERSION_v2
  description: The operations to manage specific versions of workloads v2
- name: WL_VERSION_v3
  description: The operations to manage specific versions of workloads v3
- name: WL_VERSION_FILE
  description: The operations to manage workload files of specific versions v3
- name: DOCKER_COMPOSE_FILE
  description: The operations to manage docker compose file
- name: WORKLOAD_CONFIGURATION
  description: The operations to manage workload configurations
- name: DNA
  description: The operations to manage workload DNA configuration
- name: SERVICE-OS-DNA
  description: The operations to manage Service OS DNA configuration
- name: NOTIFICATION
  description: The operations to manage notifications.
- name: CAPABILITIES
  description: The operations to manage node capabilities
- name: EMQX
  description: The operations to manage authentication and authorization of MQTT clients
- name: USAGE_REPORTS
  description: The operations to manage usage reports
- name: REMOTE_CONNECTIONS
  description: The operations to manage remote connections.
- name: DATA EXCHANGE
  description: The operations to manage node data exchange.
- name: NERVE_DOCKER_REGISTRY
  description: The operations to manage Docker registry
- name: LDAP
  description: The operations to manage LDAP users
- name: AUTH
  description: The operations to manage authentication and authorization of MS users
- name: NERVE_UPDATE
  description: The operations to manage Nerve updates
- name: INTERNAL_TEST_API
  description: Operations intended solely for testing, used to validate system behavior under invalid or edge-case data scenarios. Not for production use.
paths:
  /nerve/workload/controller:
    post:
      summary: Control life-cycle and workflow of the deployed workload
      operationId: managing_deployed_workload
      tags:
      - WORKLOAD
      description: Used to control life-cycle and workflow of the deployed workload. With this request the command is only sent to OVDM, the result of the operation is received via mqtt.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Request body for controlling the life-cycle and workflow of the deployed workload
              required:
              - deviceId
              - serialNumber
              - command
              - sessionToken
              properties:
                deviceId:
                  type: integer
                  format: int32
                  description: Id of the deployed workload
                  minimum: 100
                  maximum: 1000
                serialNumber:
                  description: The serial number of the node
                  type: string
                  maxLength: 12
                  minLength: 12
                  pattern: ([A-Z0-9]){12}
                sessionToken:
                  description: Session token of the user who initiated the action
                  minLength: 1
                  maxLength: 1000
                  type: string
                  pattern: ^[\x20-\x7E\t\n\r]*$
                command:
                  type: string
                  description: Command to be executed
                  enum:
                  - START
                  - STOP
                  - SUSPEND
                  - RESUME
                  - RESTART
                  - UNDEPLOY
                workloadId:
                  description: ID (from Management System) of the entry
                  type: string
                  pattern: ^[0-9a-fA-F]{24}$
                  minLength: 24
                  maxLength: 24
                versionId:
                  description: ID (from Management System) of the entry
                  type: string
                  pattern: ^[0-9a-fA-F]{24}$
                  minLength: 24
                  maxLength: 24
                removeImages:
                  type: boolean
                  description: 'Specifies whether Docker and Docker Compose images associated with the deployed workload

                    should be removed during the undeploy process.

                    - If set to **true**, all images linked to the workload will be deleted from the system.

                    - If set to **false**, the images will be retained.

                    This setting applies specifically to workloads using the Management System Registry.

                    '
            examples:
              wl_control_req:
                value:
                  command: UNDEPLOY
                  serialNumber: MFN111111111
                  deviceId: 895
                  sessionToken: 62569e8b448cd10020407243-9fa80007fef2eb190c876038527d8fd3e2afb0ece03402a19563a4f754107e9e
                  workloadId: 62e8e8ef39c508006b8c5231
                  versionId: 62e8e8ef39c508006b8c5232
      x-permissions:
      - WORKLOAD:CONTROL
      responses:
        '200':
          description: Request successfully executed
          content:
            application/json:
              schema:
                description: Message that the command has been accepted for processing
                oneOf:
                - type: string
                - type: object
                  maxProperties: 0
              examples:
                wl_control_ok:
                  value: OK
        '400':
          description: UNDEPLOY command cannot be executed, workload backup is in progress
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                wl_undeploy_not_possible:
                  value:
                    errorCode: nerve_workload_140
                    httpCode: '400'
                    message: The workload cannot be undeployed, a backup is in progress
        '403':
          description: You are not authorized to perform this operation
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                not_authorized:
                  value:
                    errorCode: '00003'
                    httpCode: '403'
                    message: You are not authorized
        '404':
          description: Request failed, this is the response received when node with specified serial number does not exist.
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                node_not_found:
                  value:
                    errorCode: 000719
                    httpCode: '404'
                    message: Node with this serial number does not exist
        '500':
          description: Request failed, this is the response received when an unexpected error occurred.
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                wl_control_err:
                  value:
                    errorCode: nerve_workload_045
                    httpCode: '500'
                    message: Undeploy failed
  /nerve/workload/node/{serialNumber}/devices:
    get:
      summary: Get list of deployed workloads on the selected node
      operationId: list_deployed_workloads
      tags:
      - NODE
      description: Used to retrieve the list of deployed Workloads(devices) from a specific node
      parameters:
      - name: serialNumber
        in: path
        required: true
        description: The serial number of the node which was specified during onboarding into the Nerve Management System.
        schema:
          description: The serial number of the node
          type: string
          maxLength: 12
          minLength: 12
          pattern: ([A-Z0-9]){12}
      - name: timeout
        in: query
        required: false
        description: The time how long to wait for the response in miliseconds
        schema:
          type: integer
          format: int32
          minimum: 10000
          default: 10000
          description: How long to wait for the response from the node [milliseconds]
          maximum: 86400000
      x-permissions:
      - DEVICE:LIST
      responses:
        '200':
          description: List of deployed workloads from a specific node
          content:
            application/json:
              schema:
                type: array
                description: List of deployed workloads from a specific node
                minItems: 0
                maxItems: 1001
                items:
                  description: Object contains information of deployed workload provided from OVDM
                  type: object
                  properties:
                    class:
                      type: string
                      description: Class of the device
                      enum:
                      - WiseGenericDev
                    device_firmware_version:
                      description: Firmware version of the device
                      minLength: 1
                      maxLength: 1000
                      type: string
                      pattern: ^[\x20-\x7E\t\n\r]*$
                    device_manufacturer:
                      type: string
                      description: Manufacturer of the device
                      enum:
                      - TTTech
                    device_model_name:
                      type: string
                      description: Device model name
                      enum:
                      - Docker
                      - KVM Virtual Machine
                      - Codesys
                      - Docker Compose
                    device_name:
                      type: string
                      description: Workload name
                      minLength: 1
                      maxLength: 40
                      pattern: (?=.*[^ ].*)(?=(^[^\u0000-\u001f\u007f-\u009f]*$))
                    id:
                      type: integer
                      format: int32
                      description: Id of the deployed workload
                      minimum: 100
                      maximum: 1000
                    status:
                      description: Numerical value representing the status of workload
                      type: integer
                      format: int32
                      minimum: 0
                      maximum: 13
                    versionId:
                      description: Version id generated for VM backups or version id from DB for docker workloads
                      minLength: 1
                      maxLength: 1000
                      type: string
                      pattern: ^[\x20-\x7E\t\n\r]*$
                    workloadId:
                      description: Workload id generated for VM backups or workload id from DB for docker workloads
                      minLength: 1
                      maxLength: 1000
                      type: string
                      pattern: ^[\x20-\x7E\t\n\r]*$
                    type:
                      description: Workload type
                      type: string
                      enum:
                      - docker
                      - vm
                      - codesys
                      - docker-compose
                    parentNodeSerial:
                      description: The serial number of the node
                      type: string
                      maxLength: 12
                      minLength: 12
                      pattern: ([A-Z0-9]){12}
                    features:
                      type: array
                      description: List of specific workload features(e.g. snapshot)
                      minItems: 0
                      maxItems: 1001
                      items:
                        type: object
                        required:
                        - name
                        - value
                        properties:
                          name:
                            description: Feature name
                            minLength: 1
                            maxLength: 1000
                            type: string
                            pattern: ^[\x20-\x7E\t\n\r]*$
                          value:
                            type: object
                            description: Feature value
                    layout:
                      type: array
                      description: List of layout items, currently not used
                      minItems: 0
                      maxItems: 0
                    service_list:
                      type: array
                      minItems: 0
                      maxItems: 1001
                      description: List of services running on the device
                      items:
                        type: object
                        properties:
                          category:
                            description: Category of the service
                            minLength: 1
                            maxLength: 1000
                            type: string
                            pattern: ^[\x20-\x7E\t\n\r]*$
                          name:
                            description: Name of the service
                            minLength: 1
                            maxLength: 1000
                            type: string
                            pattern: ^[\x20-\x7E\t\n\r]*$
                          priority:
                            description: Priority of the service
                            type: integer
                            format: int32
                            minimum: 0
                            maximum: 0
                          type:
                            description: Type of the service
                            minLength: 1
                            maxLength: 1000
                            type: string
                            pattern: ^[\x20-\x7E\t\n\r]*$
                          priority_list:
                            minItems: 0
                            maxItems: 1001
                            type: array
                            description: List of priority levels for the service
                            items:
                              type: object
                              properties:
                                name:
                                  description: Name of the priority level
                                  minLength: 1
                                  maxLength: 1000
                                  type: string
                                  pattern: ^[\x20-\x7E\t\n\r]*$
                                options:
                                  type: array
                                  description: List of options for the priority level
                                  minItems: 0
                                  maxItems: 1001
                                  items:
                                    minLength: 1
                                    maxLength: 1000
                                    type: string
                                    pattern: ^[\x20-\x7E\t\n\r]*$
                                value:
                                  description: Value of the priority level
                                  oneOf:
                                  - type: string
                                  - type: integer
                                    format: int64
                                    minimum: 0
                                    maximum: 1000000
                                timestamp:
                                  description: Timestamp of the priority level value
                                  type: integer
                                  format: int64
                                  minimum: 0
                                  maximum: 4102444800000
                    device_api_version:
                      description: API version of the device
                      minLength: 0
                      maxLength: 1000
                      type: string
                      pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                list_deployed_workloads:
                  value:
                  - value:
                      class: WiseGenericDev
                      device_firmware_version: '1.0'
                      device_manufacturer: TTTech
                      device_model_name: KVM Virtual Machine
                      device_name: slitazkvm
                      id: 331
                      status: 2
                      layout: []
                      service_list:
                      - category: dev_information
                        name: WiseConfigurationService
                        priority: 0
                        type: WiseConfigurationService
                        property_list:
                        - name: Value
                          options: []
                          value: '{"workloadId":"62e8e8ef39c508006b8c5231","versionId":"62e8e8ef39c508006b8c5232","workloadVersion":"slitaz kvm","workloadVersionName":"slitaz kvm","deployTime":1659433001122}'
                          timestamp: 1659433013838
                        - name: ConfigurationUpdateStatus
                          options: []
                          value: '{}'
                      - category: dev_information
                        name: VMControlService
                        priority: 0
                        type: VMControlService
                        property_list:
                        - name: Command
                          options:
                          - NONE
                          - START
                          - STOP
                          - SUSPEND
                          - RESUME
                          - RESTART
                          - REMOVE
                          value: 0
                        - name: Message
                          options: []
                          value: vm_started
                          timestamp: 1659684239582
                        - name: State
                          options:
                          - IDLE
                          - CREATING
                          - REMOVING
                          - SUSPENDING
                          - SUSPENDED
                          - STARTING
                          - RESTARTING
                          - RESUMING
                          - STARTED
                          - STOPPING
                          - STOPPED
                          - ERROR
                          - REMOVING_FAILED
                          value: 8
                          timestamp: 1659684239584
                        - name: CPUNumber
                          options: []
                          value: 2
                          timestamp: 1659617887944
                        - name: Memory
                          options: []
                          value: 2000000000
                          timestamp: 1659617887947
                      versionId: 62e8e8ef39c508006b8c5232
                      parentNodeSerial: MFN111111111
                      features:
                      - name: snapshot
                        value:
                          enabled: false
                          space: ''
                      workloadId: 62e8e8ef39c508006b8c5231
                      type: vm
                      device_api_version: 2.5.0
        '400':
          description: Route params validation error
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              example:
                errorCode: '00006'
                httpCode: '400'
                message: Route params validation error
        '403':
          description: You are not authorized to perform this operation
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                not_authorized:
                  value:
                    errorCode: '00003'
                    httpCode: '403'
                    message: You are not authorized
        '404':
          description: Request failed, this is the response received when node with specified serial number does not exist.
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                node_not_found:
                  value:
                    errorCode: 000719
                    httpCode: '404'
                    message: Node with this serial number does not exist
        '500':
          description: Request failed, this is the response received when an unexpected error occurred
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
        '504':
          description: Node failed to response in expected time
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              example:
                errorCode: nerve_node_021
                httpCode: '504'
                message: Request rejected by timeout
  /nerve/workload/{workloadId}:
    delete:
      summary: Delete the selected workload
      operationId: delete_workload
      tags:
      - WORKLOAD
      description: Used to delete specific workload by ID
      parameters:
      - name: workloadId
        in: path
        required: true
        description: Workload Id
        schema:
          description: ID (from Management System) of the entry
          type: string
          pattern: ^[0-9a-fA-F]{24}$
          minLength: 24
          maxLength: 24
      x-permissions:
      - WORKLOAD:DELETE
      responses:
        '204':
          description: The resource was deleted successfully
        '403':
          description: You are not authorized to perform this operation
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English.
                    minLength: 5
                    maxLength: 512
                    type: string
                    pattern: ^[\x20-\x7E\t\n\r]*$
              examples:
                not_authorized:
                  value:
                    errorCode: '00003'
                    httpCode: '403'
                    message: You are not authorized
        '404':
          description: Workload with specific ID does not exist in the db
          content:
            application/json:
              schema:
                description: Generic error response returned from the server in case of a failed operation.
                properties:
                  errorCode:
                    description: String that is used as a key for appropriate translation on the front-end application.
                    type: string
                    minLength: 4
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_-]*$
                  httpCode:
                    description: Http error code assigned to the error.
                    type: string
                    minLength: 3
                    maxLength: 3
                    pattern: ^[0-9]*$
                  message:
                    description: Error message in English

# --- truncated at 32 KB (3722 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tttech/refs/heads/main/openapi/tttech-nerve-management-system-openapi.yml