> This page is for NVIDIA Infra Controller.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/infra-controller/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/infra-controller/_mcp/server.

# Get Tray power state

GET https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/tray/{id}/power

Read actual power, stored desired policy, tracked power actions, and outstanding power tasks for a compute tray, NVLink switch, or power shelf. Accepts the same component ID or BMC/PMC MAC selector as tray inventory. These passive reads retrieve state without issuing power commands.

Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix in that Org. The Site must belong to that Provider and have the `flow` capability enabled.

Each section is independent: a failed hardware read does not hide desired policy or outstanding work. A successful `Unknown` hardware observation differs from a null state with an error. Desired policy applies to compute trays; managed switches and shelves report `NotApplicable`. Observations, stored policy, actions and tasks can describe different instants; a `Running` task does not prove hardware dispatch or correlate to an `Active` action.

Live observations are supported by the Core Redfish compute reader and by RMS for compute trays, switches, and shelves. Standalone hosts (no rack association and no MNNVL capability) use Core's direct Redfish reader; rack-scale hosts use the configured compute reader. Switches and shelves use their configured readers. NSM, PSM, and mock backends report `Unsupported` for live observations; policy, actions, and Flow tasks remain independently available.

All response fields are present. Null indicates unavailable or inapplicable information as documented on each field; successful empty `actions` and `tasks` lists are arrays with a null `actionsError` or `tasksError`. More than 256 outstanding power tasks across the rack makes `operations.tasks` unavailable with `operations.tasksError: LimitExceeded`, before filtering for this tray. The separate waiting-context limit is 256 nonterminal tasks of all types across the rack; exceeding it sets `waitingContext.error` to `LimitExceeded` while retaining the power tasks.

Component and rack IDs are external inventory identifiers. Task targets use identities from retained inventory, including soft-deleted rows, at read time; they are not historical copies saved with the task. A component can have moved racks since the task was recorded. A task's unavailable target metadata sets its `rackId` and `targets` to null and reports `targetsError`, preserving the task's other fields and other task rows. Missing metadata from a service or proxy reports `Unsupported`. A successful empty selection is `targets: []` with `targetsError: null`. Internal hardware UUIDs are never substituted for external IDs.

Flow also limits the encoded proxy response to 1,991,680 bytes; this is not an HTTP response-body limit. When that allowance is exceeded, Flow first clears nonempty waiting-context lists that have no error and sets their `waitingContext.error` to `LimitExceeded`, retaining the power tasks. Empty contexts and existing context errors are unchanged. If the response still exceeds the allowance, successful external target results become null `rackId` and `targets` with `targetsError: LimitExceeded`; missing metadata and existing target errors are unchanged. If the response remains too large, Flow removes the complete task section and reports `operations.tasksError: LimitExceeded`. Target selections are never truncated. If the remaining encoded response is still too large, the request fails with HTTP 429.

Reference: https://docs.nvidia.com/infra-controller/rest-api-reference/api-reference/tray/get-tray-power-state

## Authentication

- `Authorization` header (bearer token, required) — ``` 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 ```

## Request

### Path parameters

- `org` (string, required) — Name of the Org
- `id` (string, required) — Component ID or component MAC address

### Query parameters

- `siteId` (string, required) — ID of the Site that owns the tray.

## Response

### 200

Tray power state, including independently unavailable sections.

- `id` (string, required, nullable) — External inventory component ID, matching the tray's ID. Null until the inventory member has a managed Core identity or when the service or proxy does not supply the ID.
- `type` (enum, required) — Tray type; `Unknown` is reserved for an unrecognized service value.
  - Allowed values: `Compute`, `NVSwitch`, `PowerShelf`, `Unknown`
- `rackId` (string, required, nullable) — External inventory ID of the tray's assigned rack, including a retained soft-deleted rack. Null without rack assignment, when its external identity cannot be read, or when the service or proxy does not supply the ID.
- `actual` (PowerObservation, required) — A live hardware observation or a categorized failure. Explicit `Unknown` is a successful observation. An observation state this API cannot represent reports `Unsupported`. A present observation without a required state or error outcome reports `InvalidResponse`.
- `desired` (PowerPolicy, required) — Stored compute policy, independent of hardware reads. `Unavailable` means the policy or managed target was not found; it does not prove an intentionally absent policy. A policy status or state this API cannot represent reports `Unsupported`. An `Available` policy without a required state reports `InvalidResponse`.
- `operations` (PowerOperations, required) — Tracked maintenance actions and outstanding power tasks, without an inferred relationship between them. Each list is read separately and has its own error, so one list can be unavailable while the other is returned.

## Errors

### 400 Bad Request Error

Error response when request data cannot be validated

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 403 Forbidden Error

Error response when user is not authorized to call an endpoint or retrieve/modify objects

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 404 Not Found Error

