---
title: "Update SKU"
method: PATCH
path: "/v2/org/{org}/nico/sku/{skuId}"
tags: ["SKU"]
---

# Update SKU

`PATCH /v2/org/{org}/nico/sku/{skuId}`

Update selected mutable fields on a SKU. The Site is determined from the saved SKU record.

Fields omitted from the request retain their current values. If a user updates the components field,
the schema version will be updated to the current version (5).

The Org must have an Infrastructure Provider that owns the SKU's Site. The user must have an authorization role with the `PROVIDER_ADMIN` suffix.

## Request body

- SkuUpdateRequest — Request data to update a SKU. At least one of description, deviceType, or components must be provided. The service preserves the schema version for metadata-only updates. Component updates replace the SKU using the current schema version, migrating legacy SKU schemas to the current format.
  - `description` string — Replacement SKU description
  - `deviceType` string — Replacement device type identifier
  - `components` SkuComponents — Hardware components that make up a SKU
    - `cpus` SkuCpu[] — CPU components
      - `vendor` string — Vendor of the CPU
      - `model` string — Model of the CPU
      - `threadCount` integer — Number of threads for the CPU
      - `count` integer — Number of CPUs present
    - `gpus` SkuGpu[] — GPU components
      - `vendor` string — Vendor of the GPU
      - `model` string — Model of the GPU
      - `totalMemory` string — Total memory of the GPU (e.g. "80GB HBM3")
      - `count` integer — Number of GPUs present
    - `memory` SkuMemory[] — Memory components
      - `capacityMb` integer — Capacity in megabytes
      - `memoryType` string — Type of memory (e.g. "DDR4", "DDR5")
      - `count` integer — Number of memory modules present
    - `storage` SkuStorage[] — Storage components
      - `vendor` string — Storage vendor used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 does not use this field.
      - `model` string — Informational storage model. Starting with the 2.1 release, NICo does not use this field for storage matching or validation.
      - `capacityMb` integer — Storage capacity in megabytes used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 uses minSizeMiB and maxSizeMiB instead.
      - `count` integer — Number of storage devices present
      - `minSizeMiB` integer, nullable — Inclusive minimum size in MiB for each storage device. Null or omission means no lower bound. Used for SKU schema version 5 and later.
      - `maxSizeMiB` integer, nullable — Inclusive maximum size in MiB for each storage device. Null or omission means no upper bound. Used for SKU schema version 5 and later.
      - `pciPatterns` string[] — Regular expressions matched against storage sysfs PCI paths. An empty or omitted list disables PCI location matching. Used for SKU schema version 5 and later.
    - `chassis` SkuChassis — Chassis component in a SKU
      - `vendor` string — Vendor of the chassis
      - `model` string — Model of the chassis
      - `architecture` string — Architecture of the chassis
    - `ethernetDevices` SkuEthernetDevice[] — Read-only Ethernet device components reported by Core. Omit this property from REST mutation requests; null and an empty array are accepted for compatibility, while a non-empty array is rejected with HTTP 400.
      - `vendor` string — Vendor of the ethernet device
      - `model` string — Model of the ethernet device
      - `count` integer — Number of ethernet devices present
      - `isConnected` boolean — Whether the ethernet device is connected
    - `infinibandDevices` SkuInfinibandDevice[] — Infiniband device components
      - `vendor` string — Vendor of the infiniband device
      - `model` string — Model of the infiniband device
      - `count` integer — Number of infiniband devices present
      - `inactiveDevices` integer[] — Zero-based indexes of inactive devices
    - `tpm` SkuTpm[] — TPM components
      - `vendor` string — Vendor of the TPM
      - `version` string — Version of the TPM

## Response `200`

OK

