Skip to content
RSXDocs
RSX · API · Reference

node v1

Control plane for RSX-managed compute nodes: registration, desired state, and reported status.

Current
Base URL
https://api.rsx.group/node/v1
Self-grantable scopes
None. Every endpoint here needs a key issued by a platform admin.
Machine readable
openapi.json
01

admin

14 operations under /node/v1/admin.

GET/node/v1/admin/nodes/list

Every node, and what each last reported

Scope
node:admin:nodes:list Admin-issued keys only.

Query parameters

Query parameters of adminListNodes

  • cursor
    Type
    string
    Description
  • limit
    Type
    integer
    Description
    1 to 100 · default 20

Response 200Nodes

Response of adminListNodes

  • datarequired
    Type
    array of NodeSummary
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • sealing
    Type
    NodeSealing
    Description
  • platformrequired
    Type
    NodePlatform
    Description
  • runtimerequired
    Type
    NodeRuntime
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • featuresrequired
    Type
    NodeFeatures
    Description
  • registeredAtrequired
    Type
    string, date-time
    Description
  • lastSeenAtrequired
    Type
    string, date-time
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    NodeStatus
    Description
  • metarequired
    Type
    object
    Description
  • cursorrequired
    Type
    string, or null
    Description

Example

curl
curl "https://api.rsx.group/node/v1/admin/nodes/list" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "nodeId": "macbook-dev-01",
      "agent": {
        "version": "0.1.0",
        "commit": "5036308f9859",
        "builtAt": "2026-08-30T23:30:34Z"
      },
      "sealing": {
        "algorithm": "x25519-hkdf-sha256-aes256gcm",
        "publicKey": "string"
      },
      "platform": {
        "os": "macos",
        "architecture": "x86_64",
        "kernel": "6.1.0-25-amd64"
      },
      "runtime": {
        "docker": true,
        "version": "29.6.2"
      },
      "capacity": {
        "memoryBytes": 8589934592,
        "cpus": 4
      },
      "features": {
        "build": true,
        "cloudflareTunnel": true,
        "hostMetrics": true
      },
      "registeredAt": "2026-08-27T09:14:02Z",
      "lastSeenAt": "2026-08-27T09:41:55Z",
      "generation": 7,
      "status": {
        "nodeId": "macbook-dev-01",
        "generation": 7,
        "status": "HEALTHY",
        "docker": "Docker 29.6.2 on linux/x86_64, 7.4 GiB memory, 12 CPUs",
        "workloads": [
          null
        ],
        "host": null,
        "jobs": [
          null
        ],
        "reportedAt": "2026-08-27T09:41:55Z"
      }
    }
  ],
  "meta": {
    "cursor": "string"
  }
}
GET/node/v1/admin/nodes/get

One node: what it is, what it was told, and what it reports

Scope
node:admin:nodes:get Admin-issued keys only.

Query parameters

Query parameters of adminGetNode

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$

Response 200The node

Response of adminGetNode

  • datarequired
    Type
    NodeDetail
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • sealing
    Type
    NodeSealing
    Description
  • platformrequired
    Type
    NodePlatform
    Description
  • runtimerequired
    Type
    NodeRuntime
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • featuresrequired
    Type
    NodeFeatures
    Description
  • registeredAtrequired
    Type
    string, date-time
    Description
  • lastSeenAtrequired
    Type
    string, date-time
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    NodeStatus
    Description
  • desiredrequired
    Type
    string, or null
    Description

Example

curl
curl "https://api.rsx.group/node/v1/admin/nodes/get?nodeId=macbook-dev-01" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": {
    "nodeId": "macbook-dev-01",
    "agent": {
      "version": "0.1.0",
      "commit": "5036308f9859",
      "builtAt": "2026-08-30T23:30:34Z"
    },
    "sealing": {
      "algorithm": "x25519-hkdf-sha256-aes256gcm",
      "publicKey": "string"
    },
    "platform": {
      "os": "macos",
      "architecture": "x86_64",
      "kernel": "6.1.0-25-amd64"
    },
    "runtime": {
      "docker": true,
      "version": "29.6.2"
    },
    "capacity": {
      "memoryBytes": 8589934592,
      "cpus": 4
    },
    "features": {
      "build": true,
      "cloudflareTunnel": true,
      "hostMetrics": true
    },
    "registeredAt": "2026-08-27T09:14:02Z",
    "lastSeenAt": "2026-08-27T09:41:55Z",
    "generation": 7,
    "status": {
      "nodeId": "macbook-dev-01",
      "generation": 7,
      "status": "HEALTHY",
      "docker": "Docker 29.6.2 on linux/x86_64, 7.4 GiB memory, 12 CPUs",
      "workloads": [
        null
      ],
      "host": {
        "cpuPercent": null,
        "memory": null,
        "disks": null
      },
      "jobs": [
        null
      ],
      "reportedAt": "2026-08-27T09:41:55Z"
    },
    "desired": "{\"generation\":7,\"workloads\":[]}"
  }
}
POST/node/v1/admin/desired/update

Set what a node should be running

Scope
node:admin:desired:update Admin-issued keys only.

Request bodyapplication/json

Request body of adminUpdateNodeDesiredState

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • workloadsrequired
    Type
    array of object
    Description
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • state
    Type
    string
    Description
    one of "running", "stopped" · default "running"
  • sourcerequired
    Type
    object
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • restart
    Type
    string
    Description
    one of "no", "always", "unless-stopped" · default "unless-stopped"
  • health
    Type
    NodeWorkloadHealth
    Description
    default {"type":"process","settleSeconds":5}
  • command
    Type
    array of string
    Description
  • diagnostics
    Type
    object
    Description
  • probes
    Type
    map of array of string
    Description
    default {}
  • {key}
    Type
    array of string
    Description
    1 to 32 items
  • ingress
    Type
    NodeWorkloadIngress
    Description
  • jobs
    Type
    array of object
    Description
    default []
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • sourcerequired
    Type
    object
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • commandrequired
    Type
    array of string
    Description
    1 to 64 items
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • timeoutSeconds
    Type
    integer
    Description
    1 to 86400 · default 3600
  • retainRuns
    Type
    integer
    Description
    1 to 20 · default 5
  • trigger
    Type
    NodeJobTrigger
    Description

Response 200The new desired state, with the generation it was given

Response of adminUpdateNodeDesiredState

  • datarequired
    Type
    object
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • workloadsrequired
    Type
    array of NodeWorkload
    Description
  • jobsrequired
    Type
    array of NodeJob
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/admin/desired/update \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "workloads": [
    {
      "id": "roxy",
      "state": "running",
      "source": {
        "repository": "git@github.com:RSXGroup/roxy.git",
        "revision": "7f31c2a",
        "build": "registry",
        "registry": {
          "package": null,
          "version": null
        },
        "image": "ghcr.io/rsxgroup/roxy@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b"
      },
      "env": {},
      "volumes": [],
      "resources": {},
      "restart": "unless-stopped",
      "health": {
        "type": "process",
        "settleSeconds": 5
      },
      "command": [
        "string"
      ],
      "diagnostics": {
        "probes": {}
      },
      "ingress": {
        "port": 3000,
        "hostnames": [
          "logs.rsx.group"
        ],
        "access": true
      }
    }
  ],
  "jobs": []
}'
200 response
{
  "data": {
    "generation": 1,
    "workloads": [
      {
        "id": "roxy",
        "state": "running",
        "source": {
          "repository": "git@github.com:RSXGroup/roxy.git",
          "revision": "7f31c2a",
          "build": "registry",
          "registry": {
            "package": null,
            "version": null
          },
          "image": "ghcr.io/rsxgroup/roxy@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b"
        },
        "env": {},
        "volumes": [],
        "resources": {},
        "restart": "unless-stopped",
        "health": {
          "type": "process",
          "settleSeconds": 5
        },
        "command": [
          "string"
        ],
        "diagnostics": {
          "probes": {}
        },
        "ingress": {
          "port": 3000,
          "hostnames": [
            "logs.rsx.group"
          ],
          "access": true
        }
      }
    ],
    "jobs": [
      {
        "id": "roxy-migrate",
        "source": {
          "repository": "git@github.com:RSXGroup/roxy.git",
          "revision": "7f31c2a",
          "build": "registry",
          "registry": {
            "package": null,
            "version": null
          },
          "image": "ghcr.io/rsxgroup/roxy@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b"
        },
        "command": [
          "node",
          "scripts/migrate.js",
          "--to",
          "latest"
        ],
        "env": {},
        "volumes": [],
        "resources": {},
        "timeoutSeconds": 1800,
        "retainRuns": 5,
        "trigger": {
          "github": {
            "repository": "RSXGroup/site",
            "refs": [
              null
            ]
          }
        }
      }
    ]
  }
}
POST/node/v1/admin/commands/add