Response when the API handler encounters an unexpected error

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 412 Precondition Failed Error

Response when the API handler encounters an unexpected error

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 429 Too Many Requests Error

Response when the API handler encounters an unexpected error

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 500 Internal Server Error

Response when the API handler encounters an unexpected error

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 501 Not Implemented Error

Response when the API handler encounters an unexpected error

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 502 Bad Gateway Error

Response when the API handler encounters an unexpected error

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 503 Service Unavailable Error

Response when the API handler encounters an unexpected error

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

### 504 Gateway Timeout Error

The Site did not return a result within the request budget allocated to Site communication within the request cycle. This can occur if the Site Controller is down or under heavy request load. Operations are in general safe to retry. In rare cases, operations that create or update resources may succeed even if timeout is returned.

- `source` (string, optional) — Source of the error, taken from `api.name` in the REST API server configuration file (`/app/config.yaml` in the supplied Kubernetes deployment; default API name `nico`). This is a configurable string, for example `nico` or `carbide`
- `message` (string, optional) — Message describing the error
- `data` (NiCoApiErrorData, optional, nullable) — Additional data about the error
- `retryable` (boolean, optional) — True permits bounded retries with backoff, without guaranteeing success. False prohibits automatic retries. Omission means unclassified.

## Types

### PowerObservation

A live hardware observation or a categorized failure. Explicit `Unknown` is a successful observation. An observation state this API cannot represent reports `Unsupported`. A present observation without a required state or error outcome reports `InvalidResponse`.

- `state` (enum, required) — Observed state, or null if the read failed or the service cannot represent the state.
  - Allowed values: `Unknown`, `On`, `Off`, `PoweringOn`, `PoweringOff`, `Paused`, `Reset`
- `source` (enum, required) — Selected hardware reader. Null before backend selection or when the source is unavailable.
  - Allowed values: `Redfish`, `RMS`
- `observed` (datetime, required, nullable) — NICo receipt time, not a device timestamp; null without an observation.
- `error` (enum, required) — Null on success. `NotLinked` means a required managed identity, rack assignment, or retained external inventory identity is absent; `NotConfigured` means no provider client; `Unsupported` includes services or proxies that omit a section, external target metadata or waiting context, or observation states and policy statuses or states this API cannot represent. `InvalidResponse` means unusable dependency data, including a present observation without a required outcome or an `Available` policy without a required state. Other categories distinguish missing managed targets, disabled readers, unavailable endpoints or credentials, missing observations, deadlines, read failures and exceeded limits.
  - Allowed values: `NotLinked`, `NotConfigured`, `Unsupported`, `DeadlineExceeded`, `ReadFailed`, `InvalidResponse`, `LimitExceeded`, `NotFound`, `Disabled`, `EndpointUnavailable`, `CredentialsUnavailable`, `NoObservation`

### PowerPolicy

Stored compute policy, independent of hardware reads. `Unavailable` means the policy or managed target was not found; it does not prove an intentionally absent policy. A policy status or state this API cannot represent reports `Unsupported`. An `Available` policy without a required state reports `InvalidResponse`.

- `status` (enum, required) — `Available` includes disabled power management. `NotApplicable` applies to managed switches and shelves. `Unavailable` also accompanies section errors.
  - Allowed values: `Available`, `Unavailable`, `NotApplicable`
- `state` (enum, required) — Stored policy when `Available`; null otherwise. `PowerManagerDisabled` is a policy, not missing information.
  - Allowed values: `On`, `Off`, `PowerManagerDisabled`
- `error` (enum, required) — Null on success. `NotLinked` means a required managed identity, rack assignment, or retained external inventory identity is absent; `NotConfigured` means no provider client; `Unsupported` includes services or proxies that omit a section, external target metadata or waiting context, or observation states and policy statuses or states this API cannot represent. `InvalidResponse` means unusable dependency data, including a present observation without a required outcome or an `Available` policy without a required state. Other categories distinguish missing managed targets, disabled readers, unavailable endpoints or credentials, missing observations, deadlines, read failures and exceeded limits.
  - Allowed values: `NotLinked`, `NotConfigured`, `Unsupported`, `DeadlineExceeded`, `ReadFailed`, `InvalidResponse`, `LimitExceeded`, `NotFound`, `Disabled`, `EndpointUnavailable`, `CredentialsUnavailable`, `NoObservation`

### PowerOperations

Tracked maintenance actions and outstanding power tasks, without an inferred relationship between them. Each list is read separately and has its own error, so one list can be unavailable while the other is returned.

