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

# Create or Update Host Firmware Config

PUT https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/firmware-config/host
Content-Type: application/json

**WARNING:** As of the 2.0 release, NICo core will store the config data sent by
this request, but will not yet rely on it to determine firmware installed on host.

Create or update host firmware config for the org/site. The target Site
is specified by `siteId` in the request body.

User must have authorization role with `PROVIDER_ADMIN` suffix in the URL `{org}`.

Reference: https://docs.nvidia.com/infra-controller/infra-controller/rest-api-reference/api-reference/host-firmware-config/create-or-update-host-firmware-config

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: NVIDIA Infra Controller REST API
  version: 1.0.0
paths:
  /v2/org/{org}/nico/firmware-config/host:
    put:
      operationId: create-or-update-host-firmware-config
      summary: Create or Update Host Firmware Config
      description: >-
        **WARNING:** As of the 2.0 release, NICo core will store the config data
        sent by

        this request, but will not yet rely on it to determine firmware
        installed on host.


        Create or update host firmware config for the org/site. The target Site

        is specified by `siteId` in the request body.


        User must have authorization role with `PROVIDER_ADMIN` suffix in the
        URL `{org}`.
      tags:
        - subpackage_hostFirmwareConfig
      parameters:
        - name: org
          in: path
          description: Name of the Org
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: >-
            ```

            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

            ```
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Host firmware config replaced/updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostFirmwareConfig'
        '400':
          description: Error response when request data cannot be validated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NICoAPIError'
        '403':
          description: >-
            Error response when user is not authorized to call an endpoint or
            retrieve/modify objects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NICoAPIError'
        '404':
          description: Error response when requested object is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NICoAPIError'
        '500':
          description: Response when the API handler encounters an unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NICoAPIError'
        '503':
          description: >-
            Core gRPC API is unavailable, so the host firmware config request
            cannot be served.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NICoAPIError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostFirmwareConfigCreateOrUpdateRequest'
servers:
  - url: https://nico-rest-api.nico.svc.cluster.local
    description: Kubernetes Cluster