Ask a node to do something

Scope
node:admin:commands:add Admin-issued keys only.
Idempotency
Requires an Idempotency-Key header. Reusing the key within 24 hours returns the original response instead of creating a second record.

Request bodyapplication/json

IssueNodeCommand

Response 200The command, waiting to be collected

Response of adminIssueNodeCommand

  • datarequired
    Type
    NodeCommandRecord
    Description
  • idrequired
    Type
    string
    Description
  • kindrequired
    Type
    string
    Description
    one of "reconcile", "restart", "redeploy", "logs", "diagnose", "secret", "update", "reboot", "shutdown", "run"
  • arguments
    Type
    map of any
    Description
    default {}
  • {key}
    Type
    any
    Description
  • issuedAtrequired
    Type
    string, date-time
    Description
  • issuedByrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
    one of "pending", "done", "failed"
  • ackedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string, or null
    Description
  • outputrequired
    Type
    string, or null
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/admin/commands/add \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Idempotency-Key: 5b8f2d1a-0c7e-4b1f-9a6d-3e2f1c0b9a8d" \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "kind": "reconcile"
}'
200 response
{
  "data": {
    "id": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
    "kind": "restart",
    "arguments": {},
    "issuedAt": "2026-08-31T09:14:02Z",
    "issuedBy": "paige@rsx.group",
    "state": "pending",
    "ackedAt": "2026-10-10T12:00:00.000Z",
    "detail": "string",
    "output": "string"
  }
}
POST/node/v1/admin/tunnel/send

Send a node its tunnel token, sealed to its key

Scope
node:admin:tunnel:send Admin-issued keys only.

Request bodyapplication/json

Request body of adminSendNodeTunnelToken

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$

Response 200The secret command, waiting to be collected

Response of adminSendNodeTunnelToken

  • datarequired
    Type
    NodeCommandRecord
    Description
  • idrequired
    Type
    string
    Description
  • kindrequired
    Type
    string
    Description
    one of "reconcile", "restart", "redeploy", "logs", "diagnose", "secret", "update", "reboot", "shutdown", "run"
  • arguments
    Type
    map of any
    Description
    default {}
  • {key}
    Type
    any
    Description
  • issuedAtrequired
    Type
    string, date-time
    Description
  • issuedByrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
    one of "pending", "done", "failed"
  • ackedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string, or null
    Description
  • outputrequired
    Type
    string, or null
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/admin/tunnel/send \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01"
}'
200 response
{
  "data": {
    "id": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
    "kind": "restart",
    "arguments": {},
    "issuedAt": "2026-08-31T09:14:02Z",
    "issuedBy": "paige@rsx.group",
    "state": "pending",
    "ackedAt": "2026-10-10T12:00:00.000Z",
    "detail": "string",
    "output": "string"
  }
}
GET/node/v1/admin/tunnel/get

Reveal a node's tunnel token, to seal on it

Scope
node:admin:tunnel:get Admin-issued keys only.

Query parameters

Query parameters of adminGetNodeTunnelToken

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$

Response 200The token. Seal it with `rsx-node tunnel token` and do not keep it.

Response of adminGetNodeTunnelToken

  • datarequired
    Type
    NodeTunnelToken
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • tunnelIdrequired
    Type
    string
    Description
  • tokenrequired
    Type
    string
    Description

Example

curl
curl "https://api.rsx.group/node/v1/admin/tunnel/get?nodeId=macbook-dev-01" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": {
    "nodeId": "macbook-dev-01",
    "tunnelId": "string",
    "token": "string"
  }
}
GET/node/v1/admin/commands/list

What has been asked of a node, and what came of it

Scope
node:admin:commands:list Admin-issued keys only.

Query parameters

Query parameters of adminListNodeCommands

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • limit
    Type
    integer
    Description
    1 to 100 · default 20

Response 200Recent commands, newest first

Response of adminListNodeCommands

  • datarequired
    Type
    array of NodeCommandRecord
    Description
  • idrequired
    Type
    string
    Description
  • kindrequired
    Type
    string
    Description
    one of "reconcile", "restart", "redeploy", "logs", "diagnose", "secret", "update", "reboot", "shutdown", "run"
  • arguments
    Type
    map of any
    Description
    default {}
  • {key}
    Type
    any
    Description
  • issuedAtrequired
    Type
    string, date-time
    Description
  • issuedByrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
    one of "pending", "done", "failed"
  • ackedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string, or null
    Description
  • outputrequired
    Type
    string, or null
    Description

Example

curl
curl "https://api.rsx.group/node/v1/admin/commands/list?nodeId=macbook-dev-01" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "id": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
      "kind": "restart",
      "arguments": {},
      "issuedAt": "2026-08-31T09:14:02Z",
      "issuedBy": "paige@rsx.group",
      "state": "pending",
      "ackedAt": "2026-10-10T12:00:00.000Z",
      "detail": "string",
      "output": "string"
    }
  ]
}
GET/node/v1/admin/runs/list

The runs of a node's jobs, and how each ended

Scope
node:admin:runs:list Admin-issued keys only.

Query parameters

Query parameters of adminListNodeRuns

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • jobId
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • limit
    Type
    integer
    Description
    1 to 200 · default 20

Response 200Runs, newest first by when this service first saw each

Response of adminListNodeRuns

  • datarequired
    Type
    array of NodeRunRecord
    Description
  • runIdrequired
    Type
    string
    Description
    1 to 64 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • staterequired
    Type
    string
    Description
    one of "running", "succeeded", "failed", "timed-out"
  • exitCoderequired
    Type
    integer, or null
    Description
  • startedAtrequired
    Type
    string, date-time, or null
    Description
  • finishedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string
    Description
    up to 1024 characters
  • jobIdrequired
    Type
    string
    Description
    1 to 63 characters
  • recordedAtrequired
    Type
    string, date-time
    Description

Example

curl
curl "https://api.rsx.group/node/v1/admin/runs/list?nodeId=macbook-dev-01" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "runId": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
      "revision": "7f31c2a",
      "state": "succeeded",
      "exitCode": 0,
      "startedAt": "2026-10-09T09:14:05Z",
      "finishedAt": "2026-10-09T09:14:41Z",
      "detail": "exited 0 after 36s",
      "jobId": "roxy-migrate",
      "recordedAt": "2026-10-09T09:14:07Z"
    }
  ]
}
POST/node/v1/admin/triggers/github

Start the runs a GitHub push triggers

Called by services/webhooks/v1 for every authenticated push. Matching jobs have the pushed commit written into their revision and RSX_COMMIT, RSX_REF and RSX_REPOSITORY, and are run once the node reports acting on that generation. A delivery id already seen does nothing.

Scope
node:admin:triggers:github Admin-issued keys only.

Request bodyapplication/json

Request body of adminReceiveGithubPush

  • deliveryIdrequired
    Type
    string
    Description
    1 to 128 characters
  • repositoryrequired
    Type
    string
    Description
    1 to 255 characters
  • refrequired
    Type
    string
    Description
    1 to 1024 characters
  • commitrequired
    Type
    string
    Description
    1 to 128 characters
  • pusher
    Type
    string
    Description
    up to 128 characters · default ""

Response 200What the push did to each matching job

Response of adminReceiveGithubPush

  • datarequired
    Type
    NodeTriggerResult
    Description
  • dedupedrequired
    Type
    boolean
    Description
  • ignoredrequired
    Type
    string, or null
    Description
  • matchedrequired
    Type
    array of NodeTriggerMatch
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/admin/triggers/github \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "deliveryId": "string",
  "repository": "RSXGroup/site",
  "ref": "refs/heads/main",
  "commit": "7f31c2a9d4e8b1f0c3a5d7e9f2b4c6a8d0e1f3a5",
  "pusher": ""
}'
200 response
{
  "data": {
    "deduped": true,
    "ignored": "string",
    "matched": [
      {
        "nodeId": "string",
        "jobId": "string",
        "outcome": "queued",
        "detail": "string"
      }
    ]
  }
}
GET/node/v1/admin/triggers/list

Pushes waiting to become runs on a node

Scope
node:admin:triggers:list Admin-issued keys only.

Query parameters

Query parameters of adminListNodePendingTriggers

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$

Response 200One per job at most