- `actions` (list of PowerAction, required) — At most two explicit tracked power-maintenance actions, `Active` before `Pending`. Empty with a null `actionsError` means no tracked maintenance; direct power dispatch and power steps inside other workflows are not tracked here. Always empty when `actionsError` is set.
- `actionsError` (enum, required) — Why `actions` couldn't be read, or null when the read succeeded. It never describes an individual action.
  - Allowed values: `NotLinked`, `NotConfigured`, `Unsupported`, `DeadlineExceeded`, `ReadFailed`, `InvalidResponse`, `LimitExceeded`, `NotFound`, `Disabled`, `EndpointUnavailable`, `CredentialsUnavailable`, `NoObservation`
- `tasks` (list of PowerTask, required) — Outstanding power tasks for the current Flow rack that explicitly select this tray, plus tasks selecting a shelf in this tray's current rack that can affect this tray. Ordered by creation time then task UUID ascending. Former-rack tasks and execution reports are excluded; non-power tasks appear only as brief waiting-context references. Always empty when `tasksError` is set.
- `tasksError` (enum, required) — Why `tasks` couldn't be read, or null when the read succeeded. It never describes an individual task; each task reports its own `status` and `targetsError`. A missing rack makes the list unavailable. More than 256 outstanding power tasks across the rack, before filtering for this tray, reports `LimitExceeded`. To fit the encoded proxy response allowance, Flow removes optional waiting-context references first, then external target information with a per-task `targetsError` of `LimitExceeded`. If the response is still too large, `tasks` is emptied and this reports `LimitExceeded`; refer to the endpoint description.
  - Allowed values: `NotLinked`, `NotConfigured`, `Unsupported`, `DeadlineExceeded`, `ReadFailed`, `InvalidResponse`, `LimitExceeded`, `NotFound`, `Disabled`, `EndpointUnavailable`, `CredentialsUnavailable`, `NoObservation`

### NiCoApiErrorData

Additional data about the error

### PowerAction

Saved Core maintenance; no stable action ID, Flow task correlation ID or execution-start time is available.

- `status` (enum, required) — `Active` means admitted maintenance, not hardware dispatch. `Pending` is a distinct saved request, without a promise of admission. `Unknown` represents an unrecognized service value.
  - Allowed values: `Active`, `Pending`, `Unknown`
- `operation` (enum, required) — Recorded operation. `Reset` does not preserve the original graceful/forced/AC-cycle distinction.
  - Allowed values: `PowerOn`, `PowerOff`, `Reset`, `ChassisReset`, `Unknown`
- `requested` (datetime, required, nullable) — Saved submission time, not admission/start time; null for legacy admitted requests without metadata.
- `initiator` (string, required, nullable) — Saved initiator, including an explicitly empty string; null when unavailable.
- `graceful` (boolean, required, nullable) — Present for `PowerOff` only: true is graceful, false is forced. Null for other operations.
- `chassisId` (string, required, nullable) — Recorded Redfish chassis identifier for `ChassisReset`, otherwise null.

### PowerTask

Power task metadata with external target identities from retained inventory at read time, including soft-deleted rows. An identity lookup failure leaves the task's other fields and other task rows available.

- `id` (string, required) — Flow-generated task UUID, usable with the existing task APIs.
- `rackId` (string, required, nullable) — External inventory ID of the task's recorded rack. Null together with targets when targetsError is non-null; never falls back to an internal rack UUID.
- `operation` (enum, required) — Requested Flow power operation, kept separate from the operation Core stores.
  - Allowed values: `PowerOn`, `ForcePowerOn`, `PowerOff`, `ForcePowerOff`, `Restart`, `ForceRestart`, `WarmReset`, `ColdReset`, `Unknown`
- `overrideReadinessCheck` (boolean, required) — Whether the task bypasses the component readiness gate when it executes.
- `targets` (list of PowerTaskTargetGroup, required, nullable) — Complete recorded selection grouped by type, using external inventory IDs available at read time. Null with targetsError when any external target metadata is unavailable; an empty array with no error means an explicitly empty selection. Groups follow Flow's component-type name order; IDs retain recorded UUID order, including repeated external IDs. IDs are not sorted by their external values or deduplicated across types.
- `targetsError` (enum, required) — Null when rackId and the complete target selection are available. Missing metadata reports `Unsupported`; missing, empty, or purged inventory identities report `NotLinked`. Malformed metadata reports `InvalidResponse`; lookup failures retain their error category. `LimitExceeded` means the recorded target identifiers alone exceed the proxy response allowance, or external metadata was removed to meet that allowance. Any error makes rackId and targets null, without removing the task or returning a partial selection.
  - Allowed values: `NotLinked`, `NotConfigured`, `Unsupported`, `DeadlineExceeded`, `ReadFailed`, `InvalidResponse`, `LimitExceeded`, `NotFound`, `Disabled`, `EndpointUnavailable`, `CredentialsUnavailable`, `NoObservation`