components:
  schemas:
    HostFirmwareComponentType:
      type: string
      enum:
        - BMC
        - CEC
        - UEFI
        - NIC
        - CpldMb
        - CpldPdb
        - HgxBmc
        - CombinedBmcUefi
        - GPU
        - Cx7
      description: Host firmware component type exposed by the REST API.
      title: HostFirmwareComponentType
    HostFirmwareArtifact:
      type: object
      properties:
        url:
          type: string
          description: URL from which the firmware artifact can be downloaded.
        sha256:
          type: string
          description: Optional SHA-256 digest of the artifact, in lowercase hex.
      required:
        - url
      description: Location of a firmware artifact used during host firmware updates.
      title: HostFirmwareArtifact
    HostFirmwareVersionConfig:
      type: object
      properties:
        version:
          type: string
          description: Firmware version string reported by inventory and stored in Core.
        default:
          type: boolean
          default: false
          description: >-
            When `true`, marks this version as the default target for the
            component.
        artifacts:
          type: array
          items:
            $ref: '#/components/schemas/HostFirmwareArtifact'
          description: Artifact locations used to install this firmware version.
        installOnlySpecified:
          type: boolean
          default: false
          description: >-
            When `true`, install only the artifacts explicitly listed for this
            version.
        powerDrainsNeeded:
          type: integer
          description: >-
            Optional number of power drains required after installing this
            version.
        preUpdateResets:
          type: boolean
          default: false
          description: >-
            When `true`, perform pre-update resets before installing this
            version.
        preingestionExclusiveConfig:
          type: boolean
          description: |-
            Optional. When `true`, this firmware version applies only during BMC
            pre-ingestion. Omitted on update preserves the stored value; set to
            `false` to clear a previously stored value.
      required:
        - version
        - artifacts
      description: One known firmware version for a host firmware component.
      title: HostFirmwareVersionConfig
    HostFirmwareComponentConfig:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/HostFirmwareComponentType'
        firmware:
          type: array
          items:
            $ref: '#/components/schemas/HostFirmwareVersionConfig'
          description: >-
            Known firmware versions for this component. Versions are merged by
            version string on update.
        preingestUpgradeWhenBelow:
          type: string
          description: >-
            Optional minimum firmware version required before BMC pre-ingestion
            can

            complete. Omitted on update preserves the stored value.
      required:
        - type
        - firmware
      description: One component entry in a host firmware config upsert request.
      title: HostFirmwareComponentConfig
    HostFirmwareConfigCreateOrUpdateRequest:
      type: object
      properties:
        siteId:
          type: string
          format: uuid
          description: ID of the Site where the host firmware config is stored.
        vendor:
          type: string
          description: >-
            Hardware vendor for the configuration (for example `Nvidia`,
            `Dell`).
        model:
          type: string
          description: Hardware model for the configuration (for example `DGXH100`).
        components:
          type: array
          items:
            $ref: '#/components/schemas/HostFirmwareComponentConfig'
          description: Component firmware entries to create or merge.
        explicitStartNeeded:
          type: boolean
          description: |-
            Optional. When `true`, host firmware updates for this vendor/model
            require an explicit start. Omitted on update leaves the stored
            value unchanged.
        ordering:
          type: array
          items:
            $ref: '#/components/schemas/HostFirmwareComponentType'
          description: |-
            Update order for configured components. Required on first create.
            Must include every configured component and must be updated when
            adding a new component on subsequent PUTs.
      required:
        - siteId
        - vendor
        - model
        - components
      description: |-
        Host firmware configuration upsert payload. Configurations are keyed by
        `(vendor, model)` on the Site's Core instance. On first create,
        `ordering` must list every component being configured. On update,
        newly added components must also appear in `ordering`.
      title: HostFirmwareConfigCreateOrUpdateRequest
    HostFirmwareComponent:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/HostFirmwareComponentType'
        currentVersionDetectionRegEx:
          type: string
          description: >-
            Inventory regex Core uses to match reported versions for this
            component.
        preingestUpgradeWhenBelow:
          type: string
          description: >-
            Minimum firmware version required before BMC pre-ingestion can
            complete.
        firmware:
          type: array
          items:
            $ref: '#/components/schemas/HostFirmwareVersionConfig'
          description: Known firmware versions currently stored for this component.
      required:
        - type
        - firmware
      description: One component entry in a stored host firmware config response.
      title: HostFirmwareComponent
    HostFirmwareConfig:
      type: object
      properties:
        vendor:
          type: string
          description: Hardware vendor for the configuration.
        model:
          type: string
          description: Hardware model for the configuration.
        components:
          type: array
          items:
            $ref: '#/components/schemas/HostFirmwareComponent'
          description: Stored component firmware entries.
        explicitStartNeeded:
          type: boolean
          description: Whether host firmware updates require an explicit start.
        ordering:
          type: array
          items:
            $ref: '#/components/schemas/HostFirmwareComponentType'
          description: Stored update order for configured components.
        created:
          type: string
          format: date-time
          description: When this vendor/model configuration was first created.
        updated:
          type: string
          format: date-time
          description: When this vendor/model configuration was last updated.
      required:
        - vendor
        - model
        - components
        - explicitStartNeeded
        - ordering
        - created
        - updated
      description: Stored host firmware configuration returned after create or update.
      title: HostFirmwareConfig
    NiCoApiErrorSource:
      type: string
      enum:
        - nico
      description: Source of the error.
      title: NiCoApiErrorSource
    NiCoApiErrorData:
      type: object
      properties: {}
      description: Additional data about the error
      title: NiCoApiErrorData
    NICoAPIError:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/NiCoApiErrorSource'
          description: Source of the error.
        message:
          type: string
          description: Message describing the error
        data:
          oneOf:
            - $ref: '#/components/schemas/NiCoApiErrorData'
            - type: 'null'
          description: Additional data about the error
      description: Describes the error response from NVIDIA Infra Controller REST API
      title: NICoAPIError
  securitySchemes:
    JWTBearerToken:
      type: http
      scheme: bearer
      description: >-
        ```

        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

        ```

```

## Examples

### Example 1



**Request**

```json
{
  "siteId": "00000000-0000-0000-0000-000000000001",
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    {
      "type": "Cx7",
      "firmware": [
        {
          "version": "28.47.2682",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        }
      ]
    }
  ],
  "explicitStartNeeded": true,
  "ordering": [
    "Cx7",
    "BMC"
  ]
}
```

**Response**

```json
{
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    {
      "type": "BMC",
      "firmware": [
        {
          "version": "2.3.7",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/2.3.7/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": false,
          "powerDrainsNeeded": 0,
          "preUpdateResets": false
        }
      ]
    },
    {
      "type": "Cx7",
      "firmware": [
        {
          "version": "28.47.2682",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        }
      ]
    }
  ],
  "explicitStartNeeded": true,
  "ordering": [
    "Cx7",
    "BMC"
  ],
  "created": "2025-08-24T14:15:22Z",
  "updated": "2025-08-24T14:15:22Z"
}
```

**SDK Code**

```python
import requests

url = "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host"