Response of adminListNodePendingTriggers

  • datarequired
    Type
    array of NodePendingTrigger
    Description
  • nodeIdrequired
    Type
    string
    Description
  • jobIdrequired
    Type
    string
    Description
  • commitrequired
    Type
    string
    Description
  • refrequired
    Type
    string
    Description
  • generationrequired
    Type
    integer
    Description
  • actorrequired
    Type
    string
    Description
  • pusherrequired
    Type
    string
    Description
  • queuedAtrequired
    Type
    string, date-time
    Description
  • commandIdrequired
    Type
    string, or null
    Description

Example

curl
curl "https://api.rsx.group/node/v1/admin/triggers/list?nodeId=macbook-dev-01" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "nodeId": "string",
      "jobId": "string",
      "commit": "string",
      "ref": "string",
      "generation": 1,
      "actor": "string",
      "pusher": "string",
      "queuedAt": "2026-10-10T12:00:00.000Z",
      "commandId": "string"
    }
  ]
}
POST/node/v1/admin/triggers/discard

Drop a push that is waiting to become a run

Scope
node:admin:triggers:discard Admin-issued keys only.

Request bodyapplication/json

Request body of adminDiscardNodePendingTrigger

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • jobIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$

Response 200Whether there was one

Response of adminDiscardNodePendingTrigger

  • datarequired
    Type
    object
    Description
  • discardedrequired
    Type
    boolean
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/admin/triggers/discard \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "jobId": "macbook-dev-01"
}'
200 response
{
  "data": {
    "discarded": true
  }
}
GET/node/v1/admin/releases/list

Builds of the node that a node could be updated to

Scope
node:admin:releases:list Admin-issued keys only.

Query parameters

Query parameters of adminListNodeReleases

  • limit
    Type
    integer
    Description
    1 to 30 · default 10

Response 200Recent releases, newest first

Response of adminListNodeReleases

  • datarequired
    Type
    array of NodeRelease
    Description
  • tagrequired
    Type
    string
    Description
  • namerequired
    Type
    string
    Description
  • publishedAtrequired
    Type
    string, or null
    Description
  • prereleaserequired
    Type
    boolean
    Description
  • assetsrequired
    Type
    array of NodeReleaseAsset
    Description

Errors

Each is an RFC 7807 problem document whose type URL is a page in the error reference.

  • 501This service has no GitHub credentials

Example

curl
curl "https://api.rsx.group/node/v1/admin/releases/list" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "tag": "build-5036308f9859",
      "name": "string",
      "publishedAt": "string",
      "prerelease": true,
      "assets": [
        {
          "assetId": 1,
          "name": "rsx-node-x86_64-apple-darwin",
          "size": 1,
          "sha256": "string",
          "target": "x86_64-apple-darwin"
        }
      ]
    }
  ]
}
POST/node/v1/admin/commands/update

Ask a node to update itself to a published build

Scope
node:admin:commands:update Admin-issued keys only.

Request bodyapplication/json

Request body of adminUpdateNodeFromRelease

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • version
    Type
    string
    Description
    1 to 128 characters
  • platform
    Type
    string
    Description
    1 to 64 characters
  • assetId
    Type
    integer
    Description

Response 200The command, waiting to be collected

Response of adminUpdateNodeFromRelease

  • datarequired
    Type
    NodeCommandRecord
    Description
  • idrequired
    Type
    string
    Description
  • kindrequired
    Type
    string
    Description
    one of "reconcile", "restart", "redeploy", "logs", "diagnose", "secret", "update", "reboot", "shutdown", "run"
  • arguments
    Type
    map of any
    Description
    default {}
  • {key}
    Type
    any
    Description
  • issuedAtrequired
    Type
    string, date-time
    Description
  • issuedByrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
    one of "pending", "done", "failed"
  • ackedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string, or null
    Description
  • outputrequired
    Type
    string, or null
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/admin/commands/update \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "version": "build-7f31c2a",
  "platform": "x86_64-apple-darwin",
  "assetId": 284739201
}'
200 response
{
  "data": {
    "id": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
    "kind": "restart",
    "arguments": {},
    "issuedAt": "2026-08-31T09:14:02Z",
    "issuedBy": "paige@rsx.group",
    "state": "pending",
    "ackedAt": "2026-10-10T12:00:00.000Z",
    "detail": "string",
    "output": "string"
  }
}
GET/node/v1/admin/audit/list

Who changed what a node runs, and who asked it to do something

Newest first. desired.updated is recorded whether it came from the dashboard or from an API key, so actor is an operator's name or a key id. A node's first registration is recorded; its heartbeats and status reports are not.

Scope
node:admin:audit:list Admin-issued keys only.

Query parameters

Query parameters of adminListNodeAudit

  • targetType
    Type
    string
    Description
    one of "node"
  • targetId
    Type
    string
    Description
    up to 128 characters
  • actor
    Type
    string
    Description
    up to 320 characters
  • action
    Type
    string
    Description
    one of "node.registered", "desired.updated", "command.issued", "tunnel.token.revealed", "tunnel.token.sent", "job.triggered", "job.trigger.dropped"
  • offset
    Type
    integer, or null
    Description
    at least 0 · default 0
  • limit
    Type
    integer
    Description
    1 to 100 · default 50

Response 200Audit events

Response of adminListNodeAudit

  • datarequired
    Type
    array of NodeAuditEvent
    Description
  • idrequired
    Type
    string
    Description
  • actorrequired
    Type
    string
    Description
  • actionrequired
    Type
    string
    Description
    one of "node.registered", "desired.updated", "command.issued", "tunnel.token.revealed", "tunnel.token.sent", "job.triggered", "job.trigger.dropped"
  • targetTyperequired
    Type
    string
    Description
    one of "node"
  • targetIdrequired
    Type
    string
    Description
  • targetLabelrequired
    Type
    string, or null
    Description
  • atrequired
    Type
    string, date-time
    Description
  • detailrequired
    Type
    string, or null
    Description
  • metarequired
    Type
    object
    Description
  • offsetrequired
    Type
    integer
    Description
  • limitrequired
    Type
    integer
    Description
  • morerequired
    Type
    boolean
    Description

Example

curl
curl "https://api.rsx.group/node/v1/admin/audit/list" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "id": "018f3b1c-9a2e-7c31-8f4d-2a6b5c7e9d12",
      "actor": "ops@rsx.group",
      "action": "node.registered",
      "targetType": "node",
      "targetId": "string",
      "targetLabel": "string",
      "at": "2026-09-12T10:16:30.000Z",
      "detail": "string"
    }
  ],
  "meta": {
    "offset": 1,
    "limit": 1,
    "more": true
  }
}
02

nodes

2 operations under /node/v1/nodes.

POST/node/v1/nodes/update

Register a node, or update what it reports about itself

Scope
node:nodes:update Admin-issued keys only.

Request bodyapplication/json

Request body of updateNode

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • versionrequired
    Type
    string
    Description
    up to 32 characters
  • commitrequired
    Type
    string
    Description
    up to 64 characters
  • builtAtrequired
    Type
    string
    Description
    up to 32 characters
  • sealing
    Type
    NodeSealing
    Description
  • algorithmrequired
    Type
    string
    Description
    one of "x25519-hkdf-sha256-aes256gcm"
  • publicKeyrequired
    Type
    string
    Description
    matches ^[A-Za-z0-9+/]{43}=$
  • platformrequired
    Type
    NodePlatform
    Description
  • osrequired
    Type
    string
    Description
    at least 1 character
  • architecturerequired
    Type
    string
    Description
    at least 1 character
  • kernel
    Type
    string
    Description
    1 to 64 characters
  • runtimerequired
    Type
    NodeRuntime
    Description
  • dockerrequired
    Type
    boolean
    Description
  • versionrequired
    Type
    string
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • memoryBytesrequired
    Type
    integer
    Description
    at least 0
  • cpusrequired
    Type
    integer
    Description
    at least 0
  • featuresrequired
    Type
    NodeFeatures
    Description
  • buildrequired
    Type
    boolean
    Description
  • cloudflareTunnelrequired
    Type
    boolean
    Description
  • hostMetrics
    Type
    boolean
    Description

Response 200The node as it is now recorded

Response of updateNode

  • datarequired
    Type
    Node
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • sealing
    Type
    NodeSealing
    Description
  • platformrequired
    Type
    NodePlatform
    Description
  • runtimerequired
    Type
    NodeRuntime
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • featuresrequired
    Type
    NodeFeatures
    Description
  • registeredAtrequired
    Type
    string, date-time
    Description
  • lastSeenAtrequired
    Type
    string, date-time
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0

