Firmware update a Rack
Update firmware on a Rack identified by Rack UUID.
Org must have an Infrastructure Provider entity. User must have authorization role with PROVIDER_ADMIN suffix.
Authentication
AuthorizationBearer
```
export JWT_BEARER_TOKEN="<jwt-bearer-token>"
# Example org name: "acme-inc
export ORG_NAME=<org-name>
# Use the JWT bearer token in your API request auth header:
curl -v -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $JWT_BEARER_TOKEN" https://nico-rest-api.nico.svc.cluster.local/v2/org/$ORG_NAME/nico/user/current
```
Path parameters
org
Name of the Org
id
ID of the Rack
Request
This endpoint expects an object.
siteId
ID of the Site
version
Target firmware version.
targets
Optional subset of firmware targets to update within the targeted tray.
Names are lowercase and select sub-parts of the tray
(BMC, BIOS, etc.). The accepted set per tray type comes from
the Flow service’s NICo proto bindings (which mirror Core’s
per-tray-type enums in NICo-core/crates/rpc/proto/forge.proto),
so the supported values track Core as new sub-parts are added:
- switch trays (NvSwitchComponent): currently bmc, cpld, bios, nvos
- powershelf trays (PowerShelfComponent): currently pmc, psu
- compute trays (ComputeTrayComponent): currently bmc, bios
(currently NOT honored end-to-end: the NICo compute-firmware
path goes through SetFirmwareUpdateTimeWindow + auto-update,
which has no per-target selection; the request is logged
and the whole bundle is applied. Will be honored once
compute moves to UpdateComponentFirmware.)
Omitted or empty means “update everything in the bundle”
(the historical default) for compute-tray-internal targets.
Unknown names are rejected. Requires
versionto be set. The special targetdpu, valid only on compute trays, requests DPU reprovisioning on the matched host. Unlike the other targets,dpuis NOT covered by the “omitted/empty means everything” default — it must be listed explicitly.versionis ignored on thedpubranch; the target firmware version comes from site configuration.
ruleId
Optional Operation Rule UUID. When set, pins this firmware update to
the named rule and overrides Flow's default rule resolution.
overrideReadinessCheck
When true, proceed even if one or more target components (or hosts on the owning rack for rack-scoped components) are reported as not ready by their persisted status. Intended for operator-supervised maintenance.
Response
OK
taskIds
List of task IDs created for the firmware update operation
Errors
400
Bad Request Error
403
Forbidden Error