Skip to content

Delete a StartupProfile

DELETE
/apis/nodus.dev/v1/startupprofiles/{name}
curl --request DELETE \
--url https://example.com/apis/nodus.dev/v1/startupprofiles/example
name
required
string

The object’s name.

dryRun
string
fieldValidation
string
fieldManager
string
propagationPolicy
string
Idempotency-Key
string
If-Match
string

OK

Media type application/json

StartupProfile is versioned organization-owned Sandbox launch configuration. Writing one creates no compute.

object
apiVersion
string
kind
string
metadata
object
annotations
object
key
additional properties
string
creationTimestamp
string
deletionGracePeriodSeconds
integer format: int64
deletionTimestamp
string
finalizers
Array<string>
nullable
generateName
string
generation
integer format: int64
labels
object
key
additional properties
string
managedFields
Array<object>
nullable
object
apiVersion
string
fieldsType
string
fieldsV1
object
key
additional properties
manager
string
operation
string
subresource
string
time
string
name
string
namespace
string
ownerReferences
Array<object>
nullable
object
apiVersion
required
string
blockOwnerDeletion
boolean
controller
boolean
kind
required
string
name
required
string
uid
required
string
resourceVersion
string
selfLink
string
uid
string
spec
required

StartupProfileSpec contains references and launch defaults, never credential values or setup hooks.

object
defaults
required

SandboxStartupDefaults is the bounded subset of SandboxSpec accepted in a startup profile. Objects merge recursively; lists replace. resources.gpu and virtualization accept null to clear an inherited value; all other fields reject null. Explicit empty lists and false remain present across storage/replay.

object
args
Array<string>
command
Array<string>
continuity

SandboxContinuity sets what survives a stop.

object
mode

Mode is Snapshotted (the CPU default) or Ephemeral (the GPU default). GPU Snapshotted requires StateDir; An explicit StateDir saves after process exit; CPU without one saves /nodus/state before shutdown. Every start launches a fresh process from the image, without rootfs or GPU-memory recovery.

string
stateDir

StateDir opts a Sandbox into saving one local directory on stop and restoring it on start. The path is immutable, starts empty, and must not contain remote filesystem mounts. Requires Snapshotted mode.

string
env
Array<object>

EnvVar is one environment variable: a literal value or a Secret key.

object
name
required

Name matches ^[A-Za-z_][A-Za-z0-9_]*$.

string
value

Value is the literal value.

string
valueFrom

EnvVarSource names where an env value comes from.

object
secretKeyRef

SecretKeySelector selects one key of a Secret.

object
key
required

Key is the key within it.

string
name
required

Name is the Secret.

string
fuseMount
boolean
image
string
imagePullSecrets
Array<string>
lifecycle

SandboxLifecycleSpec sets when a Sandbox stops or is deleted without being asked.

object
idleTimeout

IdleTimeout stops (or deletes, with onIdle Delete) the Sandbox after this long with no running command, no file request and no terminal input: 0s never, or 1m–24h (default 5m). A silent open terminal is idle.

string
maxLifetime

MaxLifetime deletes the Sandbox this long after it was created, counting stopped time: 1m–720h (default 24h).

string
onIdle

OnIdle is Stop (the default) or Delete.

string
placement

SandboxPlacement carries the placement fields supported by a Sandbox. It intentionally excludes Job-only profile, pool, community and interruptibility settings, so a Sandbox request cannot silently ignore them.

object
regions

Regions are Nodus region classes such as us or ca; empty means any region.

Array<string>
nullable
resources

Resources are capacity floors. For GPU work the offering’s host shape applies if larger.

object
cpu

CPU is the vCPU floor.

string
disk

Disk is the ephemeral disk floor.

string
gpu

GPURequest asks for accelerators. A family (H100) matches any of its variants and never another family.

object
count

Count is the GPUs per node: 1, 2, 4 or 8.

integer format: int32
exact

Exact pins the exact variant instead of matching the family.

boolean
interconnect

Interconnect is Any or NVLink.

string
minMemory

MinMemory is the per-GPU memory floor.