Example

curl
curl -X POST https://api.rsx.group/node/v1/nodes/update \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "agent": {
    "version": "0.1.0",
    "commit": "5036308f9859",
    "builtAt": "2026-08-30T23:30:34Z"
  },
  "sealing": {
    "algorithm": "x25519-hkdf-sha256-aes256gcm",
    "publicKey": "string"
  },
  "platform": {
    "os": "macos",
    "architecture": "x86_64",
    "kernel": "6.1.0-25-amd64"
  },
  "runtime": {
    "docker": true,
    "version": "29.6.2"
  },
  "capacity": {
    "memoryBytes": 8589934592,
    "cpus": 4
  },
  "features": {
    "build": true,
    "cloudflareTunnel": true,
    "hostMetrics": true
  }
}'
200 response
{
  "data": {
    "nodeId": "macbook-dev-01",
    "agent": {
      "version": "0.1.0",
      "commit": "5036308f9859",
      "builtAt": "2026-08-30T23:30:34Z"
    },
    "sealing": {
      "algorithm": "x25519-hkdf-sha256-aes256gcm",
      "publicKey": "string"
    },
    "platform": {
      "os": "macos",
      "architecture": "x86_64",
      "kernel": "6.1.0-25-amd64"
    },
    "runtime": {
      "docker": true,
      "version": "29.6.2"
    },
    "capacity": {
      "memoryBytes": 8589934592,
      "cpus": 4
    },
    "features": {
      "build": true,
      "cloudflareTunnel": true,
      "hostMetrics": true
    },
    "registeredAt": "2026-08-27T09:14:02Z",
    "lastSeenAt": "2026-08-27T09:41:55Z",
    "generation": 7
  }
}
GET/node/v1/nodes/list

List nodes and what each last reported

Scope
node:nodes:list Admin-issued keys only.

Query parameters

Query parameters of listNodes

  • cursor
    Type
    string
    Description
  • limit
    Type
    integer
    Description
    1 to 100 · default 20

Response 200Nodes

Response of listNodes

  • datarequired
    Type
    array of NodeSummary
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • sealing
    Type
    NodeSealing
    Description
  • platformrequired
    Type
    NodePlatform
    Description
  • runtimerequired
    Type
    NodeRuntime
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • featuresrequired
    Type
    NodeFeatures
    Description
  • registeredAtrequired
    Type
    string, date-time
    Description
  • lastSeenAtrequired
    Type
    string, date-time
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    NodeStatus
    Description
  • metarequired
    Type
    object
    Description
  • cursorrequired
    Type
    string, or null
    Description

Example

curl
curl "https://api.rsx.group/node/v1/nodes/list" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "nodeId": "macbook-dev-01",
      "agent": {
        "version": "0.1.0",
        "commit": "5036308f9859",
        "builtAt": "2026-08-30T23:30:34Z"
      },
      "sealing": {
        "algorithm": "x25519-hkdf-sha256-aes256gcm",
        "publicKey": "string"
      },
      "platform": {
        "os": "macos",
        "architecture": "x86_64",
        "kernel": "6.1.0-25-amd64"
      },
      "runtime": {
        "docker": true,
        "version": "29.6.2"
      },
      "capacity": {
        "memoryBytes": 8589934592,
        "cpus": 4
      },
      "features": {
        "build": true,
        "cloudflareTunnel": true,
        "hostMetrics": true
      },
      "registeredAt": "2026-08-27T09:14:02Z",
      "lastSeenAt": "2026-08-27T09:41:55Z",
      "generation": 7,
      "status": {
        "nodeId": "macbook-dev-01",
        "generation": 7,
        "status": "HEALTHY",
        "docker": "Docker 29.6.2 on linux/x86_64, 7.4 GiB memory, 12 CPUs",
        "workloads": [
          null
        ],
        "host": null,
        "jobs": [
          null
        ],
        "reportedAt": "2026-08-27T09:41:55Z"
      }
    }
  ],
  "meta": {
    "cursor": "string"
  }
}
03

desired

2 operations under /node/v1/desired.

GET/node/v1/desired/get

Fetch a node's desired state, if it has changed

Scope
node:desired:get Admin-issued keys only.

Query parameters

Query parameters of getNodeDesiredState

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • since
    Type
    integer, or null
    Description
    at least 0 · default 0

Response 200Desired state, newer than the generation asked about

Response of getNodeDesiredState

  • datarequired
    Type
    NodeDesiredState
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • workloadsrequired
    Type
    array of NodeWorkload
    Description
  • tunnel
    Type
    object
    Description
  • imagerequired
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
  • jobs
    Type
    array of NodeJob
    Description
    default []

Example

curl
curl "https://api.rsx.group/node/v1/desired/get?nodeId=macbook-dev-01" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": {
    "generation": 7,
    "workloads": [
      {
        "id": "roxy",
        "state": "running",
        "source": {
          "repository": "git@github.com:RSXGroup/roxy.git",
          "revision": "7f31c2a",
          "build": "registry",
          "registry": null,
          "image": "ghcr.io/rsxgroup/roxy@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b"
        },
        "env": {},
        "volumes": [],
        "resources": {},
        "restart": "unless-stopped",
        "health": {
          "type": "process",
          "settleSeconds": 5
        },
        "command": [
          "string"
        ],
        "diagnostics": {
          "probes": {}
        },
        "ingress": {
          "port": 3000,
          "hostnames": [
            null
          ],
          "access": true
        }
      }
    ],
    "tunnel": {
      "image": "string",
      "revision": "string"
    },
    "jobs": []
  }
}
POST/node/v1/desired/update

Set what a node should be running

Scope
node:desired:update Admin-issued keys only.

Request bodyapplication/json

Request body of updateNodeDesiredState

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • workloadsrequired
    Type
    array of object
    Description
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • state
    Type
    string
    Description
    one of "running", "stopped" · default "running"
  • sourcerequired
    Type
    object
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • restart
    Type
    string
    Description
    one of "no", "always", "unless-stopped" · default "unless-stopped"
  • health
    Type
    NodeWorkloadHealth
    Description
    default {"type":"process","settleSeconds":5}
  • command
    Type
    array of string
    Description
  • diagnostics
    Type
    object
    Description
  • probes
    Type
    map of array of string
    Description
    default {}
  • {key}
    Type
    array of string
    Description
    1 to 32 items
  • ingress
    Type
    NodeWorkloadIngress
    Description
  • jobs
    Type
    array of object
    Description
    default []
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • sourcerequired
    Type
    object
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • commandrequired
    Type
    array of string
    Description
    1 to 64 items
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • timeoutSeconds
    Type
    integer
    Description
    1 to 86400 · default 3600
  • retainRuns
    Type
    integer
    Description
    1 to 20 · default 5
  • trigger
    Type
    NodeJobTrigger
    Description

Response 200The new desired state, with the generation it was given

Response of updateNodeDesiredState

  • datarequired
    Type
    NodeDesiredState
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • workloadsrequired
    Type
    array of NodeWorkload
    Description
  • tunnel
    Type
    object
    Description
  • imagerequired
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
  • jobs
    Type
    array of NodeJob
    Description
    default []

Example

curl
curl -X POST https://api.rsx.group/node/v1/desired/update \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "workloads": [
    {
      "id": "roxy",
      "state": "running",
      "source": {
        "repository": "git@github.com:RSXGroup/roxy.git",
        "revision": "7f31c2a",
        "build": "registry",
        "registry": {
          "package": null,
          "version": null
        },
        "image": "ghcr.io/rsxgroup/roxy@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b"
      },
      "env": {},
      "volumes": [],
      "resources": {},
      "restart": "unless-stopped",
      "health": {
        "type": "process",
        "settleSeconds": 5
      },
      "command": [
        "string"
      ],
      "diagnostics": {
        "probes": {}
      },
      "ingress": {
        "port": 3000,
        "hostnames": [
          "logs.rsx.group"
        ],
        "access": true
      }
    }
  ],
  "jobs": []
}'
200 response
{
  "data": {
    "generation": 7,
    "workloads": [
      {
        "id": "roxy",
        "state": "running",
        "source": {
          "repository": "git@github.com:RSXGroup/roxy.git",
          "revision": "7f31c2a",
          "build": "registry",
          "registry": null,
          "image": "ghcr.io/rsxgroup/roxy@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b"
        },
        "env": {},
        "volumes": [],
        "resources": {},
        "restart": "unless-stopped",
        "health": {
          "type": "process",
          "settleSeconds": 5
        },
        "command": [
          "string"
        ],
        "diagnostics": {
          "probes": {}
        },
        "ingress": {
          "port": 3000,
          "hostnames": [
            null
          ],
          "access": true
        }
      }
    ],
    "tunnel": {
      "image": "string",
      "revision": "string"
    },
    "jobs": []
  }
}
04