payload = {
    "siteId": "00000000-0000-0000-0000-000000000001",
    "vendor": "Nvidia",
    "model": "DGXH100",
    "components": [
        {
            "type": "Cx7",
            "firmware": [
                {
                    "version": "28.47.2682",
                    "artifacts": [
                        {
                            "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
                            "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
                        }
                    ],
                    "default": True,
                    "installOnlySpecified": True,
                    "powerDrainsNeeded": 1,
                    "preUpdateResets": True
                }
            ]
        }
    ],
    "explicitStartNeeded": True,
    "ordering": ["Cx7", "BMC"]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"siteId":"00000000-0000-0000-0000-000000000001","vendor":"Nvidia","model":"DGXH100","components":[{"type":"Cx7","firmware":[{"version":"28.47.2682","artifacts":[{"url":"https://firmware.example.invalid/28.47.2682/fw.bin","sha256":"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"}],"default":true,"installOnlySpecified":true,"powerDrainsNeeded":1,"preUpdateResets":true}]}],"explicitStartNeeded":true,"ordering":["Cx7","BMC"]}'
};

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"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host"

	payload := strings.NewReader("{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	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/firmware-config/host")

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

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}"

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.put("https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host', [
  'body' => '{
  "siteId": "00000000-0000-0000-0000-000000000001",
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    {
      "type": "Cx7",
      "firmware": [
        {
          "version": "28.47.2682",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        }
      ]
    }
  ],
  "explicitStartNeeded": true,
  "ordering": [
    "Cx7",
    "BMC"
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "siteId": "00000000-0000-0000-0000-000000000001",
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    [
      "type": "Cx7",
      "firmware": [
        [
          "version": "28.47.2682",
          "artifacts": [
            [
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            ]
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        ]
      ]
    ]
  ],
  "explicitStartNeeded": true,
  "ordering": ["Cx7", "BMC"]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Example 2



**Request**

```json
{
  "siteId": "00000000-0000-0000-0000-000000000001",
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    {
      "type": "Cx7",
      "firmware": [
        {
          "version": "28.47.2682",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        }
      ]
    }
  ],
  "explicitStartNeeded": true,
  "ordering": [
    "Cx7",
    "BMC"
  ]
}
```

**Response**

```json
{
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    {
      "type": "BMC",
      "firmware": [
        {
          "version": "2.3.7",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/2.3.7/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": false,
          "powerDrainsNeeded": 0,
          "preUpdateResets": false
        }
      ]
    },
    {
      "type": "Cx7",
      "firmware": [
        {
          "version": "28.47.2682",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        }
      ]
    }
  ],
  "explicitStartNeeded": true,
  "ordering": [
    "Cx7",
    "BMC"
  ],
  "created": "2025-08-24T14:15:22Z",
  "updated": "2025-08-24T14:15:22Z"
}
```

**SDK Code**

```python
import requests

url = "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host"

payload = {
    "siteId": "00000000-0000-0000-0000-000000000001",
    "vendor": "Nvidia",
    "model": "DGXH100",
    "components": [
        {
            "type": "Cx7",
            "firmware": [
                {
                    "version": "28.47.2682",
                    "artifacts": [
                        {
                            "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
                            "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
                        }
                    ],
                    "default": True,
                    "installOnlySpecified": True,
                    "powerDrainsNeeded": 1,
                    "preUpdateResets": True
                }
            ]
        }
    ],
    "explicitStartNeeded": True,
    "ordering": ["Cx7", "BMC"]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"siteId":"00000000-0000-0000-0000-000000000001","vendor":"Nvidia","model":"DGXH100","components":[{"type":"Cx7","firmware":[{"version":"28.47.2682","artifacts":[{"url":"https://firmware.example.invalid/28.47.2682/fw.bin","sha256":"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"}],"default":true,"installOnlySpecified":true,"powerDrainsNeeded":1,"preUpdateResets":true}]}],"explicitStartNeeded":true,"ordering":["Cx7","BMC"]}'
};

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"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host"

	payload := strings.NewReader("{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	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/firmware-config/host")

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

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}"

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.put("https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host', [
  'body' => '{
  "siteId": "00000000-0000-0000-0000-000000000001",
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    {
      "type": "Cx7",
      "firmware": [
        {
          "version": "28.47.2682",
          "artifacts": [
            {
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            }
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        }
      ]
    }
  ],
  "explicitStartNeeded": true,
  "ordering": [
    "Cx7",
    "BMC"
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"siteId\": \"00000000-0000-0000-0000-000000000001\",\n  \"vendor\": \"Nvidia\",\n  \"model\": \"DGXH100\",\n  \"components\": [\n    {\n      \"type\": \"Cx7\",\n      \"firmware\": [\n        {\n          \"version\": \"28.47.2682\",\n          \"artifacts\": [\n            {\n              \"url\": \"https://firmware.example.invalid/28.47.2682/fw.bin\",\n              \"sha256\": \"a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456\"\n            }\n          ],\n          \"default\": true,\n          \"installOnlySpecified\": true,\n          \"powerDrainsNeeded\": 1,\n          \"preUpdateResets\": true\n        }\n      ]\n    }\n  ],\n  \"explicitStartNeeded\": true,\n  \"ordering\": [\n    \"Cx7\",\n    \"BMC\"\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "siteId": "00000000-0000-0000-0000-000000000001",
  "vendor": "Nvidia",
  "model": "DGXH100",
  "components": [
    [
      "type": "Cx7",
      "firmware": [
        [
          "version": "28.47.2682",
          "artifacts": [
            [
              "url": "https://firmware.example.invalid/28.47.2682/fw.bin",
              "sha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
            ]
          ],
          "default": true,
          "installOnlySpecified": true,
          "powerDrainsNeeded": 1,
          "preUpdateResets": true
        ]
      ]
    ]
  ],
  "explicitStartNeeded": true,
  "ordering": ["Cx7", "BMC"]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://nico-rest-api.nico.svc.cluster.local/v2/org/org/nico/firmware-config/host")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```