Skip to content

List or watch offerings

GET
/apis/nodus.dev/v1/offerings
curl --request GET \
--url https://example.com/apis/nodus.dev/v1/offerings
labelSelector
string
fieldSelector
string
limit
string
continue
string
watch
string
resourceVersion
string
allowWatchBookmarks
string
timeoutSeconds
string

OK

Media type application/json
object
apiVersion
string
items
required
Array<object>

Offering is a class of capacity Nodus can run work on now: an accelerator and count (or a CPU shape), a region class and interruptible or on-demand, with live customer prices and availability. Offerings are read-only and the same for every organization; name one in spec.placement.offerings to restrict where work runs.

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

OfferingSpec is the shape of a capacity class.

object
accelerator

OfferingAccelerator is an accelerator from the Nodus accelerator catalog.

object
arch

Arch is the CUDA architecture, such as sm_90.

string
family
required

Family is the accelerator family, such as H100, that spec.resources.gpu.type matches.

string
formFactor

FormFactor is the board form factor, such as SXM or PCIe.

string
id
required

ID is the exact accelerator variant, such as H100-SXM.

string
memory
required

Memory is the memory of one accelerator, such as 80Gi.

string
category
required

Category is GPU or CPU.

string
count
required

Count is the accelerators per machine; 0 for CPU offerings.

integer format: int32
host
required

OfferingHost is the CPU, memory and disk of a machine.

object
cpu
required

CPU is the vCPUs.

string
disk

Disk is the ephemeral disk, when the class reports one.

string
memory
required

Memory is the host memory.

string
interconnect

Interconnect is the accelerator interconnect, such as NVLink, when it is verified.

string
interruptible
required

Interruptible capacity can be reclaimed while running and costs less; Nodus checkpoints and resumes work on it.

boolean
multiNode
required

MultiNode reports that machines of this class can run multi-node (gang) Jobs together.

boolean
regionClass
required

RegionClass is where the machines are, such as us or eu; unknown when the location is not reported.

string
supports
required

OfferingSupports are the kinds of work an Offering can run.

object
gangs
required

Gangs (multi-node Jobs) can run on this class.

boolean
jobs
required

Jobs can run on this class.

boolean
restrictedEgress
required

RestrictedEgress reports that outbound network restrictions are enforced on this class.

boolean
sandboxes
required

Sandboxes can run on this class.

boolean
workspaces
required

Workspaces can run on this class.

boolean
status

OfferingStatus is the live price and availability of a capacity class.

object
availability
required

Availability is Available, Limited or Unavailable.

string
availableNow
required

AvailableNow is a lower bound of the machines free now.

integer format: int32
conditions

Conditions carry Available, False with reason NoCapacity when no machine is free.

Array<object>
nullable
object
lastTransitionTime
required
string
message
required
string
observedGeneration
integer format: int64
reason
required
string
status
required
string
type
required
string
interruptionRatePerHour

InterruptionRatePerHour is the observed reclaims per machine-hour; set for interruptible offerings only.

string
listPriceUSDPerHour

ListPriceUSDPerHour is the published list price per machine-hour.

string
observedTime

ObservedTime is when the price and availability were last confirmed.

string
priceUSDPerHour
required

OfferingPrice is a customer rate range.

object
from
required

From is the rate of the cheapest machine free now, which the default placement profile takes, or of the cheapest machine when none is free, such as “2.85”.

string
typical

Typical is the median current rate of the machines free now, or of every machine when none is free.

string
startup

OfferingStartup is the observed time from request to a running machine.

object
p50
required

P50 is the median startup time.

string
p90
required

P90 is the 90th-percentile startup time.

string
kind
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
Example generated
{
"apiVersion": "example",
"items": [
{
"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": {
"accelerator": {
"arch": "example",
"family": "example",
"formFactor": "example",
"id": "example",
"memory": "example"
},
"category": "example",
"count": 1,
"host": {
"cpu": "example",
"disk": "example",
"memory": "example"
},
"interconnect": "example",
"interruptible": true,
"multiNode": true,
"regionClass": "example",
"supports": {
"gangs": true,
"jobs": true,
"restrictedEgress": true,
"sandboxes": true,
"workspaces": true
}
},
"status": {
"availability": "example",
"availableNow": 1,
"conditions": [
{
"lastTransitionTime": "example",
"message": "example",
"observedGeneration": 1,
"reason": "example",
"status": "example",
"type": "example"
}
],
"interruptionRatePerHour": "example",
"listPriceUSDPerHour": "example",
"observedTime": "example",
"priceUSDPerHour": {
"from": "example",
"typical": "example"
},
"startup": {
"p50": "example",
"p90": "example"
}
}
}
],
"kind": "example",
"metadata": {
"continue": "example",
"remainingItemCount": 1,
"resourceVersion": "example",
"selfLink": "example",
"shardInfo": {
"selector": "example"
}
}
}

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"
}