status

1 operation under /node/v1/status.

POST/node/v1/status/update

Report what a node is actually running

Scope
node:status:update Admin-issued keys only.

Request bodyapplication/json

Request body of updateNodeStatus

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    string
    Description
    one of "HEALTHY", "DEGRADED"
  • dockerrequired
    Type
    string, or null
    Description
  • workloadsrequired
    Type
    array of NodeWorkloadStatus
    Description
  • workloadIdrequired
    Type
    string
    Description
    at least 1 character
  • revisionrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
  • restartsrequired
    Type
    integer
    Description
    at least 0
  • conditionrequired
    Type
    string
    Description
  • health
    Type
    string, or null
    Description
    one of "STARTING", "HEALTHY", "UNHEALTHY"
  • version
    Type
    object, or null
    Description
  • versionrequired
    Type
    string, or null
    Description
    up to 64 characters
  • commitrequired
    Type
    string, or null
    Description
    up to 64 characters
  • deployment
    Type
    NodeWorkloadDeployment
    Description
  • host
    Type
    NodeHostUsage
    Description
  • cpuPercentrequired
    Type
    number, or null
    Description
    0 to 100
  • memoryrequired
    Type
    object, or null
    Description
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0
  • disksrequired
    Type
    array of object
    Description
    up to 4 items
  • pathrequired
    Type
    string
    Description
    1 to 256 characters
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0
  • jobs
    Type
    array of NodeJobStatus
    Description
    up to 100 items
  • jobIdrequired
    Type
    string
    Description
    1 to 63 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • runrequired
    Type
    NodeJobRun
    Description

Response 200The report as it was recorded

Response of updateNodeStatus

  • datarequired
    Type
    object
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    string
    Description
    one of "HEALTHY", "DEGRADED"
  • dockerrequired
    Type
    string, or null
    Description
  • workloadsrequired
    Type
    array of NodeWorkloadStatus
    Description
  • host
    Type
    NodeHostUsage
    Description
  • jobs
    Type
    array of NodeJobStatus
    Description
    up to 100 items
  • reportedAtrequired
    Type
    string, date-time
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/status/update \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "generation": 7,
  "status": "HEALTHY",
  "docker": "Docker 29.6.2 on linux/x86_64, 7.4 GiB memory, 12 CPUs",
  "workloads": [
    {
      "workloadId": "roxy",
      "revision": "7f31c2a",
      "state": "RUNNING",
      "restarts": 0,
      "condition": "READY",
      "health": "STARTING",
      "version": {
        "version": "string",
        "commit": "string"
      },
      "deployment": {
        "revision": "9a1b2c3",
        "outcome": "promoted",
        "detail": "its health check failed: connection refused",
        "at": "2026-10-09T09:14:02Z"
      }
    }
  ],
  "host": {
    "cpuPercent": 12.5,
    "memory": {
      "usedBytes": 6442450944,
      "totalBytes": 17179869184
    },
    "disks": [
      {
        "path": "/var/lib/docker",
        "usedBytes": 48318382080,
        "totalBytes": 107374182400
      }
    ]
  },
  "jobs": [
    {
      "jobId": "roxy-migrate",
      "revision": "7f31c2a",
      "run": {
        "runId": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
        "revision": "7f31c2a",
        "state": "succeeded",
        "exitCode": 0,
        "startedAt": "2026-10-09T09:14:05Z",
        "finishedAt": "2026-10-09T09:14:41Z",
        "detail": "exited 0 after 36s"
      }
    }
  ]
}'
200 response
{
  "data": {
    "nodeId": "macbook-dev-01",
    "generation": 7,
    "status": "HEALTHY",
    "docker": "Docker 29.6.2 on linux/x86_64, 7.4 GiB memory, 12 CPUs",
    "workloads": [
      {
        "workloadId": "roxy",
        "revision": "7f31c2a",
        "state": "RUNNING",
        "restarts": 0,
        "condition": "READY",
        "health": "STARTING",
        "version": {
          "version": "string",
          "commit": "string"
        },
        "deployment": {
          "revision": "9a1b2c3",
          "outcome": null,
          "detail": "its health check failed: connection refused",
          "at": "2026-10-09T09:14:02Z"
        }
      }
    ],
    "host": {
      "cpuPercent": 12.5,
      "memory": {
        "usedBytes": 6442450944,
        "totalBytes": 17179869184
      },
      "disks": [
        {
          "path": "/var/lib/docker",
          "usedBytes": 48318382080,
          "totalBytes": 107374182400
        }
      ]
    },
    "jobs": [
      {
        "jobId": "roxy-migrate",
        "revision": "7f31c2a",
        "run": {
          "runId": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
          "revision": "7f31c2a",
          "state": "succeeded",
          "exitCode": 0,
          "startedAt": "2026-10-09T09:14:05Z",
          "finishedAt": "2026-10-09T09:14:41Z",
          "detail": "exited 0 after 36s"
        }
      }
    ],
    "reportedAt": "2026-08-27T09:41:55Z"
  }
}
05

commands

2 operations under /node/v1/commands.

GET/node/v1/commands/get

Anything asked of this node since it last answered

Scope
node:commands:get Admin-issued keys only.

Query parameters

Query parameters of getNodeCommands

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$

Response 200Pending commands, oldest first

Response of getNodeCommands

  • datarequired
    Type
    array of NodeCommand
    Description
  • idrequired
    Type
    string
    Description
  • kindrequired
    Type
    string
    Description
    one of "reconcile", "restart", "redeploy", "logs", "diagnose", "secret", "update", "reboot", "shutdown", "run"
  • arguments
    Type
    map of any
    Description
    default {}
  • {key}
    Type
    any
    Description
  • issuedAtrequired
    Type
    string, date-time
    Description
  • issuedByrequired
    Type
    string
    Description

Example

curl
curl "https://api.rsx.group/node/v1/commands/get?nodeId=macbook-dev-01" \
  -H "Authorization: Bearer rsx_live_..."
200 response
{
  "data": [
    {
      "id": "01JD3M4K5N6P7Q8R9S0T1U2V3W",
      "kind": "restart",
      "arguments": {},
      "issuedAt": "2026-08-31T09:14:02Z",
      "issuedBy": "paige@rsx.group"
    }
  ]
}
POST/node/v1/commands/ack

Record what came of a command

Scope
node:commands:ack Admin-issued keys only.

Request bodyapplication/json

Request body of ackNodeCommand

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • commandIdrequired
    Type
    string
    Description
    1 to 64 characters
  • outcomerequired
    Type
    string
    Description
    one of "done", "failed"
  • detail
    Type
    string
    Description
    up to 2000 characters · default ""
  • output
    Type
    string, or null
    Description
    up to 200000 characters · default null

Response 200Whether there was a pending command to acknowledge

Response of ackNodeCommand

  • datarequired
    Type
    object
    Description
  • acknowledgedrequired
    Type
    boolean
    Description

Example

curl
curl -X POST https://api.rsx.group/node/v1/commands/ack \
  -H "Authorization: Bearer rsx_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "macbook-dev-01",
  "commandId": "string",
  "outcome": "done",
  "detail": "",
  "output": null
}'
200 response
{
  "data": {
    "acknowledged": true
  }
}
06

Schemas

Every named shape in this reference, as the operations above refer to it.

NodeAgent

NodeAgent

  • versionrequired
    Type
    string
    Description
    up to 32 characters
  • commitrequired
    Type
    string
    Description
    up to 64 characters
  • builtAtrequired
    Type
    string
    Description
    up to 32 characters

NodeSealing

NodeSealing

  • algorithmrequired
    Type
    string
    Description
    one of "x25519-hkdf-sha256-aes256gcm"
  • publicKeyrequired
    Type
    string
    Description
    matches ^[A-Za-z0-9+/]{43}=$

NodePlatform

NodePlatform

  • osrequired
    Type
    string
    Description
    at least 1 character
  • architecturerequired
    Type
    string
    Description
    at least 1 character
  • kernel
    Type
    string
    Description
    1 to 64 characters

NodeRuntime

NodeRuntime

  • dockerrequired
    Type
    boolean
    Description
  • versionrequired
    Type
    string
    Description

NodeCapacity

