---
title: "Validate Racks"
method: GET
path: "/v2/org/{org}/nico/rack/validation"
tags: ["Rack"]
---

# Validate Racks

`GET /v2/org/{org}/nico/rack/validation`

Validate Rack components by comparing expected vs actual state.

If no filter is specified, validates all racks in the Site. Filters can narrow the scope to specific racks by name or manufacturer.

Compares the expected component configuration against the actual state. Returns a detailed diff report showing missing, extra, and mismatched components.

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

## Query parameters

- `siteId` string, uuid, required
- `name` string
- `manufacturer` string

## Response `200`

OK

- RackValidationResult — Result of validating a rack's components by comparing expected vs actual state
  - `diffs` ComponentDiff[] — List of component differences found during validation
    - `type` 'Unknown' | 'Missing' | 'Unexpected' | 'Mismatch' — Type of difference: Unknown, Missing, Unexpected, or Mismatch
    - `id` string, uuid — Flow internal component UUID
    - `componentId` string — Component ID assigned by the component manager service
    - `expected` RackComponent — A component within a Rack (e.g. compute node, switch, PDU)
      - `id` string, uuid — Unique identifier of the component
      - `componentId` string — ID of the component
      - `rackId` string, uuid — ID of the rack this component belongs to
      - `type` string — Type of the component (e.g. ComponentTypeCompute, ComponentTypeNVSwitch)
      - `name` string — Name of the component
      - `serialNumber` string — Serial number of the component
      - `manufacturer` string — Manufacturer of the component
      - `model` string — Model of the component
      - `description` string — Description of the component (JSON string)
      - `firmwareVersion` string — Firmware version of the component
      - `slotId` integer — Slot ID of the component within the rack
      - `trayIdx` integer — Tray index of the component
      - `hostId` integer — Host ID of the component
      - `bmcs` BMCInfo[] — BMC (Baseboard Management Controller) entries for the component
        - `type` string — BMC type (e.g. BmcTypeHost, BmcTypeDpu)
        - `macAddress` string — MAC address of the BMC
        - `ipAddress` string — IP address of the BMC
      - `powerState` string — Current power state of the component
      - `operationStatus` 'Unknown' | 'Initializing' | 'Ready' | 'InUse' | 'Error' | 'Deleting' — Flow-derived operability phase of the component
      - `leakStatus` 'Unknown' | 'NoLeak' | 'Leaking' — Whether the component is considered leaking coolant
    - `actual` RackComponent — A component within a Rack (e.g. compute node, switch, PDU)
      - `id` string, uuid — Unique identifier of the component
      - `componentId` string — ID of the component
      - `rackId` string, uuid — ID of the rack this component belongs to
      - `type` string — Type of the component (e.g. ComponentTypeCompute, ComponentTypeNVSwitch)
      - `name` string — Name of the component
      - `serialNumber` string — Serial number of the component
      - `manufacturer` string — Manufacturer of the component
      - `model` string — Model of the component
      - `description` string — Description of the component (JSON string)
      - `firmwareVersion` string — Firmware version of the component
      - `slotId` integer — Slot ID of the component within the rack
      - `trayIdx` integer — Tray index of the component
      - `hostId` integer — Host ID of the component
      - `bmcs` BMCInfo[] — BMC (Baseboard Management Controller) entries for the component
        - `type` string — BMC type (e.g. BmcTypeHost, BmcTypeDpu)
        - `macAddress` string — MAC address of the BMC
        - `ipAddress` string — IP address of the BMC
      - `powerState` string — Current power state of the component
      - `operationStatus` 'Unknown' | 'Initializing' | 'Ready' | 'InUse' | 'Error' | 'Deleting' — Flow-derived operability phase of the component
      - `leakStatus` 'Unknown' | 'NoLeak' | 'Leaking' — Whether the component is considered leaking coolant
    - `fieldDiffs` FieldDiff[] — List of field differences (populated when type is Mismatch)
      - `fieldName` string — Name of the field that differs (e.g. firmware_version, position.slot_id)
      - `expectedValue` string — Expected value of the field
      - `actualValue` string — Actual value of the field
  - `totalDiffs` integer — Total number of component differences found
  - `missingCount` integer — Number of components expected but missing from the source system
  - `unexpectedCount` integer — Number of components found in the source system but not expected
  - `mismatchCount` integer — Number of components present in both but with field differences
  - `matchCount` integer — Number of components that match between expected and actual

## 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

---

[API](https://skmtc.net/nvidia/apis/nvidia-infra-controller-rest-api.md) · [All operations](https://skmtc.net/nvidia/apis/nvidia-infra-controller-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nvidia/nvidia-infra-controller-rest-api/versions/69e00804e732/schema)
