v57

latestOpenAPI 3.1.0Apache-2.0raw.githubusercontent.com2026-08-012143051018.3 KB
Tray

Firmware update Trays

Update firmware on Trays with optional filters. If no filter is specified, targets all trays in the Site.

Filter constraints:

  • rackId and rackName are mutually exclusive
  • rackId/rackName cannot be combined with ids/componentIds (rack-level vs component-level targeting)
  • componentIds requires type to be specified

Org must have an Infrastructure Provider entity. User must have authorization role with PROVIDER_ADMIN suffix.

patch/v2/org/{org}/nico/tray/firmware

Request body

siteIdstring uuid required

ID of the Site

versionstring nullable

Target firmware version.

targetsstring[]

Optional subset of firmware targets to update within each matched 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 version to be set. The special target dpu, valid only on compute trays, requests DPU reprovisioning on each matched host. Unlike the other targets, dpu is NOT covered by the "omitted/empty means everything" default — it must be listed explicitly. version is ignored on the dpu branch; the target firmware version comes from site configuration.
ruleIdstring uuid

Optional Operation Rule UUID. When set, pins every task spawned by this batch to the named rule and overrides Flow's default rule resolution.

overrideReadinessCheckboolean

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.

Example request

{
  "siteId": "550e8400-e29b-41d4-a716-446655440000",
  "filter": {
    "type": "switch"
  },
  "version": "24.11.0",
  "targets": [
    "bmc",
    "nvos"
  ]
}

Response

OK

taskIdsstring[]

List of task IDs created for the firmware update operation

Example response

{
  "taskIds": [
    "550e8400-e29b-41d4-a716-446655440000"
  ]
}