NodeCapacity

  • memoryBytesrequired
    Type
    integer
    Description
    at least 0
  • cpusrequired
    Type
    integer
    Description
    at least 0

NodeFeatures

NodeFeatures

  • buildrequired
    Type
    boolean
    Description
  • cloudflareTunnelrequired
    Type
    boolean
    Description
  • hostMetrics
    Type
    boolean
    Description

NodeWorkloadDeployment

NodeWorkloadDeployment

  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • outcomerequired
    Type
    NodeDeploymentOutcome
    Description
    one of "promoted", "rolled-back", "failed"
  • detailrequired
    Type
    string
    Description
    up to 1024 characters
  • atrequired
    Type
    string, date-time
    Description

NodeWorkloadStatus

NodeWorkloadStatus

  • workloadIdrequired
    Type
    string
    Description
    at least 1 character
  • revisionrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
  • restartsrequired
    Type
    integer
    Description
    at least 0
  • conditionrequired
    Type
    string
    Description
  • health
    Type
    string, or null
    Description
    one of "STARTING", "HEALTHY", "UNHEALTHY"
  • version
    Type
    object, or null
    Description
  • versionrequired
    Type
    string, or null
    Description
    up to 64 characters
  • commitrequired
    Type
    string, or null
    Description
    up to 64 characters
  • deployment
    Type
    NodeWorkloadDeployment
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • outcomerequired
    Type
    NodeDeploymentOutcome
    Description
    one of "promoted", "rolled-back", "failed"
  • detailrequired
    Type
    string
    Description
    up to 1024 characters
  • atrequired
    Type
    string, date-time
    Description

NodeHostUsage

NodeHostUsage

  • cpuPercentrequired
    Type
    number, or null
    Description
    0 to 100
  • memoryrequired
    Type
    object, or null
    Description
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0
  • disksrequired
    Type
    array of object
    Description
    up to 4 items
  • pathrequired
    Type
    string
    Description
    1 to 256 characters
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0

NodeJobRun

NodeJobRun

  • runIdrequired
    Type
    string
    Description
    1 to 64 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • staterequired
    Type
    string
    Description
    one of "running", "succeeded", "failed", "timed-out"
  • exitCoderequired
    Type
    integer, or null
    Description
  • startedAtrequired
    Type
    string, date-time, or null
    Description
  • finishedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string
    Description
    up to 1024 characters

NodeJobStatus

NodeJobStatus

  • jobIdrequired
    Type
    string
    Description
    1 to 63 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • runrequired
    Type
    NodeJobRun
    Description
  • runIdrequired
    Type
    string
    Description
    1 to 64 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • staterequired
    Type
    string
    Description
    one of "running", "succeeded", "failed", "timed-out"
  • exitCoderequired
    Type
    integer, or null
    Description
  • startedAtrequired
    Type
    string, date-time, or null
    Description
  • finishedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string
    Description
    up to 1024 characters

UpdateNodeStatus

UpdateNodeStatus

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    string
    Description
    one of "HEALTHY", "DEGRADED"
  • dockerrequired
    Type
    string, or null
    Description
  • workloadsrequired
    Type
    array of NodeWorkloadStatus
    Description
  • workloadIdrequired
    Type
    string
    Description
    at least 1 character
  • revisionrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
  • restartsrequired
    Type
    integer
    Description
    at least 0
  • conditionrequired
    Type
    string
    Description
  • health
    Type
    string, or null
    Description
    one of "STARTING", "HEALTHY", "UNHEALTHY"
  • version
    Type
    object, or null
    Description
  • versionrequired
    Type
    string, or null
    Description
    up to 64 characters
  • commitrequired
    Type
    string, or null
    Description
    up to 64 characters
  • deployment
    Type
    NodeWorkloadDeployment
    Description
  • host
    Type
    NodeHostUsage
    Description
  • cpuPercentrequired
    Type
    number, or null
    Description
    0 to 100
  • memoryrequired
    Type
    object, or null
    Description
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0
  • disksrequired
    Type
    array of object
    Description
    up to 4 items
  • pathrequired
    Type
    string
    Description
    1 to 256 characters
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0
  • jobs
    Type
    array of NodeJobStatus
    Description
    up to 100 items
  • jobIdrequired
    Type
    string
    Description
    1 to 63 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • runrequired
    Type
    NodeJobRun
    Description

NodeStatus

NodeStatus

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    string
    Description
    one of "HEALTHY", "DEGRADED"
  • dockerrequired
    Type
    string, or null
    Description
  • workloadsrequired
    Type
    array of NodeWorkloadStatus
    Description
  • workloadIdrequired
    Type
    string
    Description
    at least 1 character
  • revisionrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
  • restartsrequired
    Type
    integer
    Description
    at least 0
  • conditionrequired
    Type
    string
    Description
  • health
    Type
    string, or null
    Description
    one of "STARTING", "HEALTHY", "UNHEALTHY"
  • version
    Type
    object, or null
    Description
  • versionrequired
    Type
    string, or null
    Description
    up to 64 characters
  • commitrequired
    Type
    string, or null
    Description
    up to 64 characters
  • deployment
    Type
    NodeWorkloadDeployment
    Description
  • host
    Type
    NodeHostUsage
    Description
  • cpuPercentrequired
    Type
    number, or null
    Description
    0 to 100
  • memoryrequired
    Type
    object, or null
    Description
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0
  • disksrequired
    Type
    array of object
    Description
    up to 4 items
  • pathrequired
    Type
    string
    Description
    1 to 256 characters
  • usedBytesrequired
    Type
    integer
    Description
    at least 0
  • totalBytesrequired
    Type
    integer
    Description
    at least 0
  • jobs
    Type
    array of NodeJobStatus
    Description
    up to 100 items
  • jobIdrequired
    Type
    string
    Description
    1 to 63 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • runrequired
    Type
    NodeJobRun
    Description
  • reportedAtrequired
    Type
    string, date-time
    Description

RegisterNode

RegisterNode

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • versionrequired
    Type
    string
    Description
    up to 32 characters
  • commitrequired
    Type
    string
    Description
    up to 64 characters
  • builtAtrequired
    Type
    string
    Description
    up to 32 characters
  • sealing
    Type
    NodeSealing
    Description
  • algorithmrequired
    Type
    string
    Description
    one of "x25519-hkdf-sha256-aes256gcm"
  • publicKeyrequired
    Type
    string
    Description
    matches ^[A-Za-z0-9+/]{43}=$
  • platformrequired
    Type
    NodePlatform
    Description
  • osrequired
    Type
    string
    Description
    at least 1 character
  • architecturerequired
    Type
    string
    Description
    at least 1 character
  • kernel
    Type
    string
    Description
    1 to 64 characters
  • runtimerequired
    Type
    NodeRuntime
    Description
  • dockerrequired
    Type
    boolean
    Description
  • versionrequired
    Type
    string
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • memoryBytesrequired
    Type
    integer
    Description
    at least 0
  • cpusrequired
    Type
    integer
    Description
    at least 0
  • featuresrequired
    Type
    NodeFeatures
    Description
  • buildrequired
    Type
    boolean
    Description
  • cloudflareTunnelrequired
    Type
    boolean
    Description
  • hostMetrics
    Type
    boolean
    Description

Node

Node

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • versionrequired
    Type
    string
    Description
    up to 32 characters
  • commitrequired
    Type
    string
    Description
    up to 64 characters
  • builtAtrequired
    Type
    string
    Description
    up to 32 characters
  • sealing
    Type
    NodeSealing
    Description
  • algorithmrequired
    Type
    string
    Description
    one of "x25519-hkdf-sha256-aes256gcm"
  • publicKeyrequired
    Type
    string
    Description
    matches ^[A-Za-z0-9+/]{43}=$
  • platformrequired
    Type
    NodePlatform
    Description
  • osrequired
    Type
    string
    Description
    at least 1 character
  • architecturerequired
    Type
    string
    Description
    at least 1 character
  • kernel
    Type
    string
    Description
    1 to 64 characters
  • runtimerequired
    Type
    NodeRuntime
    Description
  • dockerrequired
    Type
    boolean
    Description
  • versionrequired
    Type
    string
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • memoryBytesrequired
    Type
    integer
    Description
    at least 0
  • cpusrequired
    Type
    integer
    Description
    at least 0
  • featuresrequired
    Type
    NodeFeatures
    Description
  • buildrequired
    Type
    boolean
    Description
  • cloudflareTunnelrequired
    Type
    boolean
    Description
  • hostMetrics
    Type
    boolean
    Description
  • registeredAtrequired
    Type
    string, date-time
    Description
  • lastSeenAtrequired
    Type
    string, date-time
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0