- Sku — A SKU (Stock Keeping Unit) represents a unique hardware configuration discovered at a site. SKUs are automatically derived from machine hardware characteristics and used to group similar machines.
  - `id` string — Unique identifier for the SKU
  - `siteId` string, uuid — ID of the Site this SKU belongs to
  - `description` string — Human-readable SKU description
  - `schemaVersion` integer — Core SKU schema version when available
  - `deviceType` string, nullable — Optional device type identifier (e.g. "gpu", "cpu", "storage")
  - `associatedMachineIds` string[] — List of machine IDs associated with this SKU
  - `components` SkuComponents — Hardware components that make up a SKU
    - `cpus` SkuCpu[] — CPU components
      - `vendor` string — Vendor of the CPU
      - `model` string — Model of the CPU
      - `threadCount` integer — Number of threads for the CPU
      - `count` integer — Number of CPUs present
    - `gpus` SkuGpu[] — GPU components
      - `vendor` string — Vendor of the GPU
      - `model` string — Model of the GPU
      - `totalMemory` string — Total memory of the GPU (e.g. "80GB HBM3")
      - `count` integer — Number of GPUs present
    - `memory` SkuMemory[] — Memory components
      - `capacityMb` integer — Capacity in megabytes
      - `memoryType` string — Type of memory (e.g. "DDR4", "DDR5")
      - `count` integer — Number of memory modules present
    - `storage` SkuStorage[] — Storage components
      - `vendor` string — Storage vendor used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 does not use this field.
      - `model` string — Informational storage model. Starting with the 2.1 release, NICo does not use this field for storage matching or validation.
      - `capacityMb` integer — Storage capacity in megabytes used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 uses minSizeMiB and maxSizeMiB instead.
      - `count` integer — Number of storage devices present
      - `minSizeMiB` integer, nullable — Inclusive minimum size in MiB for each storage device. Null or omission means no lower bound. Used for SKU schema version 5 and later.
      - `maxSizeMiB` integer, nullable — Inclusive maximum size in MiB for each storage device. Null or omission means no upper bound. Used for SKU schema version 5 and later.
      - `pciPatterns` string[] — Regular expressions matched against storage sysfs PCI paths. An empty or omitted list disables PCI location matching. Used for SKU schema version 5 and later.
    - `chassis` SkuChassis — Chassis component in a SKU
      - `vendor` string — Vendor of the chassis
      - `model` string — Model of the chassis
      - `architecture` string — Architecture of the chassis
    - `ethernetDevices` SkuEthernetDevice[] — Read-only Ethernet device components reported by Core. Omit this property from REST mutation requests; null and an empty array are accepted for compatibility, while a non-empty array is rejected with HTTP 400.
      - `vendor` string — Vendor of the ethernet device
      - `model` string — Model of the ethernet device
      - `count` integer — Number of ethernet devices present
      - `isConnected` boolean — Whether the ethernet device is connected
    - `infinibandDevices` SkuInfinibandDevice[] — Infiniband device components
      - `vendor` string — Vendor of the infiniband device
      - `model` string — Model of the infiniband device
      - `count` integer — Number of infiniband devices present
      - `inactiveDevices` integer[] — Zero-based indexes of inactive devices
    - `tpm` SkuTpm[] — TPM components
      - `vendor` string — Vendor of the TPM
      - `version` string — Version of the TPM
  - `created` string, date-time — ISO 8601 datetime when the SKU was created, using the Site-reported timestamp when available

## Other responses

- `400` — Error response when request data cannot be validated
- `403` — Error response when user is not authorized to call an endpoint or retrieve/modify objects
- `404` — Error response when requested object is not found

## Changes

- **2026-08-19** `484497856a94` — 11 warning
  - the `components/cpus/items/count` request property's min was set to `0.00`
  - the `components/cpus/items/threadCount` request property's min was set to `0.00`
  - the `components/ethernetDevices/items/count` request property's min was set to `0.00`
  - the `components/gpus/items/count` request property's min was set to `0.00`
  - …7 more
- **2026-08-11** `4c29fe59bd4e` — 1 warning, 2 info
  - removed the optional property `updated` from the response with the `200` status
  - the request optional property `components/ethernetDevices` became read-only
  - the response optional property `components/ethernetDevices` became read-only for the status `200`
- **2026-07-31** `7d155f726f88` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api/changes/v2/org/:org/nico/sku/:skuId/patch.md)

---

[API](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api.md) · [All operations](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nvidia/nvidia-infra-controller-rest-api/revisions/b3b65decc28b/schema)