- `status` (enum, required) — `Pending` includes Flow `Waiting` and admitted `Pending`; `Running` does not prove hardware dispatch. `Unknown` represents an unrecognized service value.
  - Allowed values: `Pending`, `Running`, `Unknown`, `Succeeded`, `Failed`, `Terminated`
- `created` (datetime, required, nullable) — Task creation time; null if the service did not supply a usable timestamp.
- `updated` (datetime, required, nullable) — Last recorded task update time; null if unavailable.
- `started` (datetime, required, nullable) — Recorded execution start; null until recorded.
- `relevance` (enum, required) — `Selected` means a recorded target; `RackAffected` means the task selects a shelf in this tray's current rack and can affect this tray without selecting it.
  - Allowed values: `Selected`, `RackAffected`, `Unknown`
- `waitingContext` (PowerTaskWaitingContext, required, nullable) — Present for every Flow `Waiting` task, which reports public status `Pending`, and null for every other task. When an older service doesn't supply the context, both lists are empty and `error` is `Unsupported`. Neither list establishes a definitive blocker, queue position or future execution order.

### PowerTaskTargetGroup

One recorded component-type selection expressed as external IDs from retained inventory at read time, including soft-deleted rows. These IDs are not historical copies saved with the task.

- `type` (enum, required) — Recorded component type. A mixed task can select component types beyond those supported as the requested power tray.
  - Allowed values: `CDU`, `Compute`, `NVSwitch`, `PowerShelf`, `TORSwitch`, `UMS`
- `componentIds` (list of string, required) — External inventory component IDs in recorded selection order. A component can have moved racks since the task was recorded. Repeated IDs remain present; IDs are not sorted by external value.

### PowerTaskWaitingContext

Scheduling context evaluated once per rack. Present empty lists with no error mean evaluation succeeded with no matching work. Neither list establishes a definitive blocker, queue position or future execution order. More than 256 nonterminal tasks of all types across the rack makes this context unavailable with `LimitExceeded` while retaining primary power tasks. This count limit is independent of the rack power-task limit. The encoded proxy response allowance can also clear nonempty context lists and set the context error to `LimitExceeded` before removing external target information or primary power tasks. Empty contexts and existing context errors are unchanged; refer to the endpoint description for the fallback order.

- `activeConflicts` (list of TaskSummary, required) — `Pending` or `Running` tasks that conflict under the current scheduler rule, ordered by creation time then UUID.
- `earlierWaiting` (list of TaskSummary, required) — All strictly earlier `Waiting` tasks in this rack, ordered by creation time then UUID. They can delay promotion without directly conflicting with this task.
- `error` (enum, required) — Null on success. `NotLinked` means a required managed identity, rack assignment, or retained external inventory identity is absent; `NotConfigured` means no provider client; `Unsupported` includes services or proxies that omit a section, external target metadata or waiting context, or observation states and policy statuses or states this API cannot represent. `InvalidResponse` means unusable dependency data, including a present observation without a required outcome or an `Available` policy without a required state. Other categories distinguish missing managed targets, disabled readers, unavailable endpoints or credentials, missing observations, deadlines, read failures and exceeded limits.
  - Allowed values: `NotLinked`, `NotConfigured`, `Unsupported`, `DeadlineExceeded`, `ReadFailed`, `InvalidResponse`, `LimitExceeded`, `NotFound`, `Disabled`, `EndpointUnavailable`, `CredentialsUnavailable`, `NoObservation`

### TaskSummary

Brief metadata for an active conflicting task or an earlier waiting task, including non-power tasks; no reports or targets are exposed here.

- `id` (string, required) — Flow-generated task UUID.
- `type` (enum, required) — Task type, which can be non-power work such as `BringUp`. `Unknown` represents an unrecognized service value.
  - Allowed values: `PowerControl`, `FirmwareControl`, `BringUp`, `Decommission`, `InjectExpectation`, `Unknown`
- `status` (enum, required) — Public task status; Flow `Waiting` maps to `Pending`.
  - Allowed values: `Pending`, `Running`, `Unknown`, `Succeeded`, `Failed`, `Terminated`

## Examples

**Response**

```json
{
  "id": null,
  "type": "NVSwitch",
  "rackId": "rack-01",
  "actual": {
    "state": null,
    "source": null,
    "observed": null,
    "error": "NotLinked"
  },
  "desired": {
    "status": "Unavailable",
    "state": null,
    "error": "NotLinked"
  },
  "operations": {
    "actions": [],
    "actionsError": "NotLinked",
    "tasks": [],
    "tasksError": null
  }
}
```

**SDK Code**

```python
import requests

url = "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power"

querystring = {"siteId":"siteId"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power?siteId=siteId';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power?siteId=siteId"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power?siteId=siteId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power?siteId=siteId")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power?siteId=siteId', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power?siteId=siteId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/tray/id/power?siteId=siteId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```