NodeSummary

NodeSummary

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • versionrequired
    Type
    string
    Description
    up to 32 characters
  • commitrequired
    Type
    string
    Description
    up to 64 characters
  • builtAtrequired
    Type
    string
    Description
    up to 32 characters
  • sealing
    Type
    NodeSealing
    Description
  • algorithmrequired
    Type
    string
    Description
    one of "x25519-hkdf-sha256-aes256gcm"
  • publicKeyrequired
    Type
    string
    Description
    matches ^[A-Za-z0-9+/]{43}=$
  • platformrequired
    Type
    NodePlatform
    Description
  • osrequired
    Type
    string
    Description
    at least 1 character
  • architecturerequired
    Type
    string
    Description
    at least 1 character
  • kernel
    Type
    string
    Description
    1 to 64 characters
  • runtimerequired
    Type
    NodeRuntime
    Description
  • dockerrequired
    Type
    boolean
    Description
  • versionrequired
    Type
    string
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • memoryBytesrequired
    Type
    integer
    Description
    at least 0
  • cpusrequired
    Type
    integer
    Description
    at least 0
  • featuresrequired
    Type
    NodeFeatures
    Description
  • buildrequired
    Type
    boolean
    Description
  • cloudflareTunnelrequired
    Type
    boolean
    Description
  • hostMetrics
    Type
    boolean
    Description
  • registeredAtrequired
    Type
    string, date-time
    Description
  • lastSeenAtrequired
    Type
    string, date-time
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    NodeStatus
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    string
    Description
    one of "HEALTHY", "DEGRADED"
  • dockerrequired
    Type
    string, or null
    Description
  • workloadsrequired
    Type
    array of NodeWorkloadStatus
    Description
  • host
    Type
    NodeHostUsage
    Description
  • jobs
    Type
    array of NodeJobStatus
    Description
    up to 100 items
  • reportedAtrequired
    Type
    string, date-time
    Description

NodeDetail

NodeDetail

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • agent
    Type
    NodeAgent
    Description
  • versionrequired
    Type
    string
    Description
    up to 32 characters
  • commitrequired
    Type
    string
    Description
    up to 64 characters
  • builtAtrequired
    Type
    string
    Description
    up to 32 characters
  • sealing
    Type
    NodeSealing
    Description
  • algorithmrequired
    Type
    string
    Description
    one of "x25519-hkdf-sha256-aes256gcm"
  • publicKeyrequired
    Type
    string
    Description
    matches ^[A-Za-z0-9+/]{43}=$
  • platformrequired
    Type
    NodePlatform
    Description
  • osrequired
    Type
    string
    Description
    at least 1 character
  • architecturerequired
    Type
    string
    Description
    at least 1 character
  • kernel
    Type
    string
    Description
    1 to 64 characters
  • runtimerequired
    Type
    NodeRuntime
    Description
  • dockerrequired
    Type
    boolean
    Description
  • versionrequired
    Type
    string
    Description
  • capacityrequired
    Type
    NodeCapacity
    Description
  • memoryBytesrequired
    Type
    integer
    Description
    at least 0
  • cpusrequired
    Type
    integer
    Description
    at least 0
  • featuresrequired
    Type
    NodeFeatures
    Description
  • buildrequired
    Type
    boolean
    Description
  • cloudflareTunnelrequired
    Type
    boolean
    Description
  • hostMetrics
    Type
    boolean
    Description
  • registeredAtrequired
    Type
    string, date-time
    Description
  • lastSeenAtrequired
    Type
    string, date-time
    Description
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    NodeStatus
    Description
  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • generationrequired
    Type
    integer
    Description
    at least 0
  • statusrequired
    Type
    string
    Description
    one of "HEALTHY", "DEGRADED"
  • dockerrequired
    Type
    string, or null
    Description
  • workloadsrequired
    Type
    array of NodeWorkloadStatus
    Description
  • host
    Type
    NodeHostUsage
    Description
  • jobs
    Type
    array of NodeJobStatus
    Description
    up to 100 items
  • reportedAtrequired
    Type
    string, date-time
    Description
  • desiredrequired
    Type
    string, or null
    Description

NodeWorkloadRegistryRef

NodeWorkloadRegistryRef

  • packagerequired
    Type
    string
    Description
    1 to 255 characters
  • versionrequired
    Type
    string
    Description
    1 to 128 characters

NodeWorkloadSource

NodeWorkloadSource

  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • packagerequired
    Type
    string
    Description
    1 to 255 characters
  • versionrequired
    Type
    string
    Description
    1 to 128 characters
  • imagerequired
    Type
    string
    Description

NodeWorkloadVolume

NodeWorkloadVolume

  • namerequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
  • pathrequired
    Type
    string
    Description

NodeWorkloadResources

NodeWorkloadResources

  • memory
    Type
    string
    Description
    matches ^\d+(B|[KMGT]i?)?$
  • cpu
    Type
    number
    Description
    more than 0

NodeWorkloadHealth

one of object, object

NodeWorkloadIngress

NodeWorkloadIngress

  • portrequired
    Type
    integer
    Description
    1 to 65535
  • hostnamesrequired
    Type
    array of string
    Description
    1 to 10 items
  • access
    Type
    boolean
    Description
    default true

NodeWorkload

NodeWorkload

  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • state
    Type
    string
    Description
    one of "running", "stopped" · default "running"
  • sourcerequired
    Type
    NodeWorkloadSource
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • namerequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
  • pathrequired
    Type
    string
    Description
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • memory
    Type
    string
    Description
    matches ^\d+(B|[KMGT]i?)?$
  • cpu
    Type
    number
    Description
    more than 0
  • restart
    Type
    string
    Description
    one of "no", "always", "unless-stopped" · default "unless-stopped"
  • health
    Type
    NodeWorkloadHealth
    Description
    default {"type":"process","settleSeconds":5}
  • command
    Type
    array of string
    Description
  • diagnostics
    Type
    object
    Description
  • probes
    Type
    map of array of string
    Description
    default {}
  • {key}
    Type
    array of string
    Description
    1 to 32 items
  • ingress
    Type
    NodeWorkloadIngress
    Description
  • portrequired
    Type
    integer
    Description
    1 to 65535
  • hostnamesrequired
    Type
    array of string
    Description
    1 to 10 items
  • access
    Type
    boolean
    Description
    default true

NodeJobTrigger

NodeJobTrigger

  • githubrequired
    Type
    object
    Description
  • repositoryrequired
    Type
    string
    Description
    3 to 140 characters · matches ^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$
  • refsrequired
    Type
    array of string
    Description
    1 to 10 items

NodeJob

NodeJob

  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • sourcerequired
    Type
    NodeWorkloadSource
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • commandrequired
    Type
    array of string
    Description
    1 to 64 items
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • namerequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
  • pathrequired
    Type
    string
    Description
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • memory
    Type
    string
    Description
    matches ^\d+(B|[KMGT]i?)?$
  • cpu
    Type
    number
    Description
    more than 0
  • timeoutSeconds
    Type
    integer
    Description
    1 to 86400 · default 3600
  • retainRuns
    Type
    integer
    Description
    1 to 20 · default 5
  • trigger
    Type
    NodeJobTrigger
    Description
  • githubrequired
    Type
    object
    Description
  • repositoryrequired
    Type
    string
    Description
    3 to 140 characters · matches ^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$
  • refsrequired
    Type
    array of string
    Description
    1 to 10 items

UpdateNodeDesiredState

UpdateNodeDesiredState

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • workloadsrequired
    Type
    array of object
    Description
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • state
    Type
    string
    Description
    one of "running", "stopped" · default "running"
  • sourcerequired
    Type
    object
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • restart
    Type
    string
    Description
    one of "no", "always", "unless-stopped" · default "unless-stopped"
  • health
    Type
    NodeWorkloadHealth
    Description
    default {"type":"process","settleSeconds":5}
  • command
    Type
    array of string
    Description
  • diagnostics
    Type
    object
    Description
  • probes
    Type
    map of array of string
    Description
    default {}
  • {key}
    Type
    array of string
    Description
    1 to 32 items
  • ingress
    Type
    NodeWorkloadIngress
    Description
  • jobs
    Type
    array of object
    Description
    default []
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • sourcerequired
    Type
    object
    Description
  • repository
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
    1 to 64 characters
  • build
    Type
    string
    Description
    one of "registry", "local" · default "registry"
  • registry
    Type
    NodeWorkloadRegistryRef
    Description
  • imagerequired
    Type
    string
    Description
  • commandrequired
    Type
    array of string
    Description
    1 to 64 items
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • timeoutSeconds
    Type
    integer
    Description
    1 to 86400 · default 3600
  • retainRuns
    Type
    integer
    Description
    1 to 20 · default 5
  • trigger
    Type
    NodeJobTrigger
    Description

