---
title: "POST /v1/{+name}:restore"
method: POST
path: "/v1/{+name}:restore"
tags: ["projects"]
---

# POST /v1/{+name}:restore

`POST /v1/{+name}:restore`

Restore from a Backup

## Path parameters

- `name` string, required

## Request body

- RestoreBackupRequest — Request message for restoring from a Backup.
  - `diskTargetEnvironment` DiskTargetEnvironment — DiskTargetEnvironment represents the target environment for the disk.
    - `project` string — Required. Target project for the disk.
    - `useProjectServiceAccount` boolean — Optional. Whether to use the project service account for the disk restore.
    - `zone` string — Required. Target zone for the disk.
  - `computeInstanceTargetEnvironment` ComputeInstanceTargetEnvironment — ComputeInstanceTargetEnvironment represents Compute Engine target environment to be used during restore.
    - `project` string — Required. Target project for the Compute Engine instance.
    - `useProjectServiceAccount` boolean — Optional. Whether to use the project service account for the Compute Engine instance restore.
    - `zone` string — Required. The zone of the Compute Engine instance.
  - `computeInstanceRestoreProperties` ComputeInstanceRestoreProperties — ComputeInstanceRestoreProperties represents Compute Engine instance properties to be overridden during restore.
    - `disks` AttachedDisk[] — Optional. Array of disks associated with this instance. Persistent disks must be created before you can assign them. Source regional persistent disks will be restored with default replica zones if not specified.
      - `deviceName` string — Optional. This is used as an identifier for the disks. This is the unique name has to provided to modify disk parameters like disk_name and replica_zones (in case of RePDs)
      - `diskTypeDeprecated` 'DISK_TYPE_UNSPECIFIED' | 'SCRATCH' | 'PERSISTENT' — Specifies the type of the disk.
      - `type` 'DISK_TYPE_UNSPECIFIED' | 'SCRATCH' | 'PERSISTENT' — Optional. Specifies the type of the disk.
      - `diskSizeGb` string, int64 — Optional. The size of the disk in GB.
      - `license` string[] — Optional. Any valid publicly visible licenses.
      - `diskInterface` 'DISK_INTERFACE_UNSPECIFIED' | 'SCSI' | 'NVME' | 'NVDIMM' | 'ISCSI' — Optional. Specifies the disk interface to use for attaching this disk.
      - `savedState` 'DISK_SAVED_STATE_UNSPECIFIED' | 'PRESERVED' — Optional. Output only. The state of the disk.
      - `guestOsFeature` GuestOsFeature[] — Optional. A list of features to enable on the guest operating system. Applicable only for bootable images.
        - `type` 'FEATURE_TYPE_UNSPECIFIED' | 'VIRTIO_SCSI_MULTIQUEUE' | 'WINDOWS' | 'MULTI_IP_SUBNET' | 'UEFI_COMPATIBLE' | 'SECURE_BOOT' | 'GVNIC' | 'SEV_CAPABLE' | 'BARE_METAL_LINUX_COMPATIBLE' | 'SUSPEND_RESUME_COMPATIBLE' | 'SEV_LIVE_MIGRATABLE' | 'SEV_SNP_CAPABLE' | 'TDX_CAPABLE' | 'IDPF' | 'SEV_LIVE_MIGRATABLE_V2' — The ID of a supported feature.
      - `diskType` string — Optional. Output only. The URI of the disk type resource. For example: projects/project/zones/zone/diskTypes/pd-standard or pd-ssd
      - `autoDelete` boolean — Optional. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
      - `source` string — Optional. Specifies a valid partial or full URL to an existing Persistent Disk resource.
      - `index` string, int64 — Optional. A zero-based index to this disk, where 0 is reserved for the boot disk.
      - `boot` boolean — Optional. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
      - `kind` string — Optional. Type of the resource.
      - `initializeParams` InitializeParams — Specifies the parameters to initialize this disk.
        - `diskName` string — Optional. Specifies the disk name. If not specified, the default is to use the name of the instance.
        - `replicaZones` string[] — Optional. URL of the zone where the disk should be created. Required for each regional disk associated with the instance.
      - `mode` 'DISK_MODE_UNSPECIFIED' | 'READ_WRITE' | 'READ_ONLY' | 'LOCKED' — Optional. The mode in which to attach this disk.
      - `diskEncryptionKey` CustomerEncryptionKey — A customer-supplied encryption key.
        - `rsaEncryptedKey` string — Optional. RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource.
        - `rawKey` string — Optional. Specifies a 256-bit customer-supplied encryption key.
        - `kmsKeyName` string — Optional. The name of the encryption key that is stored in Google Cloud KMS.
        - `kmsKeyServiceAccount` string — Optional. The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    - `hostname` string — Optional. Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS.
    - `scheduling` Scheduling — Sets the scheduling options for an Instance.
      - `preemptible` boolean — Optional. Defines whether the instance is preemptible.
      - `automaticRestart` boolean — Optional. Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user).
      - `minNodeCpus` integer — Optional. The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node.
      - `provisioningModel` 'PROVISIONING_MODEL_UNSPECIFIED' | 'STANDARD' | 'SPOT' — Optional. Specifies the provisioning model of the instance.
      - `localSsdRecoveryTimeout` SchedulingDuration — A SchedulingDuration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years.
        - `nanos` integer — Optional. Span of time that's a fraction of a second at nanosecond resolution.
        - `seconds` string, int64 — Optional. Span of time at a resolution of a second.
      - `onHostMaintenance` 'ON_HOST_MAINTENANCE_UNSPECIFIED' | 'TERMINATE' | 'MIGRATE' — Optional. Defines the maintenance behavior for this instance.
      - `nodeAffinities` NodeAffinity[] — Optional. A set of node affinity and anti-affinity configurations. Overrides reservationAffinity.
        - `values` string[] — Optional. Corresponds to the label values of Node resource.
        - `key` string — Optional. Corresponds to the label key of Node resource.
        - `operator` 'OPERATOR_UNSPECIFIED' | 'IN' | 'NOT_IN' — Optional. Defines the operation of node selection.
      - `instanceTerminationAction` 'INSTANCE_TERMINATION_ACTION_UNSPECIFIED' | 'DELETE' | 'STOP' — Optional. Specifies the termination action for the instance.
    - `networkPerformanceConfig` NetworkPerformanceConfig — Network performance configuration.
      - `totalEgressBandwidthTier` 'TIER_UNSPECIFIED' | 'DEFAULT' | 'TIER_1' — Optional. The tier of the total egress bandwidth.
    - `advancedMachineFeatures` AdvancedMachineFeatures — Specifies options for controlling advanced machine features.
      - `enableNestedVirtualization` boolean — Optional. Whether to enable nested virtualization or not (default is false).
      - `enableUefiNetworking` boolean — Optional. Whether to enable UEFI networking for instance creation.
      - `threadsPerCore` integer — Optional. The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
      - `visibleCoreCount` integer — Optional. The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance's nominal CPU count and the underlying platform's SMT width.
    - `machineType` string — Optional. Full or partial URL of the machine type resource to use for this instance.
    - `confidentialInstanceConfig` ConfidentialInstanceConfig — A set of Confidential Instance options.
      - `enableConfidentialCompute` boolean — Optional. Defines whether the instance should have confidential compute enabled.
    - `labels` object — Optional. Labels to apply to this instance.
    - `params` InstanceParams — Additional instance params.
      - `resourceManagerTags` object — Optional. Resource manager tags to be bound to the instance.
    - `displayDevice` DisplayDevice — A set of Display Device options
      - `enableDisplay` boolean — Optional. Enables display for the Compute Engine VM
    - `instanceEncryptionKey` CustomerEncryptionKey — A customer-supplied encryption key.
      - `rsaEncryptedKey` string — Optional. RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource.
      - `rawKey` string — Optional. Specifies a 256-bit customer-supplied encryption key.
      - `kmsKeyName` string — Optional. The name of the encryption key that is stored in Google Cloud KMS.
      - `kmsKeyServiceAccount` string — Optional. The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    - `tags` Tags — A set of instance tags.
      - `items` string[] — Optional. An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.
    - `reservationAffinity` AllocationAffinity — Specifies the reservations that this instance can consume from.
      - `key` string — Optional. Corresponds to the label key of a reservation resource.
      - `consumeReservationType` 'TYPE_UNSPECIFIED' | 'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION' — Optional. Specifies the type of reservation from which this instance can consume
      - `values` string[] — Optional. Corresponds to the label values of a reservation resource.
    - `metadata` Metadata — A metadata key/value entry.
      - `items` Entry[] — Optional. Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
        - `key` string — Optional. Key for the metadata entry.
        - `value` string — Optional. Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB).
    - `minCpuPlatform` string — Optional. Minimum CPU platform to use for this instance.
    - `networkInterfaces` NetworkInterface[] — Optional. An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance. Required to restore in different project or region.
      - `ipv6Address` string — Optional. An IPv6 internal network address for this network interface. To use a static internal IP address, it must be unused and in the same region as the instance's zone. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
      - `name` string — Output only. [Output Only] The name of the network interface, which is generated by the server.
      - `ipv6AccessConfigs` AccessConfig[] — Optional. An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access.
        - `setPublicPtr` boolean — Optional. Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name.
        - `networkTier` 'NETWORK_TIER_UNSPECIFIED' | 'PREMIUM' | 'STANDARD' — Optional. This signifies the networking tier used for configuring this access
        - `type` 'ACCESS_TYPE_UNSPECIFIED' | 'ONE_TO_ONE_NAT' | 'DIRECT_IPV6' — Optional. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6.
        - `name` string — Optional. The name of this access configuration.
        - `natIP` string — Optional. The external IP address of this access configuration.
        - `publicPtrDomainName` string — Optional. The DNS domain name for the public PTR record.
        - `externalIpv6` string — Optional. The external IPv6 address of this access configuration.
        - `externalIpv6PrefixLength` integer — Optional. The prefix length of the external IPv6 range.
      - `ipv6AccessType` 'UNSPECIFIED_IPV6_ACCESS_TYPE' | 'INTERNAL' | 'EXTERNAL' — Optional. [Output Only] One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
      - `networkAttachment` string — Optional. The URL of the network attachment that this interface should connect to in the following format: projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}.
      - `networkIP` string — Optional. An IPv4 internal IP address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system.
      - `stackType` 'STACK_TYPE_UNSPECIFIED' | 'IPV4_ONLY' | 'IPV4_IPV6' — The stack type for this network interface.
      - `internalIpv6PrefixLength` integer — Optional. The prefix length of the primary internal IPv6 range.
      - `network` string — Optional. URL of the VPC network resource for this instance.
      - `nicType` 'NIC_TYPE_UNSPECIFIED' | 'VIRTIO_NET' | 'GVNIC' — Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.
      - `subnetwork` string — Optional. The URL of the Subnetwork resource for this instance.
      - `accessConfigs` AccessConfig[] — Optional. An array of configurations for this interface. Currently, only one access config,ONE_TO_ONE_NAT is supported. If there are no accessConfigs specified, then this instance will have no external internet access.
        - `setPublicPtr` boolean — Optional. Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name.
        - `networkTier` 'NETWORK_TIER_UNSPECIFIED' | 'PREMIUM' | 'STANDARD' — Optional. This signifies the networking tier used for configuring this access
        - `type` 'ACCESS_TYPE_UNSPECIFIED' | 'ONE_TO_ONE_NAT' | 'DIRECT_IPV6' — Optional. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6.
        - `name` string — Optional. The name of this access configuration.
        - `natIP` string — Optional. The external IP address of this access configuration.
        - `publicPtrDomainName` string — Optional. The DNS domain name for the public PTR record.
        - `externalIpv6` string — Optional. The external IPv6 address of this access configuration.
        - `externalIpv6PrefixLength` integer — Optional. The prefix length of the external IPv6 range.
      - `queueCount` integer — Optional. The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It'll be empty if not specified by the users.
      - `aliasIpRanges` AliasIpRange[] — Optional. An array of alias IP ranges for this network interface. You can only specify this field for network interfaces in VPC networks.
        - `subnetworkRangeName` string — Optional. The name of a subnetwork secondary IP range from which to allocate an IP alias range. If not specified, the primary range of the subnetwork is used.
        - `ipCidrRange` string — Optional. The IP alias ranges to allocate for this interface.
    - `deletionProtection` boolean — Optional. Whether the resource should be protected against deletion.
    - `resourcePolicies` string[] — Optional. Resource policies applied to this instance. By default, no resource policies will be applied.
    - `description` string — Optional. An optional description of this resource. Provide this property when you create the resource.
    - `keyRevocationActionType` 'KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED' | 'NONE' | 'STOP' — Optional. KeyRevocationActionType of the instance.
    - `name` string — Required. Name of the compute instance.
    - `canIpForward` boolean — Optional. Allows this instance to send and receive packets with non-matching destination or source IPs.
    - `guestAccelerators` AcceleratorConfig[] — Optional. A list of the type and count of accelerator cards attached to the instance.
      - `acceleratorType` string — Optional. Full or partial URL of the accelerator type resource to attach to this instance.
      - `acceleratorCount` integer — Optional. The number of the guest accelerator cards exposed to this instance.
    - `privateIpv6GoogleAccess` 'INSTANCE_PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED' | 'INHERIT_FROM_SUBNETWORK' | 'ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE' | 'ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE' — Optional. The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default.
    - `serviceAccounts` ServiceAccount[] — Optional. A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.
      - `email` string — Optional. Email address of the service account.
      - `scopes` string[] — Optional. The list of scopes to be made available for this service account.
  - `diskRestoreProperties` DiskRestoreProperties — DiskRestoreProperties represents the properties of a Disk restore.
    - `provisionedThroughput` string, int64 — Optional. Indicates how much throughput to provision for the disk. This sets the number of throughput MB per second that the disk can handle.
    - `storagePool` string — Optional. The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource.
    - `description` string — Optional. An optional description of this resource. Provide this property when you create the resource.
    - `labels` object — Optional. Labels to apply to this disk. These can be modified later using setLabels method. Label values can be empty.
    - `accessMode` 'READ_WRITE_SINGLE' | 'READ_WRITE_MANY' | 'READ_ONLY_MANY' — Optional. The access mode of the disk.
    - `name` string — Required. Name of the disk.
    - `resourcePolicy` string[] — Optional. Resource policies applied to this disk.
    - `guestOsFeature` GuestOsFeature[] — Optional. A list of features to enable in the guest operating system. This is applicable only for bootable images.
      - `type` 'FEATURE_TYPE_UNSPECIFIED' | 'VIRTIO_SCSI_MULTIQUEUE' | 'WINDOWS' | 'MULTI_IP_SUBNET' | 'UEFI_COMPATIBLE' | 'SECURE_BOOT' | 'GVNIC' | 'SEV_CAPABLE' | 'BARE_METAL_LINUX_COMPATIBLE' | 'SUSPEND_RESUME_COMPATIBLE' | 'SEV_LIVE_MIGRATABLE' | 'SEV_SNP_CAPABLE' | 'TDX_CAPABLE' | 'IDPF' | 'SEV_LIVE_MIGRATABLE_V2' — The ID of a supported feature.
    - `type` string — Required. URL of the disk type resource describing which disk type to use to create the disk.
    - `sizeGb` string, int64 — Required. The size of the disk in GB.
    - `diskEncryptionKey` CustomerEncryptionKey — A customer-supplied encryption key.
      - `rsaEncryptedKey` string — Optional. RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource.
      - `rawKey` string — Optional. Specifies a 256-bit customer-supplied encryption key.
      - `kmsKeyName` string — Optional. The name of the encryption key that is stored in Google Cloud KMS.
      - `kmsKeyServiceAccount` string — Optional. The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    - `physicalBlockSizeBytes` string, int64 — Optional. Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. Currently, the supported size is 4096.
    - `architecture` 'ARCHITECTURE_UNSPECIFIED' | 'X86_64' | 'ARM64' — Optional. The architecture of the source disk. Valid values are ARM64 or X86_64.
    - `resourceManagerTags` object — Optional. Resource manager tags to be bound to the disk.
    - `licenses` string[] — Optional. A list of publicly available licenses that are applicable to this backup. This is applicable if the original image had licenses attached, e.g. Windows image
    - `enableConfidentialCompute` boolean — Optional. Indicates whether this disk is using confidential compute mode. Encryption with a Cloud KMS key is required to enable this option.
    - `provisionedIops` string, int64 — Optional. Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle.
  - `regionDiskTargetEnvironment` RegionDiskTargetEnvironment — RegionDiskTargetEnvironment represents the target environment for the disk.
    - `region` string — Required. Target region for the disk.
    - `replicaZones` string[] — Required. Target URLs of the replica zones for the disk.
    - `useProjectServiceAccount` boolean — Optional. Whether to use the project service account for the disk restore.
    - `project` string — Required. Target project for the disk.
  - `requestId` string — Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  - `clearOverridesFieldMask` string, google-fieldmask — Optional. A field mask used to clear server-side default values for fields within the `instance_properties` oneof. When a field in this mask is cleared, the server will not apply its default logic (like inheriting a value from the source) for that field. The most common current use case is clearing default encryption keys. Examples of field mask paths: - Compute Instance Disks: `compute_instance_restore_properties.disks.*.disk_encryption_key` - Single Disk: `disk_restore_properties.disk_encryption_key`

## Response `200`

Successful response

---

[API](https://skmtc.dev/google/apis/backupdr.md) · [All operations](https://skmtc.dev/google/apis/backupdr/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/google/backupdr/revisions/b432f73f0b98/schema)