string
type

Type lists 1–8 accelerator ids or families from the catalog.

Array<string>
nullable
memory

Memory is the host memory floor.

string
nodes

Nodes above 1 is shorthand for spec.distributed.nodes and is stored in that form.

integer format: int32
secrets
Array<object>

SecretMount mounts one Secret, optionally pinned to a version. The bare name is accepted on write.

object
name
required

Name is the Secret.

string
version

Version pins a version; unset pins the latest at admission.

integer format: int32
virtualization

SandboxVirtualization selects a parent capability, not a child VM count or a GPU partition.

object
profile
required

Profile is gpu-child-v1: one exclusive GPU parent with KVM for customer-managed child VMs (Alpha). Children share the parent’s GPU; this does not promise hardware isolation or saved GPU memory.

string
workingDir
string
disabled

Disabled refuses new resolutions without changing existing Sandboxes.

boolean
Example generated
{
"apiVersion": "example",
"kind": "example",
"metadata": {
"annotations": {
"additionalProperty": "example"
},
"creationTimestamp": "example",
"deletionGracePeriodSeconds": 1,
"deletionTimestamp": "example",
"finalizers": [
"example"
],
"generateName": "example",
"generation": 1,
"labels": {
"additionalProperty": "example"
},
"managedFields": [
{
"apiVersion": "example",
"fieldsType": "example",
"fieldsV1": {
"additionalProperty": "example"
},
"manager": "example",
"operation": "example",
"subresource": "example",
"time": "example"
}
],
"name": "example",
"namespace": "example",
"ownerReferences": [
{
"apiVersion": "example",
"blockOwnerDeletion": true,
"controller": true,
"kind": "example",
"name": "example",
"uid": "example"
}
],
"resourceVersion": "example",
"selfLink": "example",
"uid": "example"
},
"spec": {
"defaults": {
"args": [
"example"
],
"command": [
"example"
],
"continuity": {
"mode": "example",
"stateDir": "example"
},
"env": [
{
"name": "example",
"value": "example",
"valueFrom": {
"secretKeyRef": {
"key": "example",
"name": "example"
}
}
}
],
"fuseMount": true,
"image": "example",
"imagePullSecrets": [
"example"
],
"lifecycle": {
"idleTimeout": "example",
"maxLifetime": "example",
"onIdle": "example"
},
"placement": {
"regions": [
"example"
]
},
"resources": {
"cpu": "example",
"disk": "example",
"gpu": {
"count": 1,
"exact": true,
"interconnect": "example",
"minMemory": "example",
"type": [
"example"
]
},
"memory": "example",
"nodes": 1
},
"secrets": [
{
"name": "example",
"version": 1
}
],
"virtualization": {
"profile": "example"
},
"workingDir": "example"
},
"disabled": true
}
}

An error: a metav1.Status whose reason is a registered code.

Media type application/json

Status is the error body of every API response: a Kubernetes metav1.Status (so kubectl and client-go understand it) plus three top-level extensions that those clients ignore (ADR-028).

object
apiVersion
string
code
integer format: int32
details
object
causes
Array<object>
nullable
object
field
string
message
string
reason
string
group
string
kind
string
name
string
retryAfterSeconds
integer format: int32
uid
string
docs

Docs is the URL of the code’s docs page.

string
fix

Fix says what to do next, for example a CLI command or the field to change.

string
kind
string
message
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
reason
string
requestId

RequestID identifies the request in logs and support tickets.

string
status
string
Example generated
{
"apiVersion": "example",
"code": 1,
"details": {
"causes": [
{
"field": "example",
"message": "example",
"reason": "example"
}
],
"group": "example",
"kind": "example",
"name": "example",
"retryAfterSeconds": 1,
"uid": "example"
},
"docs": "example",
"fix": "example",
"kind": "example",
"message": "example",
"metadata": {
"continue": "example",
"remainingItemCount": 1,
"resourceVersion": "example",
"selfLink": "example",
"shardInfo": {
"selector": "example"
}
},
"reason": "example",
"requestId": "example",
"status": "example"
}