NodeCommand

NodeCommand

  • idrequired
    Type
    string
    Description
  • kindrequired
    Type
    string
    Description
    one of "reconcile", "restart", "redeploy", "logs", "diagnose", "secret", "update", "reboot", "shutdown", "run"
  • arguments
    Type
    map of any
    Description
    default {}
  • {key}
    Type
    any
    Description
  • issuedAtrequired
    Type
    string, date-time
    Description
  • issuedByrequired
    Type
    string
    Description

NodeCommandRecord

NodeCommandRecord

  • idrequired
    Type
    string
    Description
  • kindrequired
    Type
    string
    Description
    one of "reconcile", "restart", "redeploy", "logs", "diagnose", "secret", "update", "reboot", "shutdown", "run"
  • arguments
    Type
    map of any
    Description
    default {}
  • {key}
    Type
    any
    Description
  • issuedAtrequired
    Type
    string, date-time
    Description
  • issuedByrequired
    Type
    string
    Description
  • staterequired
    Type
    string
    Description
    one of "pending", "done", "failed"
  • ackedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string, or null
    Description
  • outputrequired
    Type
    string, or null
    Description

NodeSealedSecret

NodeSealedSecret

  • vrequired
    Type
    number
    Description
    one of 1
  • keyrequired
    Type
    string
    Description
    up to 64 characters
  • epkrequired
    Type
    string
    Description
    up to 64 characters
  • noncerequired
    Type
    string
    Description
    up to 32 characters
  • ctrequired
    Type
    string
    Description
    up to 24000 characters

IssueNodeCommand

one of object, object, object, object, object, object, object, object, object, object

NodeTunnelToken

NodeTunnelToken

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • tunnelIdrequired
    Type
    string
    Description
  • tokenrequired
    Type
    string
    Description

NodeRunRecord

NodeRunRecord

  • runIdrequired
    Type
    string
    Description
    1 to 64 characters
  • revisionrequired
    Type
    string
    Description
    1 to 128 characters
  • staterequired
    Type
    string
    Description
    one of "running", "succeeded", "failed", "timed-out"
  • exitCoderequired
    Type
    integer, or null
    Description
  • startedAtrequired
    Type
    string, date-time, or null
    Description
  • finishedAtrequired
    Type
    string, date-time, or null
    Description
  • detailrequired
    Type
    string
    Description
    up to 1024 characters
  • jobIdrequired
    Type
    string
    Description
    1 to 63 characters
  • recordedAtrequired
    Type
    string, date-time
    Description

NodeTriggerMatch

NodeTriggerMatch

  • nodeIdrequired
    Type
    string
    Description
  • jobIdrequired
    Type
    string
    Description
  • outcomerequired
    Type
    string
    Description
    one of "queued", "issued", "ignored"
  • detailrequired
    Type
    string
    Description

NodeTriggerResult

NodeTriggerResult

  • dedupedrequired
    Type
    boolean
    Description
  • ignoredrequired
    Type
    string, or null
    Description
  • matchedrequired
    Type
    array of NodeTriggerMatch
    Description
  • nodeIdrequired
    Type
    string
    Description
  • jobIdrequired
    Type
    string
    Description
  • outcomerequired
    Type
    string
    Description
    one of "queued", "issued", "ignored"
  • detailrequired
    Type
    string
    Description

NodeGithubPush

NodeGithubPush

  • deliveryIdrequired
    Type
    string
    Description
    1 to 128 characters
  • repositoryrequired
    Type
    string
    Description
    1 to 255 characters
  • refrequired
    Type
    string
    Description
    1 to 1024 characters
  • commitrequired
    Type
    string
    Description
    1 to 128 characters
  • pusher
    Type
    string
    Description
    up to 128 characters · default ""

NodePendingTrigger

NodePendingTrigger

  • nodeIdrequired
    Type
    string
    Description
  • jobIdrequired
    Type
    string
    Description
  • commitrequired
    Type
    string
    Description
  • refrequired
    Type
    string
    Description
  • generationrequired
    Type
    integer
    Description
  • actorrequired
    Type
    string
    Description
  • pusherrequired
    Type
    string
    Description
  • queuedAtrequired
    Type
    string, date-time
    Description
  • commandIdrequired
    Type
    string, or null
    Description

NodeReleaseAsset

NodeReleaseAsset

  • assetIdrequired
    Type
    integer
    Description
  • namerequired
    Type
    string
    Description
  • sizerequired
    Type
    integer
    Description
    at least 0
  • sha256required
    Type
    string, or null
    Description
  • targetrequired
    Type
    string, or null
    Description

NodeRelease

NodeRelease

  • tagrequired
    Type
    string
    Description
  • namerequired
    Type
    string
    Description
  • publishedAtrequired
    Type
    string, or null
    Description
  • prereleaserequired
    Type
    boolean
    Description
  • assetsrequired
    Type
    array of NodeReleaseAsset
    Description
  • assetIdrequired
    Type
    integer
    Description
  • namerequired
    Type
    string
    Description
  • sizerequired
    Type
    integer
    Description
    at least 0
  • sha256required
    Type
    string, or null
    Description
  • targetrequired
    Type
    string, or null
    Description

UpdateNodeFromRelease

UpdateNodeFromRelease

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • version
    Type
    string
    Description
    1 to 128 characters
  • platform
    Type
    string
    Description
    1 to 64 characters
  • assetId
    Type
    integer
    Description

NodeAuditEvent

NodeAuditEvent

  • idrequired
    Type
    string
    Description
  • actorrequired
    Type
    string
    Description
  • actionrequired
    Type
    string
    Description
    one of "node.registered", "desired.updated", "command.issued", "tunnel.token.revealed", "tunnel.token.sent", "job.triggered", "job.trigger.dropped"
  • targetTyperequired
    Type
    string
    Description
    one of "node"
  • targetIdrequired
    Type
    string
    Description
  • targetLabelrequired
    Type
    string, or null
    Description
  • atrequired
    Type
    string, date-time
    Description
  • detailrequired
    Type
    string, or null
    Description

NodeDesiredState

NodeDesiredState

  • generationrequired
    Type
    integer
    Description
    at least 0
  • workloadsrequired
    Type
    array of NodeWorkload
    Description
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • state
    Type
    string
    Description
    one of "running", "stopped" · default "running"
  • sourcerequired
    Type
    NodeWorkloadSource
    Description
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • restart
    Type
    string
    Description
    one of "no", "always", "unless-stopped" · default "unless-stopped"
  • health
    Type
    NodeWorkloadHealth
    Description
    default {"type":"process","settleSeconds":5}
  • command
    Type
    array of string
    Description
  • diagnostics
    Type
    object
    Description
  • probes
    Type
    map of array of string
    Description
    default {}
  • {key}
    Type
    array of string
    Description
    1 to 32 items
  • ingress
    Type
    NodeWorkloadIngress
    Description
  • tunnel
    Type
    object
    Description
  • imagerequired
    Type
    string
    Description
  • revisionrequired
    Type
    string
    Description
  • jobs
    Type
    array of NodeJob
    Description
    default []
  • idrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • sourcerequired
    Type
    NodeWorkloadSource
    Description
  • commandrequired
    Type
    array of string
    Description
    1 to 64 items
  • env
    Type
    map of string
    Description
    default {}
  • {key}
    Type
    string
    Description
    up to 4096 characters
  • volumes
    Type
    array of NodeWorkloadVolume
    Description
    default []
  • resources
    Type
    NodeWorkloadResources
    Description
    default {}
  • timeoutSeconds
    Type
    integer
    Description
    1 to 86400 · default 3600
  • retainRuns
    Type
    integer
    Description
    1 to 20 · default 5
  • trigger
    Type
    NodeJobTrigger
    Description

AckNodeCommand

AckNodeCommand

  • nodeIdrequired
    Type
    string
    Description
    1 to 63 characters · matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$
  • commandIdrequired
    Type
    string
    Description
    1 to 64 characters
  • outcomerequired
    Type
    string
    Description
    one of "done", "failed"
  • detail
    Type
    string
    Description
    up to 2000 characters · default ""
  • output
    Type
    string, or null
    Description
    up to 200000 characters · default null