1. Operations
2. vcenter
3. vm
4. hardware

## vcenter vm hardware: update

Updates the virtual hardware settings of a virtual machine.

### Request:

#### HTTP request

PATCH https://{server}/rest/vcenter/vm/{vm}/hardware

#### Path Parameters

Name | Type | Description
--- | --- | ---
Required
vm | string | Virtual machine identifier.

#### Request Body Structure:

- JSON
- XML

{
"spec": {
"upgrade_policy": "NEVER",
"upgrade_version": "VMX_03"
}
}
<?xml version="1.0" ?>
<ns0:Update-Input xmlns:ns0="http://vmware.com/vcenter/vm/hardware" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<spec>
<upgrade_version>VMX_03</upgrade_version>
<upgrade_policy>NEVER</upgrade_policy>
</spec>
</ns0:Update-Input>

#### Request Body Parameters:

Name | Type | Description
--- | --- | ---
bold = required
spec | update_spec | Specification for updating the virtual hardware settings of the virtual machine.
spec.upgrade_policy | string | Scheduled upgrade policy. If set to NEVER, the vcenter.vm.hardware.info.upgrade_version field will be reset to unset. Optional. If unset, the value is unchanged.
spec.upgrade_version | string | Target hardware version to be used on the next scheduled virtual hardware upgrade. If specified, this field must represent a newer virtual hardware version than the current virtual hardware version reported in vcenter.vm.hardware.info.version. Optional. It is only relevant when upgrade_policy has value [AFTER_CLEAN_SHUTDOWN, ALWAYS]. If vcenter.vm.hardware.update_spec.upgrade_policy is set to NEVER, this field must be unset. Otherwise, if this field is unset, default to the most recent virtual hardware version supported by the server.

### Response:

#### HTTP Status Code: 200

None

#### Errors:

HTTP Status Code | Type | Description
--- | --- | ---
500 | error | if the system reports an error while responding to the request.
404 | not_found | if the virtual machine is not found.
400 | already_in_desired_state | if the virtual machine is already configured for the desired hardware version.
400 | invalid_argument | if the requested virtual hardware version is not newer than the current version.
400 | unsupported | if the requested virtual hardware version is not supported by the server.
400 | resource_busy | if the virtual machine is busy performing another operation.
400 | resource_inaccessible | if the virtual machine's configuration state cannot be accessed.
503 | service_unavailable | if the system is unable to communicate with a service to complete the request.
401 | unauthenticated | if the user can not be authenticated.
403 | unauthorized | if the user doesn't have the required privileges.