---
title: "Validate a Tray"
method: GET
path: "/v2/org/{org}/nico/tray/{id}/validation"
tags: ["Tray"]
---

# Validate a Tray

`GET /v2/org/{org}/nico/tray/{id}/validation`

Validate a Tray by comparing expected vs actual state.

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

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