Skip to content

The releases newer than the cluster's.

GET
/v1/admin/upgrades/available
Code sample: Shell / cURL
curl --request GET \
--url https://stratum.example.com/v1/admin/upgrades/available \
--header 'Authorization: Bearer <token>'

The releases the mirror’s signed index lists that are newer than the version the cluster runs, newest first, each with its type, its CVEs and whether the cluster can upgrade to it directly; then the state of the update check. Nothing is installed: plan and start an upgrade by version (GET /v1/admin/upgrades/plan?release=<version>). Install-scope; gates on upgrade:DescribeUpgrade.

The releases.

Media typeapplication/json

The releases on the mirror newer than the one the cluster runs, newest first, from the last index read. Empty while the check is off, and until the mirror set now has been read once.

object
running
required

The version the cluster runs (its oldest node); empty when not known.

string
runningDevelopment
required

The cluster runs a development build; every release is offered and none is compared with it.

boolean
mirror
required

Where the control plane looks for newer releases. It reads the mirror’s signed release index every checkIntervalSeconds and lists the releases newer than the cluster’s; it never installs one by itself.

object
url
required

The release mirror. The index is <url>/releases/stratum/index.json.

string
enabled
required

False turns the update check off, for an install without internet access.

boolean
checkIntervalSeconds
required

How often the index is read.

integer
defaultUrl
required

The mirror used when none is set.

string
updatedAt
string format: date-time
nullable
updatedBy
required
string
check
required

The update check. error is why the last attempt failed (empty when it worked), errorKind unreachable (the mirror did not answer) or invalid (its index did not verify, or is older than one already read from it). The releases of the last index that verified stay listed.

object
requestedAt

The last “check now”.

string format: date-time
nullable
attemptedAt
string format: date-time
nullable
checkedAt

When an index last verified.

string format: date-time
nullable
nextCheckAt

Null while the check is off.

string format: date-time
nullable
error
required
string
errorKind
required
string
Allowed values: "" unreachable invalid
indexUrl
required

Where the listed releases come from: the mirror set, or with a release token the stable channel (ReleaseToken.stableUrl), or the default mirror when that channel refused the token.

string
indexGeneratedAt
string format: date-time
nullable
keyId
required

The release key that signed the index.

string
items
required
Array<object>

A release on the mirror newer than the one the cluster runs.

object
version
required
string
type
required

feature is X.Y.0, a batch of features. fix and security are X.Y.Z with fixes only; security fixes the vulnerabilities in cves.

string
Allowed values: feature fix security
cves
required
Array<string>
publishedAt
required
string format: date-time
detectedAt
required

When this cluster first saw the release on the mirror.

string format: date-time
notes

The release notes URL.

string
minUpgradeFrom

The oldest version that upgrades to this release directly.

string
requiredStop
required

No upgrade may skip this release; a cluster older than it upgrades to it first.

boolean
upgradable
required

False when the cluster cannot upgrade to it directly; reason says why.

boolean
reason
string
path
required

The way from the version the cluster runs to a release, from the upgrade paths in the signed release index: direct, via the releases in via first (a required stop, a minimum version), broken (a known-broken upgrade: use use instead), reinstall (use starts the upgrade chain: install it fresh from its ISO), unreachable, or unchecked (a development build, a version not known, or no index that lists the release). The plan’s upgrade-path precheck says the same.

object
kind
required
string
Allowed values: direct via broken reinstall unreachable unchecked
via
required

The releases to upgrade to first, in order.

Array<string>
ticket

The ticket of a broken upgrade.

string
use

The release to upgrade to instead of a broken one; for reinstall, the release that starts the upgrade chain, to install fresh.

string
message
required
string

Example

{
"running": "0.2.0",
"mirror": {
"url": "https://mirror.example.com",
"checkIntervalSeconds": 21600,
"defaultUrl": "https://mirror.example.com"
},
"check": {
"errorKind": ""
},
"items": [
{
"version": "0.3.0",
"type": "feature",
"cves": [
"CVE-2026-12345"
],
"path": {
"kind": "direct",
"via": [
"0.3.0"
],
"use": "0.2.3",
"message": "0.2.1 cannot upgrade straight to 0.2.2: upgrade to 0.2.3 instead"
}
}
]
}

Authenticated but not authorized.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}

Upstream temporarily unavailable (driver / scheduler / dependency).

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}