{
  "documentationLink": "https://cloud.google.com/migrate/virtual-machines",
  "ownerDomain": "google.com",
  "batchPath": "batch",
  "title": "VM Migration API",
  "basePath": "",
  "schemas": {
    "BootDiskDefaults": {
      "description": "BootDiskDefaults hold information about the boot disk of a VM.",
      "properties": {
        "diskName": {
          "description": "Optional. The name of the disk.",
          "type": "string"
        },
        "deviceName": {
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
          "type": "string"
        },
        "encryption": {
          "description": "Optional. The encryption to apply to the boot disk.",
          "$ref": "Encryption"
        },
        "image": {
          "description": "The image to use when creating the disk.",
          "$ref": "DiskImageDefaults"
        },
        "diskType": {
          "description": "Optional. The type of disk provisioning to use for the VM.",
          "enumDescriptions": [
            "An unspecified disk type. Will be used as STANDARD.",
            "A Standard disk type.",
            "SSD hard disk type.",
            "An alternative to SSD persistent disks that balance performance and cost.",
            "Hyperdisk balanced disk type.",
            "Hyperdisk balanced high availability disk type."
          ],
          "enum": [
            "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
            "COMPUTE_ENGINE_DISK_TYPE_STANDARD",
            "COMPUTE_ENGINE_DISK_TYPE_SSD",
            "COMPUTE_ENGINE_DISK_TYPE_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED_HIGH_AVAILABILITY"
          ],
          "type": "string"
        }
      },
      "type": "object",
      "id": "BootDiskDefaults"
    },
    "ComputeEngineDisk": {
      "description": "Compute Engine disk target details.",
      "properties": {
        "diskId": {
          "description": "Optional. Target Compute Engine Disk ID. This is the resource ID segment of the Compute Engine Disk to create. In the resource name compute/v1/projects/{project}/zones/{zone}/disks/disk1 \"disk1\" is the resource ID for the disk.",
          "type": "string"
        },
        "replicaZones": {
          "description": "Optional. Replication zones of the regional disk. Should be of the form: projects/{target-project}/locations/{replica-zone} Currently only one replica zone is supported.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "zone": {
          "description": "Required. The Compute Engine zone in which to create the disk. Should be of the form: projects/{target-project}/locations/{zone}",
          "type": "string"
        },
        "diskType": {
          "type": "string",
          "description": "Required. The disk type to use.",
          "enumDescriptions": [
            "An unspecified disk type. Will be used as STANDARD.",
            "A Standard disk type.",
            "SSD hard disk type.",
            "An alternative to SSD persistent disks that balance performance and cost.",
            "Hyperdisk balanced disk type.",
            "Hyperdisk balanced high availability disk type."
          ],
          "enum": [
            "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
            "COMPUTE_ENGINE_DISK_TYPE_STANDARD",
            "COMPUTE_ENGINE_DISK_TYPE_SSD",
            "COMPUTE_ENGINE_DISK_TYPE_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED_HIGH_AVAILABILITY"
          ]
        }
      },
      "type": "object",
      "id": "ComputeEngineDisk"
    },
    "ServiceAccount": {
      "properties": {
        "email": {
          "description": "Required. The email address of the service account.",
          "type": "string"
        },
        "scopes": {
          "description": "Optional. The list of scopes to be made available for this service account.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Service account to assign to the instance created by the machine image.",
      "id": "ServiceAccount",
      "type": "object"
    },
    "PersistentDiskDefaults": {
      "description": "Details for creation of a Persistent Disk.",
      "properties": {
        "encryption": {
          "description": "Optional. The encryption to apply to the disk.",
          "$ref": "Encryption"
        },
        "vmAttachmentDetails": {
          "description": "Optional. Details for attachment of the disk to a VM. Used when the disk is set to be attached to a target VM.",
          "$ref": "VmAttachmentDetails"
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use.",
          "enumDescriptions": [
            "An unspecified disk type. Will be used as STANDARD.",
            "A Standard disk type.",
            "SSD hard disk type.",
            "An alternative to SSD persistent disks that balance performance and cost.",
            "Hyperdisk balanced disk type.",
            "Hyperdisk balanced high availability disk type."
          ],
          "enum": [
            "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
            "COMPUTE_ENGINE_DISK_TYPE_STANDARD",
            "COMPUTE_ENGINE_DISK_TYPE_SSD",
            "COMPUTE_ENGINE_DISK_TYPE_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED_HIGH_AVAILABILITY"
          ]
        },
        "additionalLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the Persistent Disk."
        },
        "diskName": {
          "description": "Optional. The name of the Persistent Disk to create.",
          "type": "string"
        },
        "sourceDiskNumber": {
          "type": "integer",
          "description": "Required. The ordinal number of the source VM disk.",
          "format": "int32"
        }
      },
      "type": "object",
      "id": "PersistentDiskDefaults"
    },
    "DataDiskImageImport": {
      "id": "DataDiskImageImport",
      "type": "object",
      "properties": {
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of guest OS features to apply to the imported image. These features are flags that are used by Compute Engine to enable certain capabilities for virtual machine instances that are created from the image. This field does not change the OS of the image; it only marks the image with the specified features. The user must ensure that the OS is compatible with the features. For a list of available features, see https://cloud.google.com/compute/docs/images/create-custom#guest-os-features."
        }
      },
      "description": "Used when the image import is not using OS adaptation process."
    },
    "AdaptationModifier": {
      "properties": {
        "modifier": {
          "description": "Optional. The modifier name.",
          "type": "string"
        },
        "value": {
          "description": "Optional. The value of the modifier. The actual value depends on the modifier and can also be empty.",
          "type": "string"
        }
      },
      "description": "AdaptationModifier a modifier to be used for configuration of the OS adaptation process.",
      "id": "AdaptationModifier",
      "type": "object"
    },
    "InitializingImageImportStep": {
      "id": "InitializingImageImportStep",
      "type": "object",
      "properties": {},
      "description": "InitializingImageImportStep contains specific step details."
    },
    "CycleStep": {
      "id": "CycleStep",
      "type": "object",
      "properties": {
        "postProcessing": {
          "description": "Post processing step.",
          "$ref": "PostProcessingStep"
        },
        "initializingReplication": {
          "description": "Initializing replication step.",
          "$ref": "InitializingReplicationStep"
        },
        "replicating": {
          "description": "Replicating step.",
          "$ref": "ReplicatingStep"
        },
        "startTime": {
          "format": "google-datetime",
          "description": "The time the cycle step has started.",
          "type": "string"
        },
        "endTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The time the cycle step has ended."
        }
      },
      "description": "CycleStep holds information about a step progress."
    },
    "ReplicationCycle": {
      "id": "ReplicationCycle",
      "type": "object",
      "properties": {
        "endTime": {
          "format": "google-datetime",
          "description": "The time the replication cycle has ended.",
          "type": "string"
        },
        "cycleNumber": {
          "type": "integer",
          "format": "int32",
          "description": "The cycle's ordinal number."
        },
        "startTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The time the replication cycle has started."
        },
        "name": {
          "description": "The identifier of the ReplicationCycle.",
          "type": "string"
        },
        "progressPercent": {
          "description": "The current progress in percentage of this cycle. Was replaced by 'steps' field, which breaks down the cycle progression more accurately.",
          "deprecated": true,
          "format": "int32",
          "type": "integer"
        },
        "state": {
          "description": "State of the ReplicationCycle.",
          "enumDescriptions": [
            "The state is unknown. This is used for API compatibility only and is not used by the system.",
            "The replication cycle is running.",
            "The replication cycle is paused.",
            "The replication cycle finished with errors.",
            "The replication cycle finished successfully."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "RUNNING",
            "PAUSED",
            "FAILED",
            "SUCCEEDED"
          ],
          "type": "string"
        },
        "error": {
          "description": "Output only. Provides details on the state of the cycle in case of an error.",
          "$ref": "Status",
          "readOnly": true
        },
        "steps": {
          "description": "The cycle's steps list representing its progress.",
          "type": "array",
          "items": {
            "$ref": "CycleStep"
          }
        },
        "progress": {
          "description": "The current progress in percentage of this cycle.",
          "deprecated": true,
          "format": "int32",
          "type": "integer"
        },
        "totalPauseDuration": {
          "format": "google-duration",
          "description": "The accumulated duration the replication cycle was paused.",
          "type": "string"
        },
        "warnings": {
          "description": "Output only. Warnings that occurred during the cycle.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "MigrationWarning"
          }
        }
      },
      "description": "ReplicationCycle contains information about the current replication cycle status."
    },
    "Empty": {
      "id": "Empty",
      "type": "object",
      "properties": {},
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }"
    },
    "Operation": {
      "properties": {
        "metadata": {
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "type": "object",
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any."
        },
        "name": {
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
          "type": "string"
        },
        "response": {
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "error": {
          "description": "The error result of the operation in case of failure or cancellation.",
          "$ref": "Status"
        },
        "done": {
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
          "type": "boolean"
        }
      },
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "id": "Operation",
      "type": "object"
    },
    "VmCapabilities": {
      "properties": {
        "osCapabilities": {
          "description": "Output only. Unordered list. List of certain VM OS capabilities needed for some Compute Engine features.",
          "readOnly": true,
          "type": "array",
          "items": {
            "enumDescriptions": [
              "This is for API compatibility only and is not in use.",
              "NVMe driver installed and the VM can use NVMe PD or local SSD.",
              "gVNIC virtual NIC driver supported.",
              "IDPF virtual NIC driver supported."
            ],
            "enum": [
              "OS_CAPABILITY_UNSPECIFIED",
              "OS_CAPABILITY_NVME_STORAGE_ACCESS",
              "OS_CAPABILITY_GVNIC_NETWORK_INTERFACE",
              "OS_CAPABILITY_IDPF_NETWORK_INTERFACE"
            ],
            "type": "string"
          }
        },
        "lastOsCapabilitiesUpdateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The last time OS capabilities list was updated."
        }
      },
      "description": "Migrating VM source information about the VM capabilities needed for some Compute Engine features.",
      "id": "VmCapabilities",
      "type": "object"
    },
    "ApplianceVersion": {
      "description": "Describes an appliance version.",
      "properties": {
        "critical": {
          "description": "Determine whether it's critical to upgrade the appliance to this version.",
          "type": "boolean"
        },
        "releaseNotesUri": {
          "description": "Link to a page that contains the version release notes.",
          "type": "string"
        },
        "version": {
          "description": "The appliance version.",
          "type": "string"
        },
        "uri": {
          "description": "A link for downloading the version.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "ApplianceVersion"
    },
    "TargetVMDetails": {
      "deprecated": true,
      "description": "TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project.",
      "id": "TargetVMDetails",
      "type": "object",
      "properties": {
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "NetworkInterface"
          },
          "description": "List of NICs connected to this VM."
        },
        "secureBoot": {
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.",
          "type": "boolean"
        },
        "subnetwork": {
          "description": "The subnetwork to connect the VM to.",
          "type": "string"
        },
        "computeScheduling": {
          "description": "Compute instance scheduling information (if empty default is used).",
          "$ref": "ComputeScheduling"
        },
        "metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "serviceAccount": {
          "description": "The service account to associate the VM with.",
          "type": "string"
        },
        "zone": {
          "description": "The zone in which to create the VM.",
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "appliedLicense": {
          "readOnly": true,
          "description": "Output only. The OS license returned from the adaptation module report.",
          "$ref": "AppliedLicense"
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM.",
          "enumDescriptions": [
            "An unspecified disk type. Will be used as STANDARD.",
            "A Standard disk type.",
            "An alternative to SSD persistent disks that balance performance and cost.",
            "SSD hard disk type.",
            "Hyperdisk balanced disk type.",
            "Hyperdisk balanced high availability disk type."
          ],
          "enum": [
            "DISK_TYPE_UNSPECIFIED",
            "STANDARD",
            "BALANCED",
            "SSD",
            "HYPERDISK_BALANCED",
            "HYPERDISK_BALANCED_HIGH_AVAILABILITY"
          ]
        },
        "name": {
          "description": "The name of the VM to create.",
          "type": "string"
        },
        "project": {
          "description": "Output only. The project in which to create the VM.",
          "deprecated": true,
          "readOnly": true,
          "type": "string"
        },
        "network": {
          "description": "The network to connect the VM to.",
          "type": "string"
        },
        "machineTypeSeries": {
          "description": "The machine type series to create the VM with.",
          "type": "string"
        },
        "machineType": {
          "description": "The machine type to create the VM with.",
          "type": "string"
        },
        "targetProject": {
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.",
          "type": "string"
        },
        "bootOption": {
          "type": "string",
          "description": "Output only. The VM Boot Option, as set in the source VM.",
          "enumDescriptions": [
            "The boot option is unknown.",
            "The boot option is EFI.",
            "The boot option is BIOS."
          ],
          "readOnly": true,
          "enum": [
            "BOOT_OPTION_UNSPECIFIED",
            "EFI",
            "BIOS"
          ]
        },
        "internalIp": {
          "description": "The internal IP to define in the VM. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path.",
          "type": "string"
        },
        "externalIp": {
          "description": "The external IP to define in the VM.",
          "type": "string"
        },
        "networkTags": {
          "description": "A list of network tags to associate with the VM.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "licenseType": {
          "description": "The license type to use in OS adaptation.",
          "enumDescriptions": [
            "The license type is the default for the OS.",
            "The license type is Pay As You Go license type.",
            "The license type is Bring Your Own License type."
          ],
          "enum": [
            "DEFAULT",
            "PAYG",
            "BYOL"
          ],
          "type": "string"
        }
      }
    },
    "SourceStorageResource": {
      "type": "object",
      "id": "SourceStorageResource",
      "description": "SourceStorageResource describes a storage resource in the source.",
      "properties": {
        "awsDiskDetails": {
          "description": "Source AWS volume details.",
          "$ref": "AwsSourceDiskDetails"
        }
      }
    },
    "AvailableUpdates": {
      "properties": {
        "newDeployableAppliance": {
          "description": "The newest deployable version of the appliance. The current appliance can't be updated into this version, and the owner must manually deploy this OVA to a new appliance.",
          "$ref": "ApplianceVersion"
        },
        "inPlaceUpdate": {
          "description": "The latest version for in place update. The current appliance can be updated to this version using the API or m4c CLI.",
          "$ref": "ApplianceVersion"
        }
      },
      "description": "Holds information about the available versions for upgrade.",
      "id": "AvailableUpdates",
      "type": "object"
    },
    "Link": {
      "type": "object",
      "id": "Link",
      "description": "Describes a URL link.",
      "properties": {
        "description": {
          "description": "Describes what the link offers.",
          "type": "string"
        },
        "url": {
          "description": "The URL of the link.",
          "type": "string"
        }
      }
    },
    "ProvisioningTargetDiskStep": {
      "properties": {},
      "description": "ProvisioningTargetDiskStep contains specific step details.",
      "id": "ProvisioningTargetDiskStep",
      "type": "object"
    },
    "CutoverJob": {
      "id": "CutoverJob",
      "type": "object",
      "properties": {
        "computeEngineTargetDetails": {
          "readOnly": true,
          "description": "Output only. Details of the target VM in Compute Engine.",
          "$ref": "ComputeEngineTargetDetails"
        },
        "createTime": {
          "format": "google-datetime",
          "description": "Output only. The time the cutover job was created (as an API call, not when it was actually created in the target).",
          "readOnly": true,
          "type": "string"
        },
        "endTime": {
          "format": "google-datetime",
          "description": "Output only. The time the cutover job had finished.",
          "readOnly": true,
          "type": "string"
        },
        "stateTime": {
          "description": "Output only. The time the state was last updated.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "computeEngineDisksTargetDetails": {
          "description": "Output only. Details of the target Persistent Disks in Compute Engine.",
          "$ref": "ComputeEngineDisksTargetDetails",
          "readOnly": true
        },
        "progress": {
          "readOnly": true,
          "type": "integer",
          "description": "Output only. The current progress in percentage of the cutover job.",
          "deprecated": true,
          "format": "int32"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The name of the cutover job."
        },
        "state": {
          "type": "string",
          "description": "Output only. State of the cutover job.",
          "enumDescriptions": [
            "The state is unknown. This is used for API compatibility only and is not used by the system.",
            "The cutover job has not yet started.",
            "The cutover job finished with errors.",
            "The cutover job finished successfully.",
            "The cutover job was cancelled.",
            "The cutover job is being cancelled.",
            "The cutover job is active and running.",
            "OS adaptation is running as part of the cutover job to generate license."
          ],
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "FAILED",
            "SUCCEEDED",
            "CANCELLED",
            "CANCELLING",
            "ACTIVE",
            "ADAPTING_OS"
          ]
        },
        "progressPercent": {
          "format": "int32",
          "description": "Output only. The current progress in percentage of the cutover job.",
          "readOnly": true,
          "type": "integer"
        },
        "stateMessage": {
          "description": "Output only. A message providing possible extra details about the current state.",
          "readOnly": true,
          "type": "string"
        },
        "computeEngineVmDetails": {
          "deprecated": true,
          "description": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
          "$ref": "TargetVMDetails",
          "readOnly": true
        },
        "error": {
          "readOnly": true,
          "description": "Output only. Provides details for the errors that led to the Cutover Job's state.",
          "$ref": "Status"
        },
        "targetDetails": {
          "deprecated": true,
          "description": "Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.",
          "$ref": "TargetVMDetails",
          "readOnly": true
        },
        "steps": {
          "description": "Output only. The cutover steps list representing its progress.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "CutoverStep"
          }
        }
      },
      "description": "CutoverJob message describes a cutover of a migrating VM. The CutoverJob is the operation of shutting down the VM, creating a snapshot and cloning the VM using the replicated snapshot."
    },
    "AddGroupMigrationRequest": {
      "type": "object",
      "id": "AddGroupMigrationRequest",
      "description": "Request message for 'AddGroupMigration' request.",
      "properties": {
        "migratingVm": {
          "description": "The full path name of the MigratingVm to add.",
          "type": "string"
        }
      }
    },
    "StartMigrationRequest": {
      "type": "object",
      "id": "StartMigrationRequest",
      "description": "Request message for 'StartMigrationRequest' request.",
      "properties": {}
    },
    "CopyingSourceDiskSnapshotStep": {
      "id": "CopyingSourceDiskSnapshotStep",
      "type": "object",
      "properties": {},
      "description": "CopyingSourceDiskSnapshotStep contains specific step details."
    },
    "MigrationWarning": {
      "id": "MigrationWarning",
      "type": "object",
      "properties": {
        "helpLinks": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Link"
          },
          "description": "Output only. URL(s) pointing to additional information on handling the current warning."
        },
        "actionItem": {
          "description": "Output only. Suggested action for solving the warning.",
          "$ref": "LocalizedMessage",
          "readOnly": true
        },
        "warningTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The time the warning occurred."
        },
        "code": {
          "type": "string",
          "description": "The warning code.",
          "enumDescriptions": [
            "Default value. This value is not used.",
            "A warning originated from OS Adaptation."
          ],
          "enum": [
            "WARNING_CODE_UNSPECIFIED",
            "ADAPTATION_WARNING"
          ]
        },
        "warningMessage": {
          "readOnly": true,
          "description": "Output only. The localized warning message.",
          "$ref": "LocalizedMessage"
        }
      },
      "description": "Represents migration resource warning information that can be used with google.rpc.Status message. MigrationWarning is used to present the user with warning information in migration operations."
    },
    "VmUtilizationMetrics": {
      "description": "Utilization metrics values for a single VM.",
      "properties": {
        "networkThroughputMaxKbps": {
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second.",
          "format": "int64",
          "type": "string"
        },
        "diskIoRateAverage": {
          "type": "string",
          "deprecated": true,
          "format": "int64",
          "description": "Average disk IO rate, in kilobytes per second."
        },
        "diskIoRateMaxKbps": {
          "type": "string",
          "description": "Max disk IO rate, in kilobytes per second.",
          "format": "int64"
        },
        "memoryMax": {
          "deprecated": true,
          "format": "int32",
          "description": "Max memory usage, percent.",
          "type": "integer"
        },
        "networkThroughputAverage": {
          "type": "string",
          "deprecated": true,
          "format": "int64",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "diskIoRateAverageKbps": {
          "format": "int64",
          "description": "Average disk IO rate, in kilobytes per second.",
          "type": "string"
        },
        "cpuAverage": {
          "type": "integer",
          "description": "Average CPU usage, percent.",
          "deprecated": true,
          "format": "int32"
        },
        "memoryMaxPercent": {
          "type": "integer",
          "format": "int32",
          "description": "Max memory usage, percent."
        },
        "diskIoRateMax": {
          "type": "string",
          "deprecated": true,
          "format": "int64",
          "description": "Max disk IO rate, in kilobytes per second."
        },
        "networkThroughputMax": {
          "deprecated": true,
          "format": "int64",
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second.",
          "type": "string"
        },
        "cpuAveragePercent": {
          "description": "Average CPU usage, percent.",
          "format": "int32",
          "type": "integer"
        },
        "memoryAveragePercent": {
          "type": "integer",
          "format": "int32",
          "description": "Average memory usage, percent."
        },
        "networkThroughputAverageKbps": {
          "type": "string",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second.",
          "format": "int64"
        },
        "cpuMaxPercent": {
          "type": "integer",
          "format": "int32",
          "description": "Max CPU usage, percent."
        },
        "memoryAverage": {
          "deprecated": true,
          "format": "int32",
          "description": "Average memory usage, percent.",
          "type": "integer"
        },
        "cpuMax": {
          "description": "Max CPU usage, percent.",
          "deprecated": true,
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object",
      "id": "VmUtilizationMetrics"
    },
    "DiskMigrationJobTargetDetails": {
      "type": "object",
      "id": "DiskMigrationJobTargetDetails",
      "description": "Details of the target disk in Compute Engine.",
      "properties": {
        "targetDisk": {
          "description": "Required. The target disk.",
          "$ref": "ComputeEngineDisk"
        },
        "targetProject": {
          "description": "Required. The name of the resource of type TargetProject which represents the Compute Engine project in which to create the disk. Should be of the form: projects/{project}/locations/global/targetProjects/{target-project}",
          "type": "string"
        },
        "labels": {
          "description": "Optional. A map of labels to associate with the disk.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "encryption": {
          "description": "Optional. The encryption to apply to the disk. If the DiskMigrationJob parent Source resource has an encryption, this field must be set to the same encryption key.",
          "$ref": "Encryption"
        }
      }
    },
    "Group": {
      "description": "Describes message for 'Group' resource. The Group is a collections of several MigratingVms.",
      "properties": {
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The create time timestamp.",
          "format": "google-datetime"
        },
        "description": {
          "description": "User-provided description of the group.",
          "type": "string"
        },
        "updateTime": {
          "description": "Output only. The update time timestamp.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "migrationTargetType": {
          "description": "Immutable. The target type of this group.",
          "enumDescriptions": [
            "Group type is not specified. This defaults to Compute Engine targets.",
            "All MigratingVMs in the group must have Compute Engine targets.",
            "All MigratingVMs in the group must have Compute Engine Disks targets."
          ],
          "enum": [
            "MIGRATION_TARGET_TYPE_UNSPECIFIED",
            "MIGRATION_TARGET_TYPE_GCE",
            "MIGRATION_TARGET_TYPE_DISKS"
          ],
          "type": "string"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The Group name."
        },
        "displayName": {
          "description": "Display name is a user defined name for this group which can be updated.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Group"
    },
    "ListCutoverJobsResponse": {
      "properties": {
        "unreachable": {
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Locations that could not be reached."
        },
        "cutoverJobs": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "CutoverJob"
          },
          "description": "Output only. The list of cutover jobs response."
        },
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "description": "Response message for 'ListCutoverJobs' request.",
      "id": "ListCutoverJobsResponse",
      "type": "object"
    },
    "DisksMigrationVmTargetDetails": {
      "id": "DisksMigrationVmTargetDetails",
      "type": "object",
      "properties": {
        "vmUri": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The URI of the Compute Engine VM."
        }
      },
      "description": "Details for the VM created VM as part of disks migration."
    },
    "FetchStorageInventoryResponse": {
      "description": "Response message for fetchStorageInventory.",
      "properties": {
        "resources": {
          "type": "array",
          "items": {
            "$ref": "SourceStorageResource"
          },
          "description": "The list of storage resources in the source."
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The timestamp when the source was last queried (if the result is from the cache)."
        },
        "nextPageToken": {
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object",
      "id": "FetchStorageInventoryResponse"
    },
    "DatacenterConnector": {
      "description": "DatacenterConnector message describes a connector between the Source and Google Cloud, which is installed on a vmware datacenter (an OVA vm installed by the user) to connect the Datacenter to Google Cloud and support vm migration data transfer.",
      "properties": {
        "version": {
          "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified.",
          "type": "string"
        },
        "error": {
          "readOnly": true,
          "description": "Output only. Provides details on the state of the Datacenter Connector in case of an error.",
          "$ref": "Status"
        },
        "registrationId": {
          "description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified.",
          "type": "string"
        },
        "applianceInfrastructureVersion": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Appliance OVA version. This is the OVA which is manually installed by the user and contains the infrastructure for the automatically updatable components on the appliance."
        },
        "name": {
          "description": "Output only. The connector's name.",
          "readOnly": true,
          "type": "string"
        },
        "state": {
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "OFFLINE",
            "FAILED",
            "ACTIVE"
          ],
          "type": "string",
          "description": "Output only. State of the DatacenterConnector, as determined by the health checks.",
          "enumDescriptions": [
            "The state is unknown. This is used for API compatibility only and is not used by the system.",
            "The state was not sampled by the health checks yet.",
            "The source was sampled by health checks and is not available.",
            "The source is available but might not be usable yet due to unvalidated credentials or another reason. The credentials referred to are the ones to the Source. The error message will contain further details.",
            "The source exists and its credentials were verified."
          ]
        },
        "applianceSoftwareVersion": {
          "description": "Output only. Appliance last installed update bundle version. This is the version of the automatically updatable components on the appliance.",
          "readOnly": true,
          "type": "string"
        },
        "availableVersions": {
          "description": "Output only. The available versions for updating this appliance.",
          "$ref": "AvailableUpdates",
          "readOnly": true
        },
        "serviceAccount": {
          "description": "The service account to use in the connector when communicating with the cloud.",
          "type": "string"
        },
        "bucket": {
          "description": "Output only. The communication channel between the datacenter connector and Google Cloud.",
          "readOnly": true,
          "type": "string"
        },
        "upgradeStatus": {
          "description": "Output only. The status of the current / last upgradeAppliance operation.",
          "$ref": "UpgradeStatus",
          "readOnly": true
        },
        "stateTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the state was last set.",
          "format": "google-datetime"
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time the connector was created (as an API call, not when it was actually installed)."
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The last time the connector was updated with an API call.",
          "format": "google-datetime"
        }
      },
      "type": "object",
      "id": "DatacenterConnector"
    },
    "MachineImageTargetDetails": {
      "id": "MachineImageTargetDetails",
      "type": "object",
      "properties": {
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "NetworkInterface"
          },
          "description": "Optional. The network interfaces to create with the instance created by the machine image. Internal and external IP addresses, and network tiers are ignored for machine image import."
        },
        "shieldedInstanceConfig": {
          "description": "Optional. Shielded instance configuration.",
          "$ref": "ShieldedInstanceConfig"
        },
        "serviceAccount": {
          "description": "Optional. The service account to assign to the instance created by the machine image.",
          "$ref": "ServiceAccount"
        },
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional licenses to assign to the instance created by the machine image. Format: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/licenses/LICENSE_NAME Or https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/licenses/LICENSE_NAME"
        },
        "description": {
          "description": "Optional. An optional description of the machine image.",
          "type": "string"
        },
        "machineImageName": {
          "description": "Required. The name of the machine image to be created.",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Optional. The labels to apply to the instance created by the machine image."
        },
        "osAdaptationParameters": {
          "description": "Optional. Use to set the parameters relevant for the OS adaptation process.",
          "$ref": "ImageImportOsAdaptationParameters"
        },
        "skipOsAdaptation": {
          "description": "Optional. Use to skip OS adaptation process.",
          "$ref": "SkipOsAdaptation"
        },
        "encryption": {
          "description": "Immutable. The encryption to apply to the machine image. If the Image Import resource has an encryption, this field must be set to the same encryption key.",
          "$ref": "Encryption"
        },
        "targetProject": {
          "description": "Required. Reference to the TargetProject resource that represents the target project in which the imported machine image will be created.",
          "type": "string"
        },
        "singleRegionStorage": {
          "description": "Optional. Set to true to set the machine image storageLocations to the single region of the import job. When false, the closest multi-region is selected.",
          "type": "boolean"
        },
        "machineImageParametersOverrides": {
          "description": "Optional. Parameters overriding decisions based on the source machine image configurations.",
          "$ref": "MachineImageParametersOverrides"
        },
        "tags": {
          "description": "Optional. The tags to apply to the instance created by the machine image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "The target details of the machine image resource that will be created by the image import job."
    },
    "MigratingVm": {
      "id": "MigratingVm",
      "type": "object",
      "properties": {
        "computeEngineVmDefaults": {
          "deprecated": true,
          "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead.",
          "$ref": "TargetVMDetails"
        },
        "state": {
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "READY",
            "FIRST_SYNC",
            "ACTIVE",
            "CUTTING_OVER",
            "CUTOVER",
            "FINAL_SYNC",
            "PAUSED",
            "FINALIZING",
            "FINALIZED",
            "ERROR",
            "EXPIRED",
            "FINALIZED_EXPIRED"
          ],
          "type": "string",
          "description": "Output only. State of the MigratingVm.",
          "enumDescriptions": [
            "The state was not sampled by the health checks yet.",
            "The VM in the source is being verified.",
            "The source VM was verified, and it's ready to start replication.",
            "Migration is going through the first sync cycle.",
            "The replication is active, and it's running or scheduled to run.",
            "The source VM is being turned off, and a final replication is currently running.",
            "The source VM was stopped and replicated. The replication is currently paused.",
            "A cutover job is active and replication cycle is running the final sync.",
            "The replication was paused by the user and no cycles are scheduled to run.",
            "The migrating VM is being finalized and migration resources are being removed.",
            "The replication process is done. The migrating VM is finalized and no longer consumes billable resources.",
            "The replication process encountered an unrecoverable error and was aborted.",
            "The migrating VM has passed its expiration date. It might be possible to bring it back to \"Active\" state by updating the TTL field. For more information, see the documentation.",
            "The migrating VM's has been finalized and migration resources have been removed."
          ]
        },
        "name": {
          "description": "Output only. The identifier of the MigratingVm.",
          "readOnly": true,
          "type": "string"
        },
        "computeEngineDisksTargetDefaults": {
          "description": "Details of the target Persistent Disks in Compute Engine.",
          "$ref": "ComputeEngineDisksTargetDefaults"
        },
        "targetDefaults": {
          "description": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead.",
          "$ref": "TargetVMDetails",
          "deprecated": true
        },
        "lastReplicationCycle": {
          "description": "Output only. Details of the last replication cycle. This will be updated whenever a replication cycle is finished and is not to be confused with last_sync which is only updated on successful replication cycles.",
          "$ref": "ReplicationCycle",
          "readOnly": true
        },
        "group": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource."
        },
        "recentCloneJobs": {
          "description": "Output only. The recent clone jobs performed on the migrating VM. This field holds the vm's last completed clone job and the vm's running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "CloneJob"
          }
        },
        "expiration": {
          "readOnly": true,
          "description": "Output only. Provides details about the expiration state of the migrating VM.",
          "$ref": "Expiration"
        },
        "awsSourceVmDetails": {
          "description": "Output only. Details of the VM from an AWS source.",
          "$ref": "AwsSourceVmDetails",
          "readOnly": true
        },
        "policy": {
          "description": "The replication schedule policy.",
          "$ref": "SchedulePolicy"
        },
        "cutoverForecast": {
          "readOnly": true,
          "description": "Output only. Provides details of future CutoverJobs of a MigratingVm. Set to empty when cutover forecast is unavailable.",
          "$ref": "CutoverForecast"
        },
        "sourceVmId": {
          "description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-.",
          "type": "string"
        },
        "azureSourceVmDetails": {
          "description": "Output only. Details of the VM from an Azure source.",
          "$ref": "AzureSourceVmDetails",
          "readOnly": true
        },
        "lastSync": {
          "readOnly": true,
          "description": "Output only. The most updated snapshot created time in the source that finished replication.",
          "$ref": "ReplicationSync"
        },
        "currentSyncInfo": {
          "description": "Output only. Details of the current running replication cycle.",
          "$ref": "ReplicationCycle",
          "readOnly": true
        },
        "vmwareSourceVmDetails": {
          "description": "Output only. Details of the VM from a Vmware source.",
          "$ref": "VmwareSourceVmDetails",
          "readOnly": true
        },
        "computeEngineTargetDefaults": {
          "description": "Details of the target VM in Compute Engine.",
          "$ref": "ComputeEngineTargetDefaults"
        },
        "displayName": {
          "description": "The display name attached to the MigratingVm by the user.",
          "type": "string"
        },
        "error": {
          "description": "Output only. Provides details on the state of the Migrating VM in case of an error in replication.",
          "$ref": "Status",
          "readOnly": true
        },
        "updateTime": {
          "description": "Output only. The last time the migrating VM resource was updated.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source)."
        },
        "recentCutoverJobs": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "CutoverJob"
          },
          "description": "Output only. The recent cutover jobs performed on the migrating VM. This field holds the vm's last completed cutover job and the vm's running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request."
        },
        "stateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The last time the migrating VM state was updated."
        },
        "description": {
          "description": "The description attached to the migrating VM by the user.",
          "type": "string"
        },
        "labels": {
          "description": "The labels of the migrating VM.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "description": "MigratingVm describes the VM that will be migrated from a Source environment and its replication state."
    },
    "DiskImageTargetDetails": {
      "type": "object",
      "id": "DiskImageTargetDetails",
      "description": "The target details of the image resource that will be created by the import job.",
      "properties": {
        "additionalLicenses": {
          "description": "Optional. Additional licenses to assign to the image. Format: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/licenses/LICENSE_NAME Or https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/licenses/LICENSE_NAME",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "encryption": {
          "description": "Immutable. The encryption to apply to the image.",
          "$ref": "Encryption"
        },
        "targetProject": {
          "description": "Required. Reference to the TargetProject resource that represents the target project in which the imported image will be created.",
          "type": "string"
        },
        "description": {
          "description": "Optional. An optional description of the image.",
          "type": "string"
        },
        "singleRegionStorage": {
          "description": "Optional. Set to true to set the image storageLocations to the single region of the import job. When false, the closest multi-region is selected.",
          "type": "boolean"
        },
        "labels": {
          "description": "Optional. A map of labels to associate with the image.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "dataDiskImageImport": {
          "description": "Optional. Use to skip OS adaptation process.",
          "$ref": "DataDiskImageImport"
        },
        "familyName": {
          "description": "Optional. The name of the image family to which the new image belongs.",
          "type": "string"
        },
        "osAdaptationParameters": {
          "description": "Optional. Use to set the parameters relevant for the OS adaptation process.",
          "$ref": "ImageImportOsAdaptationParameters"
        },
        "imageName": {
          "description": "Required. The name of the image to be created.",
          "type": "string"
        }
      }
    },
    "DisksMigrationDisksTargetDefaults": {
      "properties": {},
      "description": "Details for a disk only migration.",
      "id": "DisksMigrationDisksTargetDefaults",
      "type": "object"
    },
    "AppliedLicense": {
      "description": "AppliedLicense holds the license data returned by adaptation module report.",
      "properties": {
        "type": {
          "description": "The license type that was used in OS adaptation.",
          "enumDescriptions": [
            "Unspecified license for the OS.",
            "No license available for the OS.",
            "The license type is Pay As You Go license type.",
            "The license type is Bring Your Own License type."
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "NONE",
            "PAYG",
            "BYOL"
          ],
          "type": "string"
        },
        "osLicense": {
          "description": "The OS license returned from the adaptation module's report.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "AppliedLicense"
    },
    "ShuttingDownSourceVMStep": {
      "type": "object",
      "id": "ShuttingDownSourceVMStep",
      "description": "ShuttingDownSourceVMStep contains specific step details.",
      "properties": {}
    },
    "ComputeEngineTargetDetails": {
      "type": "object",
      "id": "ComputeEngineTargetDetails",
      "description": "ComputeEngineTargetDetails is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "networkInterfaces": {
          "description": "List of NICs connected to this VM.",
          "type": "array",
          "items": {
            "$ref": "NetworkInterface"
          }
        },
        "secureBoot": {
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI.",
          "type": "boolean"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "vmName": {
          "description": "The name of the VM to create.",
          "type": "string"
        },
        "machineTypeSeries": {
          "description": "The machine type series to create the VM with.",
          "type": "string"
        },
        "machineType": {
          "description": "The machine type to create the VM with.",
          "type": "string"
        },
        "bootOption": {
          "description": "The VM Boot Option, as set in the source VM.",
          "enumDescriptions": [
            "The boot option is unknown.",
            "The boot option is EFI.",
            "The boot option is BIOS."
          ],
          "enum": [
            "COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED",
            "COMPUTE_ENGINE_BOOT_OPTION_EFI",
            "COMPUTE_ENGINE_BOOT_OPTION_BIOS"
          ],
          "type": "string"
        },
        "hostname": {
          "description": "The hostname to assign to the VM.",
          "type": "string"
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "enableVtpm": {
          "description": "Optional. Defines whether the instance has vTPM enabled.",
          "type": "boolean"
        },
        "storagePool": {
          "description": "Optional. The storage pool used for the VM disks. If specified this will be the storage pool in which the disk is created. This is the full path of the storage pool resource, for example: \"projects/my-project/zones/us-central1-a/storagePools/my-storage-pool\". The storage pool must be in the same project and zone as the target disks. The storage pool's type must match the disk type.",
          "type": "string"
        },
        "computeScheduling": {
          "description": "Compute instance scheduling information (if empty default is used).",
          "$ref": "ComputeScheduling"
        },
        "serviceAccount": {
          "description": "The service account to associate the VM with.",
          "type": "string"
        },
        "bootConversion": {
          "description": "Optional. By default the virtual machine will keep its existing boot option. Setting this property will trigger an internal process which will convert the virtual machine from using the existing boot option to another.",
          "enumDescriptions": [
            "Unspecified conversion type.",
            "No conversion.",
            "Convert from BIOS to EFI."
          ],
          "enum": [
            "BOOT_CONVERSION_UNSPECIFIED",
            "NONE",
            "BIOS_TO_EFI"
          ],
          "type": "string"
        },
        "zone": {
          "description": "The zone in which to create the VM.",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "A map of labels to associate with the VM."
        },
        "appliedLicense": {
          "description": "The OS license returned from the adaptation module report.",
          "$ref": "AppliedLicense"
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM.",
          "enumDescriptions": [
            "An unspecified disk type. Will be used as STANDARD.",
            "A Standard disk type.",
            "SSD hard disk type.",
            "An alternative to SSD persistent disks that balance performance and cost.",
            "Hyperdisk balanced disk type.",
            "Hyperdisk balanced high availability disk type."
          ],
          "enum": [
            "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
            "COMPUTE_ENGINE_DISK_TYPE_STANDARD",
            "COMPUTE_ENGINE_DISK_TYPE_SSD",
            "COMPUTE_ENGINE_DISK_TYPE_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED_HIGH_AVAILABILITY"
          ]
        },
        "project": {
          "description": "The Google Cloud target project ID or project name.",
          "type": "string"
        },
        "enableIntegrityMonitoring": {
          "description": "Optional. Defines whether the instance has integrity monitoring enabled.",
          "type": "boolean"
        },
        "encryption": {
          "description": "Optional. The encryption to apply to the VM disks.",
          "$ref": "Encryption"
        },
        "adaptationModifiers": {
          "type": "array",
          "items": {
            "$ref": "AdaptationModifier"
          },
          "description": "Optional. Modifiers to be used as configuration of the OS adaptation process."
        },
        "diskReplicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional replica zones of the target regional disks. If this list is not empty a regional disk will be created. The first supported zone would be the one stated in the zone field. The rest are taken from this list. Please refer to the [regional disk creation API](https://cloud.google.com/compute/docs/regions-zones/global-regional-zonal-resources) for further details about regional vs zonal disks. If not specified, a zonal disk will be created in the same zone the VM is created."
        },
        "licenseType": {
          "type": "string",
          "description": "The license type to use in OS adaptation.",
          "enumDescriptions": [
            "The license type is the default for the OS.",
            "The license type is Pay As You Go license type.",
            "The license type is Bring Your Own License type."
          ],
          "enum": [
            "COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT",
            "COMPUTE_ENGINE_LICENSE_TYPE_PAYG",
            "COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
          ]
        }
      }
    },
    "AwsSourceDetails": {
      "properties": {
        "accessKeyCreds": {
          "description": "AWS Credentials using access key id and secret.",
          "$ref": "AccessKeyCredentials"
        },
        "error": {
          "description": "Output only. Provides details on the state of the Source in case of an error.",
          "$ref": "Status",
          "readOnly": true
        },
        "state": {
          "type": "string",
          "description": "Output only. State of the source as determined by the health check.",
          "enumDescriptions": [
            "The state is unknown. This is used for API compatibility only and is not used by the system.",
            "The state was not sampled by the health checks yet.",
            "The source is available but might not be usable yet due to invalid credentials or another reason. The error message will contain further details.",
            "The source exists and its credentials were verified."
          ],
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "FAILED",
            "ACTIVE"
          ]
        },
        "migrationResourcesUserTags": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "User specified tags to add to every M2VM generated resource in AWS. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m2vm`."
        },
        "awsRegion": {
          "description": "Immutable. The AWS region that the source VMs will be migrated from.",
          "type": "string"
        },
        "publicIp": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The source's public IP. All communication initiated by this source will originate from this IP."
        },
        "inventoryTagList": {
          "type": "array",
          "items": {
            "$ref": "Tag"
          },
          "description": "AWS resource tags to limit the scope of the source inventory."
        },
        "inventorySecurityGroupNames": {
          "description": "AWS security group names to limit the scope of the source inventory.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "AwsSourceDetails message describes a specific source details for the AWS source type.",
      "id": "AwsSourceDetails",
      "type": "object"
    },
    "ListGroupsResponse": {
      "properties": {
        "unreachable": {
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Locations that could not be reached."
        },
        "groups": {
          "description": "Output only. The list of groups response.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Group"
          }
        },
        "nextPageToken": {
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "Response message for 'ListGroups' request.",
      "id": "ListGroupsResponse",
      "type": "object"
    },
    "ClientSecretCredentials": {
      "type": "object",
      "id": "ClientSecretCredentials",
      "description": "Message describing Azure Credentials using tenant ID, client ID and secret.",
      "properties": {
        "tenantId": {
          "description": "Azure tenant ID.",
          "type": "string"
        },
        "clientId": {
          "description": "Azure client ID.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Input only. Azure client secret.",
          "type": "string"
        }
      }
    },
    "ListImageImportsResponse": {
      "id": "ListImageImportsResponse",
      "type": "object",
      "properties": {
        "imageImports": {
          "description": "Output only. The list of target response.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "ImageImport"
          }
        },
        "unreachable": {
          "description": "Output only. Locations that could not be reached.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "description": "Response message for 'ListImageImports' call."
    },
    "ListTargetProjectsResponse": {
      "id": "ListTargetProjectsResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "targetProjects": {
          "description": "Output only. The list of target response.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "TargetProject"
          }
        },
        "unreachable": {
          "description": "Output only. Locations that could not be reached.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Response message for 'ListTargetProjects' call."
    },
    "DiskMigrationJob": {
      "type": "object",
      "id": "DiskMigrationJob",
      "description": "Describes the disk which will be migrated from the source environment. The source disk has to be unattached.",
      "properties": {
        "targetDetails": {
          "description": "Required. Details of the target Disk in Compute Engine.",
          "$ref": "DiskMigrationJobTargetDetails"
        },
        "steps": {
          "description": "Output only. The disk migration steps list representing its progress.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "DiskMigrationStep"
          }
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The last time the DiskMigrationJob resource was updated.",
          "format": "google-datetime"
        },
        "state": {
          "description": "Output only. State of the DiskMigrationJob.",
          "enumDescriptions": [
            "The state is unspecified. This is not in use.",
            "The initial state of the disk migration. In this state the customers can update the target details.",
            "The migration is active, and it's running or scheduled to run.",
            "The migration completed successfully.",
            "Migration cancellation was initiated.",
            "The migration was cancelled.",
            "The migration process encountered an unrecoverable error and was aborted."
          ],
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "READY",
            "RUNNING",
            "SUCCEEDED",
            "CANCELLING",
            "CANCELLED",
            "FAILED"
          ],
          "readOnly": true
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Identifier. The identifier of the DiskMigrationJob."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the DiskMigrationJob resource was created.",
          "format": "google-datetime"
        },
        "awsSourceDiskDetails": {
          "description": "Details of the unattached AWS source disk.",
          "$ref": "AwsSourceDiskDetails"
        },
        "errors": {
          "description": "Output only. Provides details on the errors that led to the disk migration job's state in case of an error.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Status"
          }
        }
      }
    },
    "MachineImageParametersOverrides": {
      "type": "object",
      "id": "MachineImageParametersOverrides",
      "description": "Parameters overriding decisions based on the source machine image configurations.",
      "properties": {
        "machineType": {
          "description": "Optional. The machine type to create the MachineImage with. If empty, the service will choose a relevant machine type based on the information from the source image. For more information about machine types, please refer to https://cloud.google.com/compute/docs/machine-resource.",
          "type": "string"
        }
      }
    },
    "AccessKeyCredentials": {
      "properties": {
        "sessionToken": {
          "description": "Input only. AWS session token. Used only when AWS security token service (STS) is responsible for creating the temporary credentials.",
          "type": "string"
        },
        "secretAccessKey": {
          "description": "Input only. AWS secret access key.",
          "type": "string"
        },
        "accessKeyId": {
          "description": "AWS access key ID.",
          "type": "string"
        }
      },
      "description": "Message describing AWS Credentials using access key id and secret.",
      "id": "AccessKeyCredentials",
      "type": "object"
    },
    "Expiration": {
      "id": "Expiration",
      "type": "object",
      "properties": {
        "expireTime": {
          "description": "Output only. Timestamp of when this resource is considered expired.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "extendable": {
          "description": "Output only. Describes whether the expiration can be extended.",
          "readOnly": true,
          "type": "boolean"
        },
        "extensionCount": {
          "description": "Output only. The number of times expiration was extended.",
          "format": "int32",
          "readOnly": true,
          "type": "integer"
        }
      },
      "description": "Expiration holds information about the expiration of a MigratingVm."
    },
    "ListDiskMigrationJobsResponse": {
      "description": "Response message for 'ListDiskMigrationJobs' request.",
      "properties": {
        "unreachable": {
          "description": "Output only. Locations that could not be reached.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "nextPageToken": {
          "description": "Optional. Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "readOnly": true,
          "type": "string"
        },
        "diskMigrationJobs": {
          "description": "Output only. The list of the disk migration jobs.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "DiskMigrationJob"
          }
        }
      },
      "type": "object",
      "id": "ListDiskMigrationJobsResponse"
    },
    "ListUtilizationReportsResponse": {
      "description": "Response message for 'ListUtilizationReports' request.",
      "properties": {
        "unreachable": {
          "description": "Output only. Locations that could not be reached.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "utilizationReports": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "UtilizationReport"
          },
          "description": "Output only. The list of reports."
        },
        "nextPageToken": {
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object",
      "id": "ListUtilizationReportsResponse"
    },
    "InstantiatingMigratedVMStep": {
      "properties": {},
      "description": "InstantiatingMigratedVMStep contains specific step details.",
      "id": "InstantiatingMigratedVMStep",
      "type": "object"
    },
    "ComputeScheduling": {
      "description": "Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. Options for instance behavior when the host machine undergoes maintenance that may temporarily impact instance performance.",
      "properties": {
        "onHostMaintenance": {
          "type": "string",
          "description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.",
          "enumDescriptions": [
            "An unknown, unexpected behavior.",
            "Terminate the instance when the host machine undergoes maintenance.",
            "Migrate the instance when the host machine undergoes maintenance."
          ],
          "enum": [
            "ON_HOST_MAINTENANCE_UNSPECIFIED",
            "TERMINATE",
            "MIGRATE"
          ]
        },
        "restartType": {
          "description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.",
          "enumDescriptions": [
            "Unspecified behavior. This will use the default.",
            "The Instance should be automatically restarted whenever it is terminated by Compute Engine.",
            "The Instance isn't automatically restarted whenever it is terminated by Compute Engine."
          ],
          "enum": [
            "RESTART_TYPE_UNSPECIFIED",
            "AUTOMATIC_RESTART",
            "NO_AUTOMATIC_RESTART"
          ],
          "type": "string"
        },
        "minNodeCpus": {
          "format": "int32",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.",
          "type": "integer"
        },
        "nodeAffinities": {
          "description": "A set of node affinity and anti-affinity configurations for sole tenant nodes.",
          "type": "array",
          "items": {
            "$ref": "SchedulingNodeAffinity"
          }
        },
        "automaticRestart": {
          "type": "boolean",
          "deprecated": true
        }
      },
      "type": "object",
      "id": "ComputeScheduling"
    },
    "CancelOperationRequest": {
      "description": "The request message for Operations.CancelOperation.",
      "properties": {},
      "type": "object",
      "id": "CancelOperationRequest"
    },
    "LocalizedMessage": {
      "id": "LocalizedMessage",
      "type": "object",
      "properties": {
        "locale": {
          "description": "The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\"",
          "type": "string"
        },
        "message": {
          "description": "The localized error message in the above locale.",
          "type": "string"
        }
      },
      "description": "Provides a localized error message that is safe to return to the user which can be attached to an RPC error."
    },
    "ListImageImportJobsResponse": {
      "properties": {
        "imageImportJobs": {
          "description": "Output only. The list of target response.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "ImageImportJob"
          }
        },
        "unreachable": {
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Locations that could not be reached."
        },
        "nextPageToken": {
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "Response message for 'ListImageImportJobs' call.",
      "id": "ListImageImportJobsResponse",
      "type": "object"
    },
    "OSDescription": {
      "id": "OSDescription",
      "type": "object",
      "properties": {
        "type": {
          "description": "OS type.",
          "type": "string"
        },
        "offer": {
          "description": "OS offer.",
          "type": "string"
        },
        "publisher": {
          "description": "OS publisher.",
          "type": "string"
        },
        "plan": {
          "description": "OS plan.",
          "type": "string"
        }
      },
      "description": "A message describing the VM's OS. Including OS, Publisher, Offer and Plan if applicable."
    },
    "ResumeMigrationRequest": {
      "id": "ResumeMigrationRequest",
      "type": "object",
      "properties": {},
      "description": "Request message for 'ResumeMigration' request."
    },
    "VmwareSourceDetails": {
      "description": "VmwareSourceDetails message describes a specific source details for the vmware source type.",
      "properties": {
        "password": {
          "description": "Input only. The credentials password. This is write only and can not be read in a GET operation.",
          "type": "string"
        },
        "vcenterIp": {
          "description": "The ip address of the vcenter this Source represents.",
          "type": "string"
        },
        "thumbprint": {
          "description": "The thumbprint representing the certificate for the vcenter.",
          "type": "string"
        },
        "username": {
          "description": "The credentials username.",
          "type": "string"
        },
        "resolvedVcenterHost": {
          "description": "The hostname of the vcenter.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "VmwareSourceDetails"
    },
    "ListMigratingVmsResponse": {
      "description": "Response message for 'ListMigratingVms' request.",
      "properties": {
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "migratingVms": {
          "description": "Output only. The list of Migrating VMs response.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "MigratingVm"
          }
        },
        "unreachable": {
          "description": "Output only. Locations that could not be reached.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "id": "ListMigratingVmsResponse"
    },
    "Tag": {
      "description": "Tag is an AWS tag representation.",
      "properties": {
        "key": {
          "description": "Required. Key of tag.",
          "type": "string"
        },
        "value": {
          "description": "Required. Value of tag.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Tag"
    },
    "AzureVmsDetails": {
      "type": "object",
      "id": "AzureVmsDetails",
      "description": "AzureVmsDetails describes VMs in Azure.",
      "properties": {
        "details": {
          "description": "The details of the Azure VMs.",
          "type": "array",
          "items": {
            "$ref": "AzureVmDetails"
          }
        }
      }
    },
    "Location": {
      "id": "Location",
      "type": "object",
      "properties": {
        "name": {
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
          "type": "string"
        },
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        },
        "metadata": {
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "type": "object",
          "description": "Service-specific metadata. For example the available capacity at the given location."
        },
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        },
        "labels": {
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "description": "A resource that represents a Google Cloud location."
    },
    "PreparingVMDisksStep": {
      "description": "PreparingVMDisksStep contains specific step details.",
      "properties": {},
      "type": "object",
      "id": "PreparingVMDisksStep"
    },
    "VmUtilizationInfo": {
      "id": "VmUtilizationInfo",
      "type": "object",
      "properties": {
        "utilization": {
          "description": "Utilization metrics for this VM.",
          "$ref": "VmUtilizationMetrics"
        },
        "vmId": {
          "description": "The VM's ID in the source.",
          "type": "string"
        },
        "vmwareVmDetails": {
          "description": "The description of the VM in a Source of type Vmware.",
          "$ref": "VmwareVmDetails"
        }
      },
      "description": "Utilization information of a single VM."
    },
    "ListLocationsResponse": {
      "type": "object",
      "id": "ListLocationsResponse",
      "description": "The response message for Locations.ListLocations.",
      "properties": {
        "locations": {
          "description": "A list of locations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Location"
          }
        },
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        }
      }
    },
    "DiskImageDefaults": {
      "type": "object",
      "id": "DiskImageDefaults",
      "description": "Contains details about the image source used to create the disk.",
      "properties": {
        "sourceImage": {
          "description": "Required. The Image resource used when creating the disk.",
          "type": "string"
        }
      }
    },
    "ImageImportStep": {
      "properties": {
        "loadingSourceFiles": {
          "description": "Loading source files step.",
          "$ref": "LoadingImageSourceFilesStep"
        },
        "initializing": {
          "description": "Initializing step.",
          "$ref": "InitializingImageImportStep"
        },
        "adaptingOs": {
          "description": "Adapting OS step.",
          "$ref": "AdaptingOSStep"
        },
        "startTime": {
          "description": "Output only. The time the step has started.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "endTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the step has ended.",
          "format": "google-datetime"
        },
        "creatingImage": {
          "description": "Creating image step.",
          "$ref": "CreatingImageStep"
        }
      },
      "description": "ImageImportStep holds information about the image import step progress.",
      "id": "ImageImportStep",
      "type": "object"
    },
    "VmwareVmDetails": {
      "description": "VmwareVmDetails describes a VM in vCenter.",
      "properties": {
        "guestDescription": {
          "description": "The VM's OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold.",
          "type": "string"
        },
        "committedStorageMb": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB.",
          "format": "int64"
        },
        "uuid": {
          "description": "The unique identifier of the VM in vCenter.",
          "type": "string"
        },
        "diskCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of disks the VM has."
        },
        "datacenterDescription": {
          "description": "The descriptive name of the vCenter's datacenter this VM is contained in.",
          "type": "string"
        },
        "architecture": {
          "description": "Output only. The CPU architecture.",
          "enumDescriptions": [
            "The architecture is unknown.",
            "The architecture is one of the x86 architectures.",
            "The architecture is ARM64."
          ],
          "type": "string",
          "enum": [
            "VM_ARCHITECTURE_UNSPECIFIED",
            "VM_ARCHITECTURE_X86_FAMILY",
            "VM_ARCHITECTURE_ARM64"
          ],
          "readOnly": true
        },
        "datacenterId": {
          "description": "The id of the vCenter's datacenter this VM is contained in.",
          "type": "string"
        },
        "powerState": {
          "type": "string",
          "description": "The power state of the VM at the moment list was taken.",
          "enumDescriptions": [
            "Power state is not specified.",
            "The VM is turned ON.",
            "The VM is turned OFF.",
            "The VM is suspended. This is similar to hibernation or sleep mode."
          ],
          "enum": [
            "POWER_STATE_UNSPECIFIED",
            "ON",
            "OFF",
            "SUSPENDED"
          ]
        },
        "committedStorage": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB.",
          "deprecated": true,
          "format": "int64"
        },
        "vmId": {
          "description": "The VM's id in the source (note that this is not the MigratingVm's id). This is the moref id of the VM.",
          "type": "string"
        },
        "cpuCount": {
          "type": "integer",
          "description": "The number of cpus in the VM.",
          "format": "int32"
        },
        "bootOption": {
          "description": "Output only. The VM Boot Option.",
          "enumDescriptions": [
            "The boot option is unknown.",
            "The boot option is EFI.",
            "The boot option is BIOS."
          ],
          "type": "string",
          "enum": [
            "BOOT_OPTION_UNSPECIFIED",
            "EFI",
            "BIOS"
          ],
          "readOnly": true
        },
        "displayName": {
          "description": "The display name of the VM. Note that this is not necessarily unique.",
          "type": "string"
        },
        "memoryMb": {
          "type": "integer",
          "description": "The size of the memory of the VM in MB.",
          "format": "int32"
        }
      },
      "type": "object",
      "id": "VmwareVmDetails"
    },
    "CloneStep": {
      "description": "CloneStep holds information about the clone step progress.",
      "properties": {
        "endTime": {
          "description": "The time the step has ended.",
          "format": "google-datetime",
          "type": "string"
        },
        "startTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The time the step has started."
        },
        "adaptingOs": {
          "description": "Adapting OS step.",
          "$ref": "AdaptingOSStep"
        },
        "preparingVmDisks": {
          "description": "Preparing VM disks step.",
          "$ref": "PreparingVMDisksStep"
        },
        "instantiatingMigratedVm": {
          "description": "Instantiating migrated VM step.",
          "$ref": "InstantiatingMigratedVMStep"
        }
      },
      "type": "object",
      "id": "CloneStep"
    },
    "ReplicationSync": {
      "properties": {
        "lastSyncTime": {
          "type": "string",
          "description": "The most updated snapshot created time in the source that finished replication.",
          "format": "google-datetime"
        }
      },
      "description": "ReplicationSync contain information about the last replica sync to the cloud.",
      "id": "ReplicationSync",
      "type": "object"
    },
    "ReplicatingStep": {
      "id": "ReplicatingStep",
      "type": "object",
      "properties": {
        "lastThirtyMinutesAverageBytesPerSecond": {
          "type": "string",
          "description": "The source disks replication rate for the last 30 minutes in bytes per second.",
          "format": "int64"
        },
        "replicatedBytes": {
          "format": "int64",
          "description": "Replicated bytes in the step.",
          "type": "string"
        },
        "totalBytes": {
          "format": "int64",
          "description": "Total bytes to be handled in the step.",
          "type": "string"
        },
        "lastTwoMinutesAverageBytesPerSecond": {
          "description": "The source disks replication rate for the last 2 minutes in bytes per second.",
          "format": "int64",
          "type": "string"
        }
      },
      "description": "ReplicatingStep contains specific step details."
    },
    "CancelCutoverJobRequest": {
      "properties": {},
      "description": "Request message for 'CancelCutoverJob' request.",
      "id": "CancelCutoverJobRequest",
      "type": "object"
    },
    "ComputeEngineDisksTargetDefaults": {
      "properties": {
        "disks": {
          "type": "array",
          "items": {
            "$ref": "PersistentDiskDefaults"
          },
          "description": "The details of each Persistent Disk to create."
        },
        "targetProject": {
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create the Persistent Disks.",
          "type": "string"
        },
        "disksTargetDefaults": {
          "description": "Details of the disk only migration target.",
          "$ref": "DisksMigrationDisksTargetDefaults"
        },
        "vmTargetDefaults": {
          "description": "Details of the VM migration target.",
          "$ref": "DisksMigrationVmTargetDefaults"
        },
        "zone": {
          "description": "The zone in which to create the Persistent Disks.",
          "type": "string"
        }
      },
      "description": "ComputeEngineDisksTargetDefaults is a collection of details for creating Persistent Disks in a target Compute Engine project.",
      "id": "ComputeEngineDisksTargetDefaults",
      "type": "object"
    },
    "AdaptingOSStep": {
      "properties": {},
      "description": "AdaptingOSStep contains specific step details.",
      "id": "AdaptingOSStep",
      "type": "object"
    },
    "UpgradeStatus": {
      "type": "object",
      "id": "UpgradeStatus",
      "description": "UpgradeStatus contains information about upgradeAppliance operation.",
      "properties": {
        "error": {
          "description": "Output only. Provides details on the state of the upgrade operation in case of an error.",
          "$ref": "Status",
          "readOnly": true
        },
        "startTime": {
          "format": "google-datetime",
          "description": "The time the operation was started.",
          "type": "string"
        },
        "version": {
          "description": "The version to upgrade to.",
          "type": "string"
        },
        "state": {
          "description": "The state of the upgradeAppliance operation.",
          "enumDescriptions": [
            "The state was not sampled by the health checks yet.",
            "The upgrade has started.",
            "The upgrade failed.",
            "The upgrade finished successfully."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "RUNNING",
            "FAILED",
            "SUCCEEDED"
          ],
          "type": "string"
        },
        "previousVersion": {
          "description": "The version from which we upgraded.",
          "type": "string"
        }
      }
    },
    "PersistentDisk": {
      "description": "Details of a created Persistent Disk.",
      "properties": {
        "sourceDiskNumber": {
          "readOnly": true,
          "type": "integer",
          "format": "int32",
          "description": "Output only. The ordinal number of the source VM disk."
        },
        "diskUri": {
          "description": "Output only. The URI of the Persistent Disk.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object",
      "id": "PersistentDisk"
    },
    "VmwareVmsDetails": {
      "properties": {
        "details": {
          "type": "array",
          "items": {
            "$ref": "VmwareVmDetails"
          },
          "description": "The details of the vmware VMs."
        }
      },
      "description": "VmwareVmsDetails describes VMs in vCenter.",
      "id": "VmwareVmsDetails",
      "type": "object"
    },
    "AzureSourceDetails": {
      "description": "AzureSourceDetails message describes a specific source details for the Azure source type.",
      "properties": {
        "error": {
          "readOnly": true,
          "description": "Output only. Provides details on the state of the Source in case of an error.",
          "$ref": "Status"
        },
        "azureLocation": {
          "description": "Immutable. The Azure location (region) that the source VMs will be migrated from.",
          "type": "string"
        },
        "subscriptionId": {
          "description": "Immutable. Azure subscription ID.",
          "type": "string"
        },
        "state": {
          "type": "string",
          "description": "Output only. State of the source as determined by the health check.",
          "enumDescriptions": [
            "The state is unknown. This is used for API compatibility only and is not used by the system.",
            "The state was not sampled by the health checks yet.",
            "The source is available but might not be usable yet due to invalid credentials or another reason. The error message will contain further details.",
            "The source exists and its credentials were verified."
          ],
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "FAILED",
            "ACTIVE"
          ]
        },
        "migrationResourcesUserTags": {
          "description": "User specified tags to add to every M2VM generated resource in Azure. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m4ce` or `m2vm`.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "clientSecretCreds": {
          "description": "Azure Credentials using tenant ID, client ID and secret.",
          "$ref": "ClientSecretCredentials"
        },
        "resourceGroupId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The ID of the Azure resource group that contains all resources related to the migration process of this source."
        }
      },
      "type": "object",
      "id": "AzureSourceDetails"
    },
    "ComputeEngineDisksTargetDetails": {
      "description": "ComputeEngineDisksTargetDetails is a collection of created Persistent Disks details.",
      "properties": {
        "disksTargetDetails": {
          "description": "Details of the disks-only migration target.",
          "$ref": "DisksMigrationDisksTargetDetails"
        },
        "vmTargetDetails": {
          "description": "Details for the VM the migrated data disks are attached to.",
          "$ref": "DisksMigrationVmTargetDetails"
        },
        "disks": {
          "description": "The details of each created Persistent Disk.",
          "type": "array",
          "items": {
            "$ref": "PersistentDisk"
          }
        }
      },
      "type": "object",
      "id": "ComputeEngineDisksTargetDetails"
    },
    "ListReplicationCyclesResponse": {
      "type": "object",
      "id": "ListReplicationCyclesResponse",
      "description": "Response message for 'ListReplicationCycles' request.",
      "properties": {
        "replicationCycles": {
          "description": "Output only. The list of replication cycles response.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "ReplicationCycle"
          }
        },
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "unreachable": {
          "description": "Output only. Locations that could not be reached.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ListSourcesResponse": {
      "type": "object",
      "id": "ListSourcesResponse",
      "description": "Response message for 'ListSources' request.",
      "properties": {
        "nextPageToken": {
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "readOnly": true,
          "type": "string"
        },
        "sources": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Source"
          },
          "description": "Output only. The list of sources response."
        },
        "unreachable": {
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Locations that could not be reached."
        }
      }
    },
    "DiskMigrationStep": {
      "type": "object",
      "id": "DiskMigrationStep",
      "description": "DiskMigrationStep holds information about the disk migration step progress.",
      "properties": {
        "startTime": {
          "description": "Output only. The time the step has started.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "creatingSourceDiskSnapshot": {
          "description": "Creating source disk snapshot step.",
          "$ref": "CreatingSourceDiskSnapshotStep"
        },
        "endTime": {
          "format": "google-datetime",
          "description": "Output only. The time the step has ended.",
          "readOnly": true,
          "type": "string"
        },
        "copyingSourceDiskSnapshot": {
          "description": "Copying source disk snapshot step.",
          "$ref": "CopyingSourceDiskSnapshotStep"
        },
        "provisioningTargetDisk": {
          "description": "Creating target disk step.",
          "$ref": "ProvisioningTargetDiskStep"
        }
      }
    },
    "MigrationError": {
      "type": "object",
      "id": "MigrationError",
      "description": "Represents migration resource error information that can be used with google.rpc.Status message. MigrationError is used to present the user with error information in migration operations.",
      "properties": {
        "errorMessage": {
          "description": "Output only. The localized error message.",
          "$ref": "LocalizedMessage",
          "readOnly": true
        },
        "code": {
          "readOnly": true,
          "enum": [
            "ERROR_CODE_UNSPECIFIED",
            "UNKNOWN_ERROR",
            "SOURCE_VALIDATION_ERROR",
            "SOURCE_REPLICATION_ERROR",
            "TARGET_REPLICATION_ERROR",
            "OS_ADAPTATION_ERROR",
            "CLONE_ERROR",
            "CUTOVER_ERROR",
            "UTILIZATION_REPORT_ERROR",
            "APPLIANCE_UPGRADE_ERROR",
            "IMAGE_IMPORT_ERROR",
            "DISK_MIGRATION_ERROR"
          ],
          "type": "string",
          "description": "Output only. The error code.",
          "enumDescriptions": [
            "Default value. This value is not used.",
            "Migrate to Virtual Machines encountered an unknown error.",
            "Migrate to Virtual Machines encountered an error while validating replication source health.",
            "Migrate to Virtual Machines encountered an error during source data operation.",
            "Migrate to Virtual Machines encountered an error during target data operation.",
            "Migrate to Virtual Machines encountered an error during OS adaptation.",
            "Migrate to Virtual Machines encountered an error in clone operation.",
            "Migrate to Virtual Machines encountered an error in cutover operation.",
            "Migrate to Virtual Machines encountered an error during utilization report creation.",
            "Migrate to Virtual Machines encountered an error during appliance upgrade.",
            "Migrate to Virtual Machines encountered an error in image import operation.",
            "Migrate to Virtual Machines encountered an error in disk migration operation."
          ]
        },
        "actionItem": {
          "description": "Output only. Suggested action for solving the error.",
          "$ref": "LocalizedMessage",
          "readOnly": true
        },
        "helpLinks": {
          "description": "Output only. URL(s) pointing to additional information on handling the current error.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Link"
          }
        },
        "errorTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the error occurred.",
          "format": "google-datetime"
        }
      }
    },
    "CloneJob": {
      "properties": {
        "computeEngineDisksTargetDetails": {
          "readOnly": true,
          "description": "Output only. Details of the target Persistent Disks in Compute Engine.",
          "$ref": "ComputeEngineDisksTargetDetails"
        },
        "targetDetails": {
          "deprecated": true,
          "description": "Output only. Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead.",
          "$ref": "TargetVMDetails",
          "readOnly": true
        },
        "steps": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "CloneStep"
          },
          "description": "Output only. The clone steps list representing its progress."
        },
        "error": {
          "description": "Output only. Provides details for the errors that led to the Clone Job's state.",
          "$ref": "Status",
          "readOnly": true
        },
        "computeEngineVmDetails": {
          "deprecated": true,
          "description": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
          "$ref": "TargetVMDetails",
          "readOnly": true
        },
        "endTime": {
          "format": "google-datetime",
          "description": "Output only. The time the clone job was ended.",
          "readOnly": true,
          "type": "string"
        },
        "stateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time the state was last updated."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time the clone job was created (as an API call, not when it was actually created in the target)."
        },
        "computeEngineTargetDetails": {
          "description": "Output only. Details of the target VM in Compute Engine.",
          "$ref": "ComputeEngineTargetDetails",
          "readOnly": true
        },
        "state": {
          "type": "string",
          "description": "Output only. State of the clone job.",
          "enumDescriptions": [
            "The state is unknown. This is used for API compatibility only and is not used by the system.",
            "The clone job has not yet started.",
            "The clone job is active and running.",
            "The clone job finished with errors.",
            "The clone job finished successfully.",
            "The clone job was cancelled.",
            "The clone job is being cancelled.",
            "OS adaptation is running as part of the clone job to generate license."
          ],
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "ACTIVE",
            "FAILED",
            "SUCCEEDED",
            "CANCELLED",
            "CANCELLING",
            "ADAPTING_OS"
          ]
        },
        "name": {
          "description": "Output only. The name of the clone.",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.",
      "id": "CloneJob",
      "type": "object"
    },
    "CutoverStep": {
      "id": "CutoverStep",
      "type": "object",
      "properties": {
        "preparingVmDisks": {
          "description": "Preparing VM disks step.",
          "$ref": "PreparingVMDisksStep"
        },
        "instantiatingMigratedVm": {
          "description": "Instantiating migrated VM step.",
          "$ref": "InstantiatingMigratedVMStep"
        },
        "previousReplicationCycle": {
          "description": "A replication cycle prior cutover step.",
          "$ref": "ReplicationCycle"
        },
        "endTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The time the step has ended."
        },
        "shuttingDownSourceVm": {
          "description": "Shutting down VM step.",
          "$ref": "ShuttingDownSourceVMStep"
        },
        "finalSync": {
          "description": "Final sync step.",
          "$ref": "ReplicationCycle"
        },
        "startTime": {
          "description": "The time the step has started.",
          "format": "google-datetime",
          "type": "string"
        }
      },
      "description": "CutoverStep holds information about the cutover step progress."
    },
    "CancelCloneJobRequest": {
      "type": "object",
      "id": "CancelCloneJobRequest",
      "description": "Request message for 'CancelCloneJob' request.",
      "properties": {}
    },
    "ImageImport": {
      "description": "ImageImport describes the configuration of the image import to run.",
      "properties": {
        "diskImageTargetDefaults": {
          "description": "Immutable. Target details for importing a disk image, will be used by ImageImportJob.",
          "$ref": "DiskImageTargetDetails"
        },
        "createTime": {
          "description": "Output only. The time the image import was created.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "recentImageImportJobs": {
          "description": "Output only. The result of the most recent runs for this ImageImport. All jobs for this ImageImport can be listed via ListImageImportJobs.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "ImageImportJob"
          }
        },
        "encryption": {
          "description": "Immutable. The encryption details used by the image import process during the image adaptation for Compute Engine.",
          "$ref": "Encryption"
        },
        "machineImageTargetDefaults": {
          "description": "Immutable. Target details for importing a machine image, will be used by ImageImportJob.",
          "$ref": "MachineImageTargetDetails"
        },
        "name": {
          "description": "Output only. The resource path of the ImageImport.",
          "readOnly": true,
          "type": "string"
        },
        "cloudStorageUri": {
          "description": "Immutable. The path to the Cloud Storage file from which the image should be imported.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "ImageImport"
    },
    "UtilizationReport": {
      "properties": {
        "error": {
          "description": "Output only. Provides details on the state of the report in case of an error.",
          "$ref": "Status",
          "readOnly": true
        },
        "displayName": {
          "description": "The report display name, as assigned by the user.",
          "type": "string"
        },
        "stateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time the state was last set."
        },
        "vmCount": {
          "readOnly": true,
          "type": "integer",
          "description": "Output only. Total number of VMs included in the report.",
          "format": "int32"
        },
        "timeFrame": {
          "description": "Time frame of the report.",
          "enumDescriptions": [
            "The time frame was not specified and will default to WEEK.",
            "One week.",
            "One month.",
            "One year."
          ],
          "enum": [
            "TIME_FRAME_UNSPECIFIED",
            "WEEK",
            "MONTH",
            "YEAR"
          ],
          "type": "string"
        },
        "state": {
          "type": "string",
          "description": "Output only. Current state of the report.",
          "enumDescriptions": [
            "The state is unknown. This value is not in use.",
            "The report is in the making.",
            "Report creation completed successfully.",
            "Report creation failed."
          ],
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "SUCCEEDED",
            "FAILED"
          ]
        },
        "name": {
          "description": "Output only. The report unique name.",
          "readOnly": true,
          "type": "string"
        },
        "frameEndTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the \"frame_end_time\" value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14.",
          "format": "google-datetime"
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the report was created (this refers to the time of the request, not the time the report creation completed).",
          "format": "google-datetime"
        },
        "vms": {
          "type": "array",
          "items": {
            "$ref": "VmUtilizationInfo"
          },
          "description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored."
        },
        "vmsCount": {
          "type": "integer",
          "description": "Output only. Total number of VMs included in the report.",
          "deprecated": true,
          "format": "int32",
          "readOnly": true
        }
      },
      "description": "Utilization report details the utilization (CPU, memory, etc.) of selected source VMs.",
      "id": "UtilizationReport",
      "type": "object"
    },
    "AwsSourceDiskDetails": {
      "type": "object",
      "id": "AwsSourceDiskDetails",
      "description": "Represents the source AWS Disk details.",
      "properties": {
        "tags": {
          "description": "Optional. Output only. A map of AWS volume tags.",
          "readOnly": true,
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "volumeId": {
          "description": "Required. AWS volume ID.",
          "type": "string"
        },
        "sizeGib": {
          "readOnly": true,
          "type": "string",
          "format": "int64",
          "description": "Output only. Size in GiB."
        },
        "diskType": {
          "description": "Optional. Output only. Disk type.",
          "enumDescriptions": [
            "Unspecified AWS disk type. Should not be used.",
            "GP2 disk type.",
            "GP3 disk type.",
            "IO1 disk type.",
            "IO2 disk type.",
            "ST1 disk type.",
            "SC1 disk type.",
            "Standard disk type."
          ],
          "type": "string",
          "enum": [
            "TYPE_UNSPECIFIED",
            "GP2",
            "GP3",
            "IO1",
            "IO2",
            "ST1",
            "SC1",
            "STANDARD"
          ],
          "readOnly": true
        }
      }
    },
    "CancelImageImportJobRequest": {
      "type": "object",
      "id": "CancelImageImportJobRequest",
      "description": "Request message for 'CancelImageImportJob' request.",
      "properties": {}
    },
    "PostProcessingStep": {
      "id": "PostProcessingStep",
      "type": "object",
      "properties": {},
      "description": "PostProcessingStep contains specific step details."
    },
    "AzureVmDetails": {
      "type": "object",
      "id": "AzureVmDetails",
      "description": "AzureVmDetails describes a VM in Azure.",
      "properties": {
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The tags of the VM."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The memory size of the VM in MB.",
          "format": "int32"
        },
        "bootOption": {
          "description": "The VM Boot Option.",
          "enumDescriptions": [
            "The boot option is unknown.",
            "The boot option is UEFI.",
            "The boot option is BIOS."
          ],
          "enum": [
            "BOOT_OPTION_UNSPECIFIED",
            "EFI",
            "BIOS"
          ],
          "type": "string"
        },
        "vmId": {
          "description": "The VM full path in Azure.",
          "type": "string"
        },
        "cpuCount": {
          "type": "integer",
          "description": "The number of cpus the VM has.",
          "format": "int32"
        },
        "osDisk": {
          "description": "Description of the OS disk.",
          "$ref": "OSDisk"
        },
        "osDescription": {
          "description": "Description of the OS.",
          "$ref": "OSDescription"
        },
        "architecture": {
          "type": "string",
          "description": "The CPU architecture.",
          "enumDescriptions": [
            "The architecture is unknown.",
            "The architecture is one of the x86 architectures.",
            "The architecture is ARM64."
          ],
          "enum": [
            "VM_ARCHITECTURE_UNSPECIFIED",
            "VM_ARCHITECTURE_X86_FAMILY",
            "VM_ARCHITECTURE_ARM64"
          ]
        },
        "diskCount": {
          "type": "integer",
          "description": "The number of disks the VM has, including OS disk.",
          "format": "int32"
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "Disk"
          },
          "description": "Description of the data disks."
        },
        "vmSize": {
          "description": "VM size as configured in Azure. Determines the VM's hardware spec.",
          "type": "string"
        },
        "committedStorageMb": {
          "description": "The total size of the storage allocated to the VM in MB.",
          "format": "int64",
          "type": "string"
        },
        "computerName": {
          "description": "The VM's ComputerName.",
          "type": "string"
        },
        "powerState": {
          "description": "The power state of the VM at the moment list was taken.",
          "enumDescriptions": [
            "Power state is not specified.",
            "The VM is starting.",
            "The VM is running.",
            "The VM is stopping.",
            "The VM is stopped.",
            "The VM is deallocating.",
            "The VM is deallocated.",
            "The VM's power state is unknown."
          ],
          "enum": [
            "POWER_STATE_UNSPECIFIED",
            "STARTING",
            "RUNNING",
            "STOPPING",
            "STOPPED",
            "DEALLOCATING",
            "DEALLOCATED",
            "UNKNOWN"
          ],
          "type": "string"
        }
      }
    },
    "AzureDiskDetails": {
      "type": "object",
      "id": "AzureDiskDetails",
      "description": "The details of an Azure VM disk.",
      "properties": {
        "diskNumber": {
          "readOnly": true,
          "type": "integer",
          "description": "Output only. The ordinal number of the disk.",
          "format": "int32"
        },
        "diskId": {
          "description": "Output only. Azure disk ID.",
          "readOnly": true,
          "type": "string"
        },
        "sizeGb": {
          "description": "Output only. Size in GB.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "VmwareSourceVmDetails": {
      "description": "Represent the source Vmware VM details.",
      "properties": {
        "firmware": {
          "enum": [
            "FIRMWARE_UNSPECIFIED",
            "EFI",
            "BIOS"
          ],
          "readOnly": true,
          "description": "Output only. The firmware type of the source VM.",
          "enumDescriptions": [
            "The firmware is unknown.",
            "The firmware is EFI.",
            "The firmware is BIOS."
          ],
          "type": "string"
        },
        "committedStorageBytes": {
          "description": "Output only. The total size of the disks being migrated in bytes.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        },
        "architecture": {
          "readOnly": true,
          "enum": [
            "VM_ARCHITECTURE_UNSPECIFIED",
            "VM_ARCHITECTURE_X86_FAMILY",
            "VM_ARCHITECTURE_ARM64"
          ],
          "type": "string",
          "description": "Output only. The VM architecture.",
          "enumDescriptions": [
            "The architecture is unknown.",
            "The architecture is one of the x86 architectures.",
            "The architecture is ARM64."
          ]
        },
        "disks": {
          "description": "Output only. The disks attached to the source VM.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "VmwareDiskDetails"
          }
        },
        "vmCapabilitiesInfo": {
          "description": "Output only. Information about VM capabilities needed for some Compute Engine features.",
          "$ref": "VmCapabilities",
          "readOnly": true
        }
      },
      "type": "object",
      "id": "VmwareSourceVmDetails"
    },
    "SchedulingNodeAffinity": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        },
        "operator": {
          "type": "string",
          "description": "The operator to use for the node resources specified in the `values` parameter.",
          "enumDescriptions": [
            "An unknown, unexpected behavior.",
            "The node resource group should be in these resources affinity.",
            "The node resource group should not be in these resources affinity."
          ],
          "enum": [
            "OPERATOR_UNSPECIFIED",
            "IN",
            "NOT_IN"
          ]
        },
        "key": {
          "description": "The label key of Node resource to reference.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "SchedulingNodeAffinity"
    },
    "ComputeEngineTargetDefaults": {
      "type": "object",
      "id": "ComputeEngineTargetDefaults",
      "description": "ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "storagePool": {
          "description": "Optional. If specified this will be the storage pool in which the disk is created. This is the full path of the storage pool resource, for example: \"projects/my-project/zones/us-central1-a/storagePools/my-storage-pool\". The storage pool must be in the same project and zone as the target disks. The storage pool's type must match the disk type.",
          "type": "string"
        },
        "computeScheduling": {
          "description": "Compute instance scheduling information (if empty default is used).",
          "$ref": "ComputeScheduling"
        },
        "serviceAccount": {
          "description": "Optional. The service account to associate the VM with.",
          "type": "string"
        },
        "bootConversion": {
          "description": "Optional. By default the virtual machine will keep its existing boot option. Setting this property will trigger an internal process which will convert the virtual machine from using the existing boot option to another.",
          "enumDescriptions": [
            "Unspecified conversion type.",
            "No conversion.",
            "Convert from BIOS to EFI."
          ],
          "enum": [
            "BOOT_CONVERSION_UNSPECIFIED",
            "NONE",
            "BIOS_TO_EFI"
          ],
          "type": "string"
        },
        "zone": {
          "description": "The zone in which to create the VM.",
          "type": "string"
        },
        "labels": {
          "description": "A map of labels to associate with the VM.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "appliedLicense": {
          "readOnly": true,
          "description": "Output only. The OS license returned from the adaptation module report.",
          "$ref": "AppliedLicense"
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM.",
          "enumDescriptions": [
            "An unspecified disk type. Will be used as STANDARD.",
            "A Standard disk type.",
            "SSD hard disk type.",
            "An alternative to SSD persistent disks that balance performance and cost.",
            "Hyperdisk balanced disk type.",
            "Hyperdisk balanced high availability disk type."
          ],
          "enum": [
            "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
            "COMPUTE_ENGINE_DISK_TYPE_STANDARD",
            "COMPUTE_ENGINE_DISK_TYPE_SSD",
            "COMPUTE_ENGINE_DISK_TYPE_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED",
            "COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED_HIGH_AVAILABILITY"
          ]
        },
        "targetProject": {
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.",
          "type": "string"
        },
        "enableIntegrityMonitoring": {
          "description": "Optional. Defines whether the instance has integrity monitoring enabled. This can be set to true only if the VM boot option is EFI, and vTPM is enabled.",
          "type": "boolean"
        },
        "encryption": {
          "description": "Optional. Immutable. The encryption to apply to the VM disks.",
          "$ref": "Encryption"
        },
        "adaptationModifiers": {
          "type": "array",
          "items": {
            "$ref": "AdaptationModifier"
          },
          "description": "Optional. AdaptationModifiers are the set of modifiers used during OS adaptation."
        },
        "diskReplicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional replica zones of the target regional disks. If this list is not empty a regional disk will be created. The first supported zone would be the one stated in the zone field. The rest are taken from this list. Please refer to the [regional disk creation API](https://cloud.google.com/compute/docs/regions-zones/global-regional-zonal-resources) for further details about regional vs zonal disks. If not specified, a zonal disk will be created in the same zone the VM is created."
        },
        "licenseType": {
          "description": "The license type to use in OS adaptation.",
          "enumDescriptions": [
            "The license type is the default for the OS.",
            "The license type is Pay As You Go license type.",
            "The license type is Bring Your Own License type."
          ],
          "enum": [
            "COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT",
            "COMPUTE_ENGINE_LICENSE_TYPE_PAYG",
            "COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
          ],
          "type": "string"
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "NetworkInterface"
          },
          "description": "List of NICs connected to this VM."
        },
        "secureBoot": {
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI.",
          "type": "boolean"
        },
        "disks": {
          "description": "Optional. The details of each disk to create.",
          "type": "array",
          "items": {
            "$ref": "PersistentDiskDefaults"
          }
        },
        "metadata": {
          "description": "The metadata key/value pairs to assign to the VM.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "vmName": {
          "description": "The name of the VM to create.",
          "type": "string"
        },
        "machineTypeSeries": {
          "description": "The machine type series to create the VM with.",
          "type": "string"
        },
        "machineType": {
          "description": "The machine type to create the VM with.",
          "type": "string"
        },
        "bootOption": {
          "description": "Output only. The VM Boot Option, as set in the source VM.",
          "enumDescriptions": [
            "The boot option is unknown.",
            "The boot option is EFI.",
            "The boot option is BIOS."
          ],
          "type": "string",
          "enum": [
            "COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED",
            "COMPUTE_ENGINE_BOOT_OPTION_EFI",
            "COMPUTE_ENGINE_BOOT_OPTION_BIOS"
          ],
          "readOnly": true
        },
        "hostname": {
          "description": "The hostname to assign to the VM.",
          "type": "string"
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "enableVtpm": {
          "description": "Optional. Defines whether the instance has vTPM enabled. This can be set to true only if the VM boot option is EFI.",
          "type": "boolean"
        }
      }
    },
    "CancelDiskMigrationJobRequest": {
      "id": "CancelDiskMigrationJobRequest",
      "type": "object",
      "properties": {},
      "description": "Request message for 'CancelDiskMigrationJob' request."
    },
    "PauseMigrationRequest": {
      "description": "Request message for 'PauseMigration' request.",
      "properties": {},
      "type": "object",
      "id": "PauseMigrationRequest"
    },
    "ShieldedInstanceConfig": {
      "type": "object",
      "id": "ShieldedInstanceConfig",
      "description": "Shielded instance configuration.",
      "properties": {
        "enableIntegrityMonitoring": {
          "description": "Optional. Defines whether the instance created by the machine image has integrity monitoring enabled. This can be set to true only if the image boot option is EFI, and vTPM is enabled.",
          "type": "boolean"
        },
        "secureBoot": {
          "type": "string",
          "description": "Optional. Defines whether the instance created by the machine image has Secure Boot enabled. This can be set to true only if the image boot option is EFI.",
          "enumDescriptions": [
            "No explicit value is selected. Will use the configuration of the source (if exists, otherwise the default will be false).",
            "Use secure boot. This can be set to true only if the image boot option is EFI.",
            "Do not use secure boot."
          ],
          "enum": [
            "SECURE_BOOT_UNSPECIFIED",
            "TRUE",
            "FALSE"
          ]
        },
        "enableVtpm": {
          "description": "Optional. Defines whether the instance created by the machine image has vTPM enabled. This can be set to true only if the image boot option is EFI.",
          "type": "boolean"
        }
      }
    },
    "ListCloneJobsResponse": {
      "id": "ListCloneJobsResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "cloneJobs": {
          "description": "Output only. The list of clone jobs response.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "CloneJob"
          }
        },
        "unreachable": {
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Locations that could not be reached."
        }
      },
      "description": "Response message for 'ListCloneJobs' request."
    },
    "SchedulePolicy": {
      "id": "SchedulePolicy",
      "type": "object",
      "properties": {
        "skipOsAdaptation": {
          "description": "A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM's operating system undergoes changes and adaptations to fully function on Compute Engine.",
          "type": "boolean"
        },
        "idleDuration": {
          "type": "string",
          "description": "The idle duration between replication stages.",
          "format": "google-duration"
        }
      },
      "description": "A policy for scheduling replications."
    },
    "ImageImportJob": {
      "properties": {
        "diskImageTargetDetails": {
          "description": "Output only. Target details used to import a disk image.",
          "$ref": "DiskImageTargetDetails",
          "readOnly": true
        },
        "createdResources": {
          "description": "Output only. The resource paths of the resources created by the image import job.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "machineImageTargetDetails": {
          "description": "Output only. Target details used to import a machine image.",
          "$ref": "MachineImageTargetDetails",
          "readOnly": true
        },
        "steps": {
          "description": "Output only. The image import steps list representing its progress.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "ImageImportStep"
          }
        },
        "warnings": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "MigrationWarning"
          },
          "description": "Output only. Warnings that occurred during the image import."
        },
        "endTime": {
          "format": "google-datetime",
          "description": "Output only. The time the image import was ended.",
          "readOnly": true,
          "type": "string"
        },
        "cloudStorageUri": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The path to the Cloud Storage file from which the image should be imported."
        },
        "state": {
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "RUNNING",
            "SUCCEEDED",
            "FAILED",
            "CANCELLING",
            "CANCELLED"
          ],
          "readOnly": true,
          "description": "Output only. The state of the image import.",
          "enumDescriptions": [
            "The state is unknown.",
            "The image import has not yet started.",
            "The image import is active and running.",
            "The image import has finished successfully.",
            "The image import has finished with errors.",
            "The image import is being cancelled.",
            "The image import was cancelled."
          ],
          "type": "string"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The resource path of the ImageImportJob."
        },
        "createTime": {
          "description": "Output only. The time the image import was created (as an API call, not when it was actually created in the target).",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "errors": {
          "description": "Output only. Provides details on the error that led to the image import state in case of an error.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "Status"
          }
        }
      },
      "description": "ImageImportJob describes the progress and result of an image import.",
      "id": "ImageImportJob",
      "type": "object"
    },
    "AwsSecurityGroup": {
      "type": "object",
      "id": "AwsSecurityGroup",
      "description": "AwsSecurityGroup describes a security group of an AWS VM.",
      "properties": {
        "id": {
          "description": "The AWS security group id.",
          "type": "string"
        },
        "name": {
          "description": "The AWS security group name.",
          "type": "string"
        }
      }
    },
    "InitializingReplicationStep": {
      "description": "InitializingReplicationStep contains specific step details.",
      "properties": {},
      "type": "object",
      "id": "InitializingReplicationStep"
    },
    "AzureSourceVmDetails": {
      "id": "AzureSourceVmDetails",
      "type": "object",
      "properties": {
        "vmCapabilitiesInfo": {
          "readOnly": true,
          "description": "Output only. Information about VM capabilities needed for some Compute Engine features.",
          "$ref": "VmCapabilities"
        },
        "disks": {
          "description": "Output only. The disks attached to the source VM.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "AzureDiskDetails"
          }
        },
        "committedStorageBytes": {
          "readOnly": true,
          "type": "string",
          "format": "int64",
          "description": "Output only. The total size of the disks being migrated in bytes."
        },
        "architecture": {
          "enum": [
            "VM_ARCHITECTURE_UNSPECIFIED",
            "VM_ARCHITECTURE_X86_FAMILY",
            "VM_ARCHITECTURE_ARM64"
          ],
          "readOnly": true,
          "description": "Output only. The VM architecture.",
          "enumDescriptions": [
            "The architecture is unknown.",
            "The architecture is one of the x86 architectures.",
            "The architecture is ARM64."
          ],
          "type": "string"
        },
        "firmware": {
          "readOnly": true,
          "enum": [
            "FIRMWARE_UNSPECIFIED",
            "EFI",
            "BIOS"
          ],
          "type": "string",
          "description": "Output only. The firmware type of the source VM.",
          "enumDescriptions": [
            "The firmware is unknown.",
            "The firmware is EFI.",
            "The firmware is BIOS."
          ]
        }
      },
      "description": "Represent the source Azure VM details."
    },
    "DisksMigrationVmTargetDefaults": {
      "type": "object",
      "id": "DisksMigrationVmTargetDefaults",
      "description": "Details for creation of a VM that migrated data disks will be attached to.",
      "properties": {
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Optional. A map of labels to associate with the VM."
        },
        "metadata": {
          "description": "Optional. The metadata key/value pairs to assign to the VM.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "serviceAccount": {
          "description": "Optional. The service account to associate the VM with.",
          "type": "string"
        },
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional licenses to assign to the VM."
        },
        "computeScheduling": {
          "description": "Optional. Compute instance scheduling information (if empty default is used).",
          "$ref": "ComputeScheduling"
        },
        "networkInterfaces": {
          "description": "Optional. NICs to attach to the VM.",
          "type": "array",
          "items": {
            "$ref": "NetworkInterface"
          }
        },
        "secureBoot": {
          "description": "Optional. Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI.",
          "type": "boolean"
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of network tags to associate with the VM."
        },
        "enableVtpm": {
          "description": "Optional. Defines whether the instance has vTPM enabled.",
          "type": "boolean"
        },
        "hostname": {
          "description": "Optional. The hostname to assign to the VM.",
          "type": "string"
        },
        "encryption": {
          "description": "Optional. The encryption to apply to the VM.",
          "$ref": "Encryption"
        },
        "enableIntegrityMonitoring": {
          "description": "Optional. Defines whether the instance has integrity monitoring enabled.",
          "type": "boolean"
        },
        "machineType": {
          "description": "Required. The machine type to create the VM with.",
          "type": "string"
        },
        "machineTypeSeries": {
          "description": "Optional. The machine type series to create the VM with. For presentation only.",
          "type": "string"
        },
        "bootDiskDefaults": {
          "description": "Optional. Details of the boot disk of the VM.",
          "$ref": "BootDiskDefaults"
        },
        "vmName": {
          "description": "Required. The name of the VM to create.",
          "type": "string"
        }
      }
    },
    "SkipOsAdaptation": {
      "id": "SkipOsAdaptation",
      "type": "object",
      "properties": {},
      "description": "Mentions that the machine image import is not using OS adaptation process."
    },
    "ListDatacenterConnectorsResponse": {
      "id": "ListDatacenterConnectorsResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "datacenterConnectors": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "DatacenterConnector"
          },
          "description": "Output only. The list of sources response."
        },
        "unreachable": {
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Locations that could not be reached."
        }
      },
      "description": "Response message for 'ListDatacenterConnectors' request."
    },
    "ImageImportOsAdaptationParameters": {
      "id": "ImageImportOsAdaptationParameters",
      "type": "object",
      "properties": {
        "bootConversion": {
          "description": "Optional. By default the image will keep its existing boot option. Setting this property will trigger an internal process which will convert the image from using the existing boot option to another. The size of the boot disk might be increased to allow the conversion",
          "enumDescriptions": [
            "Unspecified conversion type.",
            "No conversion.",
            "Convert from BIOS to EFI."
          ],
          "enum": [
            "BOOT_CONVERSION_UNSPECIFIED",
            "NONE",
            "BIOS_TO_EFI"
          ],
          "type": "string"
        },
        "licenseType": {
          "type": "string",
          "description": "Optional. Choose which type of license to apply to the imported image.",
          "enumDescriptions": [
            "The license type is the default for the OS.",
            "The license type is Pay As You Go license type.",
            "The license type is Bring Your Own License type."
          ],
          "enum": [
            "COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT",
            "COMPUTE_ENGINE_LICENSE_TYPE_PAYG",
            "COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
          ]
        },
        "adaptationModifiers": {
          "description": "Optional. Modifiers to be used as configuration of the OS adaptation process.",
          "type": "array",
          "items": {
            "$ref": "AdaptationModifier"
          }
        },
        "generalize": {
          "description": "Optional. Set to true in order to generalize the imported image. The generalization process enables co-existence of multiple VMs created from the same image. For Windows, generalizing the image removes computer-specific information such as installed drivers and the computer security identifier (SID).",
          "type": "boolean"
        }
      },
      "description": "Parameters affecting the OS adaptation process."
    },
    "CreatingSourceDiskSnapshotStep": {
      "description": "CreatingSourceDiskSnapshotStep contains specific step details.",
      "properties": {},
      "type": "object",
      "id": "CreatingSourceDiskSnapshotStep"
    },
    "Disk": {
      "type": "object",
      "id": "Disk",
      "description": "A message describing a data disk.",
      "properties": {
        "name": {
          "description": "The disk name.",
          "type": "string"
        },
        "sizeGb": {
          "type": "integer",
          "format": "int32",
          "description": "The disk size in GB."
        },
        "lun": {
          "format": "int32",
          "description": "The disk's Logical Unit Number (LUN).",
          "type": "integer"
        }
      }
    },
    "DisksMigrationDisksTargetDetails": {
      "id": "DisksMigrationDisksTargetDetails",
      "type": "object",
      "properties": {},
      "description": "Details for a disks-only migration."
    },
    "Source": {
      "type": "object",
      "id": "Source",
      "description": "Source message describes a specific vm migration Source resource. It contains the source environment information.",
      "properties": {
        "name": {
          "description": "Output only. The Source name.",
          "readOnly": true,
          "type": "string"
        },
        "aws": {
          "description": "AWS type source details.",
          "$ref": "AwsSourceDetails"
        },
        "updateTime": {
          "format": "google-datetime",
          "description": "Output only. The update time timestamp.",
          "readOnly": true,
          "type": "string"
        },
        "vmware": {
          "description": "Vmware type source details.",
          "$ref": "VmwareSourceDetails"
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The create time timestamp."
        },
        "labels": {
          "description": "The labels of the source.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "error": {
          "deprecated": true,
          "description": "Output only. Provides details on the state of the Source in case of an error.",
          "$ref": "Status",
          "readOnly": true
        },
        "azure": {
          "description": "Azure type source details.",
          "$ref": "AzureSourceDetails"
        },
        "encryption": {
          "description": "Optional. Immutable. The encryption details of the source data stored by the service.",
          "$ref": "Encryption"
        },
        "description": {
          "description": "User-provided description of the source.",
          "type": "string"
        }
      }
    },
    "UpgradeApplianceRequest": {
      "type": "object",
      "id": "UpgradeApplianceRequest",
      "description": "Request message for 'UpgradeAppliance' request.",
      "properties": {
        "requestId": {
          "description": "A 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).",
          "type": "string"
        }
      }
    },
    "VmAttachmentDetails": {
      "id": "VmAttachmentDetails",
      "type": "object",
      "properties": {
        "deviceName": {
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
          "type": "string"
        }
      },
      "description": "Details for attachment of the disk to a VM."
    },
    "VmwareDiskDetails": {
      "properties": {
        "label": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The disk label."
        },
        "diskNumber": {
          "description": "Output only. The ordinal number of the disk.",
          "format": "int32",
          "readOnly": true,
          "type": "integer"
        },
        "sizeGb": {
          "description": "Output only. Size in GB.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "The details of a Vmware VM disk.",
      "id": "VmwareDiskDetails",
      "type": "object"
    },
    "LoadingImageSourceFilesStep": {
      "type": "object",
      "id": "LoadingImageSourceFilesStep",
      "description": "LoadingImageSourceFilesStep contains specific step details.",
      "properties": {}
    },
    "Encryption": {
      "type": "object",
      "id": "Encryption",
      "description": "Encryption message describes the details of the applied encryption.",
      "properties": {
        "kmsKey": {
          "description": "Required. The name of the encryption key that is stored in Google Cloud KMS.",
          "type": "string"
        }
      }
    },
    "AwsVmDetails": {
      "description": "AwsVmDetails describes a VM in AWS.",
      "properties": {
        "vcpuCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of vCPUs the VM has. It is calculated as the number of CPU cores * threads per CPU the VM has."
        },
        "diskCount": {
          "type": "integer",
          "description": "The number of disks the VM has.",
          "format": "int32"
        },
        "committedStorageMb": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB.",
          "format": "int64"
        },
        "sourceId": {
          "description": "The id of the AWS's source this VM is connected to.",
          "type": "string"
        },
        "osDescription": {
          "description": "The VM's OS.",
          "type": "string"
        },
        "architecture": {
          "type": "string",
          "description": "The CPU architecture.",
          "enumDescriptions": [
            "The architecture is unknown.",
            "The architecture is I386.",
            "The architecture is X86_64.",
            "The architecture is ARM64.",
            "The architecture is X86_64_MAC."
          ],
          "enum": [
            "VM_ARCHITECTURE_UNSPECIFIED",
            "I386",
            "X86_64",
            "ARM64",
            "X86_64_MAC"
          ]
        },
        "instanceType": {
          "description": "The instance type of the VM.",
          "type": "string"
        },
        "vpcId": {
          "description": "The VPC ID the VM belongs to.",
          "type": "string"
        },
        "sourceDescription": {
          "description": "The descriptive name of the AWS's source this VM is connected to.",
          "type": "string"
        },
        "powerState": {
          "enum": [
            "POWER_STATE_UNSPECIFIED",
            "ON",
            "OFF",
            "SUSPENDED",
            "PENDING"
          ],
          "readOnly": true,
          "description": "Output only. The power state of the VM at the moment list was taken.",
          "enumDescriptions": [
            "Power state is not specified.",
            "The VM is turned on.",
            "The VM is turned off.",
            "The VM is suspended. This is similar to hibernation or sleep mode.",
            "The VM is starting."
          ],
          "type": "string"
        },
        "zone": {
          "description": "The AWS zone of the VM.",
          "type": "string"
        },
        "virtualizationType": {
          "description": "The virtualization type.",
          "enumDescriptions": [
            "The virtualization type is unknown.",
            "The virtualziation type is HVM.",
            "The virtualziation type is PARAVIRTUAL."
          ],
          "enum": [
            "VM_VIRTUALIZATION_TYPE_UNSPECIFIED",
            "HVM",
            "PARAVIRTUAL"
          ],
          "type": "string"
        },
        "securityGroups": {
          "description": "The security groups the VM belongs to.",
          "type": "array",
          "items": {
            "$ref": "AwsSecurityGroup"
          }
        },
        "displayName": {
          "description": "The display name of the VM. Note that this value is not necessarily unique.",
          "type": "string"
        },
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option.",
          "enumDescriptions": [
            "The boot option is unknown.",
            "The boot option is UEFI.",
            "The boot option is LEGACY-BIOS."
          ],
          "enum": [
            "BOOT_OPTION_UNSPECIFIED",
            "EFI",
            "BIOS"
          ]
        },
        "vmId": {
          "description": "The VM ID in AWS.",
          "type": "string"
        },
        "cpuCount": {
          "format": "int32",
          "description": "The number of CPU cores the VM has.",
          "type": "integer"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "The tags of the VM."
        },
        "memoryMb": {
          "type": "integer",
          "format": "int32",
          "description": "The memory size of the VM in MB."
        }
      },
      "type": "object",
      "id": "AwsVmDetails"
    },
    "TargetProject": {
      "properties": {
        "description": {
          "description": "The target project's description.",
          "type": "string"
        },
        "createTime": {
          "format": "google-datetime",
          "description": "Output only. The time this target project resource was created (not related to when the Compute Engine project it points to was created).",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Output only. The name of the target project.",
          "readOnly": true,
          "type": "string"
        },
        "project": {
          "description": "Required. The target project ID (number) or project name.",
          "type": "string"
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The last time the target project resource was updated."
        }
      },
      "description": "TargetProject message represents a target Compute Engine project for a migration or a clone.",
      "id": "TargetProject",
      "type": "object"
    },
    "ListOperationsResponse": {
      "properties": {
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "Operation"
          },
          "description": "A list of operations that matches the specified filter in the request."
        },
        "unreachable": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unordered list. Unreachable resources. Populated when the request sets `ListOperationsRequest.return_partial_success` and reads across collections. For example, when attempting to list all resources across all supported locations."
        }
      },
      "description": "The response message for Operations.ListOperations.",
      "id": "ListOperationsResponse",
      "type": "object"
    },
    "AwsVmsDetails": {
      "type": "object",
      "id": "AwsVmsDetails",
      "description": "AWSVmsDetails describes VMs in AWS.",
      "properties": {
        "details": {
          "type": "array",
          "items": {
            "$ref": "AwsVmDetails"
          },
          "description": "The details of the AWS VMs."
        }
      }
    },
    "OperationMetadata": {
      "type": "object",
      "id": "OperationMetadata",
      "description": "Represents the metadata of the long-running operation.",
      "properties": {
        "endTime": {
          "format": "google-datetime",
          "description": "Output only. The time the operation finished running.",
          "readOnly": true,
          "type": "string"
        },
        "target": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Server-defined resource path for the target of the operation."
        },
        "statusMessage": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Human-readable status of the operation, if any."
        },
        "apiVersion": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. API version used to start the operation."
        },
        "requestedCancellation": {
          "readOnly": true,
          "type": "boolean",
          "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the operation was created.",
          "format": "google-datetime"
        },
        "verb": {
          "description": "Output only. Name of the verb executed by the operation.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "NetworkInterface": {
      "properties": {
        "externalIp": {
          "description": "Optional. The external IP to define in the NIC.",
          "type": "string"
        },
        "networkTier": {
          "type": "string",
          "description": "Optional. The networking tier used for optimizing connectivity between instances and systems on the internet. Applies only for external ephemeral IP addresses. If left empty, will default to PREMIUM.",
          "enumDescriptions": [
            "An unspecified network tier. Will be used as PREMIUM.",
            "A standard network tier.",
            "A premium network tier."
          ],
          "enum": [
            "COMPUTE_ENGINE_NETWORK_TIER_UNSPECIFIED",
            "NETWORK_TIER_STANDARD",
            "NETWORK_TIER_PREMIUM"
          ]
        },
        "subnetwork": {
          "description": "Optional. The subnetwork to connect the NIC to.",
          "type": "string"
        },
        "internalIp": {
          "description": "Optional. The internal IP to define in the NIC. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path.",
          "type": "string"
        },
        "network": {
          "description": "Optional. The network to connect the NIC to.",
          "type": "string"
        }
      },
      "description": "NetworkInterface represents a NIC of a VM.",
      "id": "NetworkInterface",
      "type": "object"
    },
    "ExtendMigrationRequest": {
      "properties": {},
      "description": "Request message for 'ExtendMigrationRequest' request.",
      "id": "ExtendMigrationRequest",
      "type": "object"
    },
    "FetchInventoryResponse": {
      "type": "object",
      "id": "FetchInventoryResponse",
      "description": "Response message for fetchInventory.",
      "properties": {
        "vmwareVms": {
          "description": "The description of the VMs in a Source of type Vmware.",
          "$ref": "VmwareVmsDetails"
        },
        "azureVms": {
          "description": "The description of the VMs in a Source of type Azure.",
          "$ref": "AzureVmsDetails"
        },
        "nextPageToken": {
          "description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "readOnly": true,
          "type": "string"
        },
        "updateTime": {
          "description": "Output only. The timestamp when the source was last queried (if the result is from the cache).",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "awsVms": {
          "description": "The description of the VMs in a Source of type AWS.",
          "$ref": "AwsVmsDetails"
        }
      }
    },
    "FinalizeMigrationRequest": {
      "description": "Request message for 'FinalizeMigration' request.",
      "properties": {},
      "type": "object",
      "id": "FinalizeMigrationRequest"
    },
    "AwsDiskDetails": {
      "properties": {
        "diskNumber": {
          "readOnly": true,
          "type": "integer",
          "format": "int32",
          "description": "Output only. The ordinal number of the disk."
        },
        "sizeGb": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Size in GB.",
          "format": "int64"
        },
        "volumeId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. AWS volume ID."
        }
      },
      "description": "The details of an AWS instance disk.",
      "id": "AwsDiskDetails",
      "type": "object"
    },
    "CutoverForecast": {
      "properties": {
        "estimatedCutoverJobDuration": {
          "format": "google-duration",
          "description": "Output only. Estimation of the CutoverJob duration.",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "CutoverForecast holds information about future CutoverJobs of a MigratingVm.",
      "id": "CutoverForecast",
      "type": "object"
    },
    "RunDiskMigrationJobRequest": {
      "description": "Request message for 'RunDiskMigrationJobRequest' request.",
      "properties": {},
      "type": "object",
      "id": "RunDiskMigrationJobRequest"
    },
    "CreatingImageStep": {
      "description": "CreatingImageStep contains specific step details.",
      "properties": {},
      "type": "object",
      "id": "CreatingImageStep"
    },
    "Status": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Status"
    },
    "OSDisk": {
      "description": "A message describing the OS disk.",
      "properties": {
        "sizeGb": {
          "type": "integer",
          "description": "The disk's size in GB.",
          "format": "int32"
        },
        "type": {
          "description": "The disk's type.",
          "type": "string"
        },
        "name": {
          "description": "The disk's full name.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "OSDisk"
    },
    "AwsSourceVmDetails": {
      "description": "Represent the source AWS VM details.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "Output only. The VM architecture.",
          "enumDescriptions": [
            "The architecture is unknown.",
            "The architecture is one of the x86 architectures.",
            "The architecture is ARM64."
          ],
          "readOnly": true,
          "enum": [
            "VM_ARCHITECTURE_UNSPECIFIED",
            "VM_ARCHITECTURE_X86_FAMILY",
            "VM_ARCHITECTURE_ARM64"
          ]
        },
        "committedStorageBytes": {
          "format": "int64",
          "description": "Output only. The total size of the disks being migrated in bytes.",
          "readOnly": true,
          "type": "string"
        },
        "firmware": {
          "readOnly": true,
          "enum": [
            "FIRMWARE_UNSPECIFIED",
            "EFI",
            "BIOS"
          ],
          "type": "string",
          "description": "Output only. The firmware type of the source VM.",
          "enumDescriptions": [
            "The firmware is unknown.",
            "The firmware is EFI.",
            "The firmware is BIOS."
          ]
        },
        "vmCapabilitiesInfo": {
          "readOnly": true,
          "description": "Output only. Information about VM capabilities needed for some Compute Engine features.",
          "$ref": "VmCapabilities"
        },
        "disks": {
          "description": "Output only. The disks attached to the source VM.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "AwsDiskDetails"
          }
        }
      },
      "type": "object",
      "id": "AwsSourceVmDetails"
    },
    "RemoveGroupMigrationRequest": {
      "description": "Request message for 'RemoveMigration' request.",
      "properties": {
        "migratingVm": {
          "description": "The MigratingVm to remove.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "RemoveGroupMigrationRequest"
    }
  },
  "description": "Use the Migrate to Virtual Machines API to programmatically migrate workloads. ",
  "discoveryVersion": "v1",
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "name": "vmmigration",
  "ownerName": "Google",
  "canonicalName": "VM Migration Service",
  "baseUrl": "https://vmmigration.googleapis.com/",
  "parameters": {
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query",
      "enum": [
        "1",
        "2"
      ]
    },
    "upload_protocol": {
      "type": "string",
      "location": "query",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    },
    "fields": {
      "type": "string",
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "key": {
      "type": "string",
      "location": "query",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
    },
    "callback": {
      "type": "string",
      "location": "query",
      "description": "JSONP"
    },
    "prettyPrint": {
      "type": "boolean",
      "location": "query",
      "default": "true",
      "description": "Returns response with indentations and line breaks."
    },
    "access_token": {
      "description": "OAuth access token.",
      "type": "string",
      "location": "query"
    },
    "alt": {
      "location": "query",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "type": "string",
      "description": "Data format for response.",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ]
    },
    "quotaUser": {
      "type": "string",
      "location": "query",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters."
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "type": "string",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
    }
  },
  "version_module": true,
  "revision": "20260521",
  "kind": "discovery#restDescription",
  "version": "v1alpha1",
  "fullyEncodeReservedExpansion": true,
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "get": {
              "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Location"
              },
              "parameters": {
                "name": {
                  "description": "Resource name for the location.",
                  "pattern": "^projects/[^/]+/locations/[^/]+$",
                  "type": "string",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "id": "vmmigration.projects.locations.get",
              "path": "v1alpha1/{+name}",
              "description": "Gets information about a location."
            },
            "list": {
              "path": "v1alpha1/{+name}/locations",
              "id": "vmmigration.projects.locations.list",
              "description": "Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the ListLocationsRequest.name field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1alpha1/projects/{projectsId}/locations",
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "pageToken": {
                  "location": "query",
                  "type": "string",
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page."
                },
                "pageSize": {
                  "format": "int32",
                  "description": "The maximum number of results to return. If not set, the service selects a default.",
                  "location": "query",
                  "type": "integer"
                },
                "name": {
                  "type": "string",
                  "description": "The resource that owns the locations collection, if applicable.",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true
                },
                "extraLocationTypes": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. Do not use this field unless explicitly documented otherwise. This is primarily for internal usage.",
                  "repeated": true
                },
                "filter": {
                  "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
                  "location": "query",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "ListLocationsResponse"
              }
            }
          },
          "resources": {
            "operations": {
              "methods": {
                "list": {
                  "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
                  "path": "v1alpha1/{+name}/operations",
                  "id": "vmmigration.projects.locations.operations.list",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "filter": {
                      "description": "The standard list filter.",
                      "location": "query",
                      "type": "string"
                    },
                    "name": {
                      "description": "The name of the operation's parent resource.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    },
                    "pageToken": {
                      "description": "The standard list page token.",
                      "location": "query",
                      "type": "string"
                    },
                    "returnPartialSuccess": {
                      "location": "query",
                      "type": "boolean",
                      "description": "When set to `true`, operations that are reachable are returned as normal, and those that are unreachable are returned in the ListOperationsResponse.unreachable field. This can only be `true` when reading across collections. For example, when `parent` is set to `\"projects/example/locations/-\"`. This field is not supported by default and will result in an `UNIMPLEMENTED` error if set unless explicitly documented otherwise in service or product specific documentation."
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "The standard list page size."
                    }
                  },
                  "response": {
                    "$ref": "ListOperationsResponse"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations",
                  "parameterOrder": [
                    "name"
                  ]
                },
                "cancel": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "The name of the operation resource to be cancelled.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$"
                    }
                  },
                  "request": {
                    "$ref": "CancelOperationRequest"
                  },
                  "id": "vmmigration.projects.locations.operations.cancel",
                  "path": "v1alpha1/{+name}:cancel",
                  "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
                  "httpMethod": "POST"
                },
                "get": {
                  "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
                  "id": "vmmigration.projects.locations.operations.get",
                  "path": "v1alpha1/{+name}",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "The name of the operation resource.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "parameterOrder": [
                    "name"
                  ]
                },
                "delete": {
                  "path": "v1alpha1/{+name}",
                  "id": "vmmigration.projects.locations.operations.delete",
                  "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
                  "httpMethod": "DELETE",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "The name of the operation resource to be deleted.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "Empty"
                  }
                }
              }
            },
            "groups": {
              "methods": {
                "list": {
                  "response": {
                    "$ref": "ListGroupsResponse"
                  },
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "description": "Required. The parent, which owns this collection of groups.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "filter": {
                      "description": "Optional. The filter request.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageToken": {
                      "description": "Required. A page token, received from a previous `ListGroups` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListGroups` must match the call that provided the page token.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "format": "int32",
                      "description": "Optional. The maximum number of groups to return. The service may return fewer than this value. If unspecified, at most 500 groups will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "type": "integer"
                    },
                    "orderBy": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. the order by fields for the result."
                    }
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "description": "Lists Groups in a given project and location.",
                  "id": "vmmigration.projects.locations.groups.list",
                  "path": "v1alpha1/{+parent}/groups"
                },
                "patch": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Output only. The Group name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "updateMask": {
                      "location": "query",
                      "type": "string",
                      "format": "google-fieldmask",
                      "description": "Field mask is used to specify the fields to be overwritten in the Group resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten."
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "A 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 since 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)."
                    }
                  },
                  "request": {
                    "$ref": "Group"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "PATCH",
                  "id": "vmmigration.projects.locations.groups.patch",
                  "path": "v1alpha1/{+name}",
                  "description": "Updates the parameters of a single Group."
                },
                "addGroupMigration": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "group": {
                      "type": "string",
                      "description": "Required. The full path name of the Group to add to.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "request": {
                    "$ref": "AddGroupMigrationRequest"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}:addGroupMigration",
                  "parameterOrder": [
                    "group"
                  ],
                  "description": "Adds a MigratingVm to a Group.",
                  "path": "v1alpha1/{+group}:addGroupMigration",
                  "id": "vmmigration.projects.locations.groups.addGroupMigration",
                  "httpMethod": "POST"
                },
                "create": {
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The Group's parent.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    },
                    "requestId": {
                      "description": "A 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 since 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).",
                      "location": "query",
                      "type": "string"
                    },
                    "groupId": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. The group identifier."
                    }
                  },
                  "request": {
                    "$ref": "Group"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "description": "Creates a new Group in a given project and location.",
                  "id": "vmmigration.projects.locations.groups.create",
                  "path": "v1alpha1/{+parent}/groups"
                },
                "get": {
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The group name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$"
                    }
                  },
                  "response": {
                    "$ref": "Group"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "description": "Gets details of a single Group.",
                  "path": "v1alpha1/{+name}",
                  "id": "vmmigration.projects.locations.groups.get"
                },
                "delete": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The Group name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A 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)."
                    }
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "DELETE",
                  "path": "v1alpha1/{+name}",
                  "id": "vmmigration.projects.locations.groups.delete",
                  "description": "Deletes a single Group."
                },
                "removeGroupMigration": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}:removeGroupMigration",
                  "parameterOrder": [
                    "group"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "group": {
                      "type": "string",
                      "description": "Required. The name of the Group.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "request": {
                    "$ref": "RemoveGroupMigrationRequest"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "id": "vmmigration.projects.locations.groups.removeGroupMigration",
                  "path": "v1alpha1/{+group}:removeGroupMigration",
                  "description": "Removes a MigratingVm from a Group."
                }
              }
            },
            "targetProjects": {
              "methods": {
                "create": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "targetProjectId": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. The target_project identifier."
                    },
                    "parent": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The TargetProject's parent.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "A 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 since 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)."
                    }
                  },
                  "request": {
                    "$ref": "TargetProject"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a new TargetProject in a given project. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
                  "path": "v1alpha1/{+parent}/targetProjects",
                  "id": "vmmigration.projects.locations.targetProjects.create",
                  "httpMethod": "POST"
                },
                "list": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListTargetProjectsResponse"
                  },
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent, which owns this collection of targets.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    },
                    "filter": {
                      "description": "Optional. The filter request.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "description": "Optional. The maximum number of targets to return. The service may return fewer than this value. If unspecified, at most 500 targets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "format": "int32"
                    },
                    "orderBy": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. the order by fields for the result."
                    },
                    "pageToken": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. A page token, received from a previous `ListTargets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListTargets` must match the call that provided the page token."
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "vmmigration.projects.locations.targetProjects.list",
                  "path": "v1alpha1/{+parent}/targetProjects",
                  "description": "Lists TargetProjects in a given project. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`."
                },
                "patch": {
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Output only. The name of the target project.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/targetProjects/[^/]+$"
                    },
                    "updateMask": {
                      "format": "google-fieldmask",
                      "description": "Field mask is used to specify the fields to be overwritten in the TargetProject resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
                      "location": "query",
                      "type": "string"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "A 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 since 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)."
                    }
                  },
                  "request": {
                    "$ref": "TargetProject"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects/{targetProjectsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "PATCH",
                  "description": "Updates the parameters of a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
                  "id": "vmmigration.projects.locations.targetProjects.patch",
                  "path": "v1alpha1/{+name}"
                },
                "get": {
                  "parameters": {
                    "name": {
                      "description": "Required. The TargetProject name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/targetProjects/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "response": {
                    "$ref": "TargetProject"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects/{targetProjectsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "description": "Gets details of a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
                  "path": "v1alpha1/{+name}",
                  "id": "vmmigration.projects.locations.targetProjects.get"
                },
                "delete": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects/{targetProjectsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The TargetProject name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/targetProjects/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A 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)."
                    }
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1alpha1/{+name}",
                  "id": "vmmigration.projects.locations.targetProjects.delete",
                  "description": "Deletes a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
                  "httpMethod": "DELETE"
                }
              }
            },
            "sources": {
              "resources": {
                "datacenterConnectors": {
                  "methods": {
                    "upgradeAppliance": {
                      "path": "v1alpha1/{+datacenterConnector}:upgradeAppliance",
                      "id": "vmmigration.projects.locations.sources.datacenterConnectors.upgradeAppliance",
                      "description": "Upgrades the appliance relate to this DatacenterConnector to the in-place updateable version.",
                      "httpMethod": "POST",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors/{datacenterConnectorsId}:upgradeAppliance",
                      "parameterOrder": [
                        "datacenterConnector"
                      ],
                      "parameters": {
                        "datacenterConnector": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The DatacenterConnector name.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/datacenterConnectors/[^/]+$",
                          "type": "string"
                        }
                      },
                      "request": {
                        "$ref": "UpgradeApplianceRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      }
                    },
                    "get": {
                      "path": "v1alpha1/{+name}",
                      "id": "vmmigration.projects.locations.sources.datacenterConnectors.get",
                      "description": "Gets details of a single DatacenterConnector.",
                      "httpMethod": "GET",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors/{datacenterConnectorsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "description": "Required. The name of the DatacenterConnector.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/datacenterConnectors/[^/]+$"
                        }
                      },
                      "response": {
                        "$ref": "DatacenterConnector"
                      }
                    },
                    "delete": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors/{datacenterConnectorsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "parameters": {
                        "name": {
                          "type": "string",
                          "description": "Required. The DatacenterConnector name.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/datacenterConnectors/[^/]+$",
                          "location": "path",
                          "required": true
                        },
                        "requestId": {
                          "description": "A 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).",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "path": "v1alpha1/{+name}",
                      "id": "vmmigration.projects.locations.sources.datacenterConnectors.delete",
                      "description": "Deletes a single DatacenterConnector.",
                      "httpMethod": "DELETE"
                    },
                    "create": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors",
                      "parameterOrder": [
                        "parent"
                      ],
                      "parameters": {
                        "datacenterConnectorId": {
                          "location": "query",
                          "type": "string",
                          "description": "Required. The datacenterConnector identifier."
                        },
                        "parent": {
                          "type": "string",
                          "description": "Required. The DatacenterConnector's parent. Required. The Source in where the new DatacenterConnector will be created. For example: `projects/my-project/locations/us-central1/sources/my-source`",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                          "location": "path",
                          "required": true
                        },
                        "requestId": {
                          "location": "query",
                          "type": "string",
                          "description": "A 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 since 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)."
                        }
                      },
                      "request": {
                        "$ref": "DatacenterConnector"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "path": "v1alpha1/{+parent}/datacenterConnectors",
                      "id": "vmmigration.projects.locations.sources.datacenterConnectors.create",
                      "description": "Creates a new DatacenterConnector in a given Source.",
                      "httpMethod": "POST"
                    },
                    "list": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors",
                      "parameterOrder": [
                        "parent"
                      ],
                      "parameters": {
                        "filter": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. The filter request."
                        },
                        "parent": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The parent, which owns this collection of connectors.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                          "type": "string"
                        },
                        "orderBy": {
                          "description": "Optional. the order by fields for the result.",
                          "location": "query",
                          "type": "string"
                        },
                        "pageSize": {
                          "location": "query",
                          "type": "integer",
                          "description": "Optional. The maximum number of connectors to return. The service may return fewer than this value. If unspecified, at most 500 sources will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                          "format": "int32"
                        },
                        "pageToken": {
                          "location": "query",
                          "type": "string",
                          "description": "Required. A page token, received from a previous `ListDatacenterConnectors` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDatacenterConnectors` must match the call that provided the page token."
                        }
                      },
                      "response": {
                        "$ref": "ListDatacenterConnectorsResponse"
                      },
                      "path": "v1alpha1/{+parent}/datacenterConnectors",
                      "id": "vmmigration.projects.locations.sources.datacenterConnectors.list",
                      "description": "Lists DatacenterConnectors in a given Source.",
                      "httpMethod": "GET"
                    }
                  }
                },
                "migratingVms": {
                  "resources": {
                    "cloneJobs": {
                      "methods": {
                        "get": {
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "response": {
                            "$ref": "CloneJob"
                          },
                          "parameters": {
                            "name": {
                              "description": "Required. The name of the CloneJob.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cloneJobs/[^/]+$",
                              "type": "string",
                              "required": true,
                              "location": "path"
                            }
                          },
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs/{cloneJobsId}",
                          "parameterOrder": [
                            "name"
                          ],
                          "description": "Gets details of a single CloneJob.",
                          "id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.get",
                          "path": "v1alpha1/{+name}",
                          "httpMethod": "GET"
                        },
                        "cancel": {
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs/{cloneJobsId}:cancel",
                          "parameterOrder": [
                            "name"
                          ],
                          "parameters": {
                            "name": {
                              "description": "Required. The clone job id",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cloneJobs/[^/]+$",
                              "type": "string",
                              "required": true,
                              "location": "path"
                            }
                          },
                          "request": {
                            "$ref": "CancelCloneJobRequest"
                          },
                          "response": {
                            "$ref": "Operation"
                          },
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "httpMethod": "POST",
                          "path": "v1alpha1/{+name}:cancel",
                          "id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.cancel",
                          "description": "Initiates the cancellation of a running clone job."
                        },
                        "list": {
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "response": {
                            "$ref": "ListCloneJobsResponse"
                          },
                          "parameters": {
                            "pageSize": {
                              "location": "query",
                              "type": "integer",
                              "description": "Optional. The maximum number of clone jobs to return. The service may return fewer than this value. If unspecified, at most 500 clone jobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                              "format": "int32"
                            },
                            "orderBy": {
                              "location": "query",
                              "type": "string",
                              "description": "Optional. the order by fields for the result."
                            },
                            "pageToken": {
                              "description": "Required. A page token, received from a previous `ListCloneJobs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListCloneJobs` must match the call that provided the page token.",
                              "location": "query",
                              "type": "string"
                            },
                            "parent": {
                              "description": "Required. The parent, which owns this collection of source VMs.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                              "type": "string",
                              "required": true,
                              "location": "path"
                            },
                            "filter": {
                              "location": "query",
                              "type": "string",
                              "description": "Optional. The filter request."
                            }
                          },
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs",
                          "parameterOrder": [
                            "parent"
                          ],
                          "description": "Lists the CloneJobs of a migrating VM. Only 25 most recent CloneJobs are listed.",
                          "id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.list",
                          "path": "v1alpha1/{+parent}/cloneJobs",
                          "httpMethod": "GET"
                        },
                        "create": {
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs",
                          "parameterOrder": [
                            "parent"
                          ],
                          "response": {
                            "$ref": "Operation"
                          },
                          "parameters": {
                            "parent": {
                              "required": true,
                              "location": "path",
                              "description": "Required. The Clone's parent.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                              "type": "string"
                            },
                            "cloneJobId": {
                              "description": "Required. The clone job identifier.",
                              "location": "query",
                              "type": "string"
                            },
                            "requestId": {
                              "location": "query",
                              "type": "string",
                              "description": "A 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 since 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)."
                            }
                          },
                          "request": {
                            "$ref": "CloneJob"
                          },
                          "id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.create",
                          "path": "v1alpha1/{+parent}/cloneJobs",
                          "description": "Initiates a Clone of a specific migrating VM.",
                          "httpMethod": "POST"
                        }
                      }
                    },
                    "cutoverJobs": {
                      "methods": {
                        "cancel": {
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "response": {
                            "$ref": "Operation"
                          },
                          "parameters": {
                            "name": {
                              "type": "string",
                              "description": "Required. The cutover job id",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cutoverJobs/[^/]+$",
                              "location": "path",
                              "required": true
                            }
                          },
                          "request": {
                            "$ref": "CancelCutoverJobRequest"
                          },
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs/{cutoverJobsId}:cancel",
                          "parameterOrder": [
                            "name"
                          ],
                          "description": "Initiates the cancellation of a running cutover job.",
                          "id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.cancel",
                          "path": "v1alpha1/{+name}:cancel",
                          "httpMethod": "POST"
                        },
                        "list": {
                          "httpMethod": "GET",
                          "path": "v1alpha1/{+parent}/cutoverJobs",
                          "id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.list",
                          "description": "Lists the CutoverJobs of a migrating VM. Only 25 most recent CutoverJobs are listed.",
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs",
                          "parameterOrder": [
                            "parent"
                          ],
                          "parameters": {
                            "filter": {
                              "location": "query",
                              "type": "string",
                              "description": "Optional. The filter request."
                            },
                            "parent": {
                              "required": true,
                              "location": "path",
                              "description": "Required. The parent, which owns this collection of migrating VMs.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                              "type": "string"
                            },
                            "orderBy": {
                              "description": "Optional. the order by fields for the result.",
                              "location": "query",
                              "type": "string"
                            },
                            "pageSize": {
                              "format": "int32",
                              "description": "Optional. The maximum number of cutover jobs to return. The service may return fewer than this value. If unspecified, at most 500 cutover jobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                              "location": "query",
                              "type": "integer"
                            },
                            "pageToken": {
                              "location": "query",
                              "type": "string",
                              "description": "Required. A page token, received from a previous `ListCutoverJobs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListCutoverJobs` must match the call that provided the page token."
                            }
                          },
                          "response": {
                            "$ref": "ListCutoverJobsResponse"
                          },
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ]
                        },
                        "create": {
                          "httpMethod": "POST",
                          "id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.create",
                          "path": "v1alpha1/{+parent}/cutoverJobs",
                          "description": "Initiates a Cutover of a specific migrating VM. The returned LRO is completed when the cutover job resource is created and the job is initiated.",
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs",
                          "parameterOrder": [
                            "parent"
                          ],
                          "response": {
                            "$ref": "Operation"
                          },
                          "parameters": {
                            "parent": {
                              "required": true,
                              "location": "path",
                              "description": "Required. The Cutover's parent.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                              "type": "string"
                            },
                            "requestId": {
                              "location": "query",
                              "type": "string",
                              "description": "A 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 since 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)."
                            },
                            "cutoverJobId": {
                              "location": "query",
                              "type": "string",
                              "description": "Required. The cutover job identifier."
                            }
                          },
                          "request": {
                            "$ref": "CutoverJob"
                          },
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ]
                        },
                        "get": {
                          "response": {
                            "$ref": "CutoverJob"
                          },
                          "parameters": {
                            "name": {
                              "required": true,
                              "location": "path",
                              "description": "Required. The name of the CutoverJob.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cutoverJobs/[^/]+$",
                              "type": "string"
                            }
                          },
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs/{cutoverJobsId}",
                          "parameterOrder": [
                            "name"
                          ],
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "httpMethod": "GET",
                          "description": "Gets details of a single CutoverJob.",
                          "id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.get",
                          "path": "v1alpha1/{+name}"
                        }
                      }
                    },
                    "replicationCycles": {
                      "methods": {
                        "get": {
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/replicationCycles/{replicationCyclesId}",
                          "parameterOrder": [
                            "name"
                          ],
                          "parameters": {
                            "name": {
                              "description": "Required. The name of the ReplicationCycle.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/replicationCycles/[^/]+$",
                              "type": "string",
                              "required": true,
                              "location": "path"
                            }
                          },
                          "response": {
                            "$ref": "ReplicationCycle"
                          },
                          "path": "v1alpha1/{+name}",
                          "id": "vmmigration.projects.locations.sources.migratingVms.replicationCycles.get",
                          "description": "Gets details of a single ReplicationCycle.",
                          "httpMethod": "GET"
                        },
                        "list": {
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "response": {
                            "$ref": "ListReplicationCyclesResponse"
                          },
                          "parameters": {
                            "parent": {
                              "location": "path",
                              "required": true,
                              "type": "string",
                              "description": "Required. The parent, which owns this collection of ReplicationCycles.",
                              "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$"
                            },
                            "filter": {
                              "description": "Optional. The filter request.",
                              "location": "query",
                              "type": "string"
                            },
                            "pageSize": {
                              "location": "query",
                              "type": "integer",
                              "format": "int32",
                              "description": "Optional. The maximum number of replication cycles to return. The service may return fewer than this value. If unspecified, at most 100 migrating VMs will be returned. The maximum value is 100; values above 100 will be coerced to 100."
                            },
                            "orderBy": {
                              "description": "Optional. the order by fields for the result.",
                              "location": "query",
                              "type": "string"
                            },
                            "pageToken": {
                              "description": "Required. A page token, received from a previous `ListReplicationCycles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListReplicationCycles` must match the call that provided the page token.",
                              "location": "query",
                              "type": "string"
                            }
                          },
                          "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/replicationCycles",
                          "parameterOrder": [
                            "parent"
                          ],
                          "description": "Lists ReplicationCycles in a given MigratingVM.",
                          "id": "vmmigration.projects.locations.sources.migratingVms.replicationCycles.list",
                          "path": "v1alpha1/{+parent}/replicationCycles",
                          "httpMethod": "GET"
                        }
                      }
                    }
                  },
                  "methods": {
                    "resumeMigration": {
                      "httpMethod": "POST",
                      "path": "v1alpha1/{+migratingVm}:resumeMigration",
                      "id": "vmmigration.projects.locations.sources.migratingVms.resumeMigration",
                      "description": "Resumes a migration for a VM. When called on a paused migration, will start the process of uploading data and creating snapshots; when called on a completed cut-over migration, will update the migration to active state and start the process of uploading data and creating snapshots.",
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:resumeMigration",
                      "parameterOrder": [
                        "migratingVm"
                      ],
                      "parameters": {
                        "migratingVm": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The name of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "type": "string"
                        }
                      },
                      "request": {
                        "$ref": "ResumeMigrationRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "create": {
                      "parameters": {
                        "parent": {
                          "description": "Required. The MigratingVm's parent.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        },
                        "requestId": {
                          "location": "query",
                          "type": "string",
                          "description": "A 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 since 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)."
                        },
                        "migratingVmId": {
                          "description": "Required. The migratingVm identifier.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "request": {
                        "$ref": "MigratingVm"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms",
                      "parameterOrder": [
                        "parent"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "POST",
                      "description": "Creates a new MigratingVm in a given Source.",
                      "path": "v1alpha1/{+parent}/migratingVms",
                      "id": "vmmigration.projects.locations.sources.migratingVms.create"
                    },
                    "extendMigration": {
                      "parameters": {
                        "migratingVm": {
                          "description": "Required. The name of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "request": {
                        "$ref": "ExtendMigrationRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:extendMigration",
                      "parameterOrder": [
                        "migratingVm"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "POST",
                      "description": "Extend the migrating VM time to live.",
                      "path": "v1alpha1/{+migratingVm}:extendMigration",
                      "id": "vmmigration.projects.locations.sources.migratingVms.extendMigration"
                    },
                    "startMigration": {
                      "httpMethod": "POST",
                      "path": "v1alpha1/{+migratingVm}:startMigration",
                      "id": "vmmigration.projects.locations.sources.migratingVms.startMigration",
                      "description": "Starts migration for a VM. Starts the process of uploading data and creating snapshots, in replication cycles scheduled by the policy.",
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:startMigration",
                      "parameterOrder": [
                        "migratingVm"
                      ],
                      "parameters": {
                        "migratingVm": {
                          "description": "Required. The name of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "request": {
                        "$ref": "StartMigrationRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "pauseMigration": {
                      "httpMethod": "POST",
                      "description": "Pauses a migration for a VM. If cycle tasks are running they will be cancelled, preserving source task data. Further replication cycles will not be triggered while the VM is paused.",
                      "path": "v1alpha1/{+migratingVm}:pauseMigration",
                      "id": "vmmigration.projects.locations.sources.migratingVms.pauseMigration",
                      "parameters": {
                        "migratingVm": {
                          "description": "Required. The name of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "request": {
                        "$ref": "PauseMigrationRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:pauseMigration",
                      "parameterOrder": [
                        "migratingVm"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "list": {
                      "path": "v1alpha1/{+parent}/migratingVms",
                      "id": "vmmigration.projects.locations.sources.migratingVms.list",
                      "description": "Lists MigratingVms in a given Source.",
                      "httpMethod": "GET",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms",
                      "parameterOrder": [
                        "parent"
                      ],
                      "parameters": {
                        "parent": {
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "description": "Required. The parent, which owns this collection of MigratingVms.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$"
                        },
                        "filter": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. The filter request."
                        },
                        "pageToken": {
                          "location": "query",
                          "type": "string",
                          "description": "Required. A page token, received from a previous `ListMigratingVms` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListMigratingVms` must match the call that provided the page token."
                        },
                        "pageSize": {
                          "format": "int32",
                          "description": "Optional. The maximum number of migrating VMs to return. The service may return fewer than this value. If unspecified, at most 500 migrating VMs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                          "location": "query",
                          "type": "integer"
                        },
                        "orderBy": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. the order by fields for the result."
                        },
                        "view": {
                          "description": "Optional. The level of details of each migrating VM.",
                          "enumDescriptions": [
                            "View is unspecified. The API will fallback to the default value.",
                            "Get the migrating VM basic details. The basic details do not include the recent clone jobs and recent cutover jobs lists.",
                            "Include everything."
                          ],
                          "type": "string",
                          "enum": [
                            "MIGRATING_VM_VIEW_UNSPECIFIED",
                            "MIGRATING_VM_VIEW_BASIC",
                            "MIGRATING_VM_VIEW_FULL"
                          ],
                          "location": "query"
                        }
                      },
                      "response": {
                        "$ref": "ListMigratingVmsResponse"
                      }
                    },
                    "patch": {
                      "httpMethod": "PATCH",
                      "description": "Updates the parameters of a single MigratingVm.",
                      "path": "v1alpha1/{+name}",
                      "id": "vmmigration.projects.locations.sources.migratingVms.patch",
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Output only. The identifier of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "type": "string"
                        },
                        "updateMask": {
                          "location": "query",
                          "type": "string",
                          "description": "Field mask is used to specify the fields to be overwritten in the MigratingVm resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
                          "format": "google-fieldmask"
                        },
                        "requestId": {
                          "description": "A 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 since 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).",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "request": {
                        "$ref": "MigratingVm"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "get": {
                      "response": {
                        "$ref": "MigratingVm"
                      },
                      "parameters": {
                        "view": {
                          "location": "query",
                          "enum": [
                            "MIGRATING_VM_VIEW_UNSPECIFIED",
                            "MIGRATING_VM_VIEW_BASIC",
                            "MIGRATING_VM_VIEW_FULL"
                          ],
                          "type": "string",
                          "description": "Optional. The level of details of the migrating VM.",
                          "enumDescriptions": [
                            "View is unspecified. The API will fallback to the default value.",
                            "Get the migrating VM basic details. The basic details do not include the recent clone jobs and recent cutover jobs lists.",
                            "Include everything."
                          ]
                        },
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The name of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "type": "string"
                        }
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "GET",
                      "description": "Gets details of a single MigratingVm.",
                      "id": "vmmigration.projects.locations.sources.migratingVms.get",
                      "path": "v1alpha1/{+name}"
                    },
                    "delete": {
                      "parameters": {
                        "name": {
                          "type": "string",
                          "description": "Required. The name of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "location": "path",
                          "required": true
                        }
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "DELETE",
                      "description": "Deletes a single MigratingVm.",
                      "path": "v1alpha1/{+name}",
                      "id": "vmmigration.projects.locations.sources.migratingVms.delete"
                    },
                    "finalizeMigration": {
                      "id": "vmmigration.projects.locations.sources.migratingVms.finalizeMigration",
                      "path": "v1alpha1/{+migratingVm}:finalizeMigration",
                      "description": "Marks a migration as completed, deleting migration resources that are no longer being used. Only applicable after cutover is done.",
                      "httpMethod": "POST",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:finalizeMigration",
                      "parameterOrder": [
                        "migratingVm"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "parameters": {
                        "migratingVm": {
                          "type": "string",
                          "description": "Required. The name of the MigratingVm.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
                          "location": "path",
                          "required": true
                        }
                      },
                      "request": {
                        "$ref": "FinalizeMigrationRequest"
                      }
                    }
                  }
                },
                "diskMigrationJobs": {
                  "methods": {
                    "get": {
                      "httpMethod": "GET",
                      "id": "vmmigration.projects.locations.sources.diskMigrationJobs.get",
                      "path": "v1alpha1/{+name}",
                      "description": "Gets details of a single DiskMigrationJob.",
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/diskMigrationJobs/{diskMigrationJobsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "DiskMigrationJob"
                      },
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The name of the DiskMigrationJob.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/diskMigrationJobs/[^/]+$",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "delete": {
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The name of the DiskMigrationJob.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/diskMigrationJobs/[^/]+$",
                          "type": "string"
                        }
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/diskMigrationJobs/{diskMigrationJobsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "DELETE",
                      "description": "Deletes a single DiskMigrationJob.",
                      "path": "v1alpha1/{+name}",
                      "id": "vmmigration.projects.locations.sources.diskMigrationJobs.delete"
                    },
                    "cancel": {
                      "httpMethod": "POST",
                      "description": "Cancels the disk migration job.",
                      "path": "v1alpha1/{+name}:cancel",
                      "id": "vmmigration.projects.locations.sources.diskMigrationJobs.cancel",
                      "parameters": {
                        "name": {
                          "description": "Required. The name of the DiskMigrationJob.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/diskMigrationJobs/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "request": {
                        "$ref": "CancelDiskMigrationJobRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/diskMigrationJobs/{diskMigrationJobsId}:cancel",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "run": {
                      "httpMethod": "POST",
                      "path": "v1alpha1/{+name}:run",
                      "id": "vmmigration.projects.locations.sources.diskMigrationJobs.run",
                      "description": "Runs the disk migration job.",
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/diskMigrationJobs/{diskMigrationJobsId}:run",
                      "parameterOrder": [
                        "name"
                      ],
                      "parameters": {
                        "name": {
                          "type": "string",
                          "description": "Required. The name of the DiskMigrationJob.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/diskMigrationJobs/[^/]+$",
                          "location": "path",
                          "required": true
                        }
                      },
                      "request": {
                        "$ref": "RunDiskMigrationJobRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "list": {
                      "httpMethod": "GET",
                      "description": "Lists DiskMigrationJobs in a given Source.",
                      "path": "v1alpha1/{+parent}/diskMigrationJobs",
                      "id": "vmmigration.projects.locations.sources.diskMigrationJobs.list",
                      "parameters": {
                        "orderBy": {
                          "description": "Optional. Ordering of the result list.",
                          "location": "query",
                          "type": "string"
                        },
                        "pageSize": {
                          "format": "int32",
                          "description": "Optional. The maximum number of disk migration jobs to return. The service may return fewer than this value. If unspecified, at most 500 disk migration jobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                          "location": "query",
                          "type": "integer"
                        },
                        "pageToken": {
                          "description": "Optional. A page token, received from a previous `ListDiskMigrationJobs` call. Provide this to retrieve the subsequent page. When paginating, all parameters provided to `ListDiskMigrationJobs` except `page_size` must match the call that provided the page token.",
                          "location": "query",
                          "type": "string"
                        },
                        "filter": {
                          "description": "Optional. The filter request (according to AIP-160).",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The parent, which owns this collection of DiskMigrationJobs.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                          "type": "string"
                        }
                      },
                      "response": {
                        "$ref": "ListDiskMigrationJobsResponse"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/diskMigrationJobs",
                      "parameterOrder": [
                        "parent"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "patch": {
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "description": "Output only. Identifier. The identifier of the DiskMigrationJob.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/diskMigrationJobs/[^/]+$"
                        },
                        "updateMask": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. Field mask is used to specify the fields to be overwritten in the DiskMigrationJob resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask, then a mask equivalent to all fields that are populated (have a non-empty value), will be implied.",
                          "format": "google-fieldmask"
                        },
                        "requestId": {
                          "description": "Optional. A 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 since the first request. For example, consider a situation where you make an initial request and the request timed 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).",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "request": {
                        "$ref": "DiskMigrationJob"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/diskMigrationJobs/{diskMigrationJobsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "PATCH",
                      "description": "Updates the parameters of a single DiskMigrationJob.",
                      "path": "v1alpha1/{+name}",
                      "id": "vmmigration.projects.locations.sources.diskMigrationJobs.patch"
                    },
                    "create": {
                      "description": "Creates a new disk migration job in a given Source.",
                      "id": "vmmigration.projects.locations.sources.diskMigrationJobs.create",
                      "path": "v1alpha1/{+parent}/diskMigrationJobs",
                      "httpMethod": "POST",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "parameters": {
                        "diskMigrationJobId": {
                          "description": "Required. The DiskMigrationJob identifier. The maximum length of this value is 63 characters. Valid characters are lower case Latin letters, digits and hyphen. It must start with a Latin letter and must not end with a hyphen.",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "description": "Required. The DiskMigrationJob's parent.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        },
                        "requestId": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. A 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 since the first request. For example, consider a situation where you make an initial request and the request timed 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)."
                        }
                      },
                      "request": {
                        "$ref": "DiskMigrationJob"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/diskMigrationJobs",
                      "parameterOrder": [
                        "parent"
                      ]
                    }
                  }
                },
                "utilizationReports": {
                  "methods": {
                    "get": {
                      "httpMethod": "GET",
                      "description": "Gets a single Utilization Report.",
                      "path": "v1alpha1/{+name}",
                      "id": "vmmigration.projects.locations.sources.utilizationReports.get",
                      "parameters": {
                        "name": {
                          "description": "Required. The Utilization Report name.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/utilizationReports/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        },
                        "view": {
                          "description": "Optional. The level of details of the report. Defaults to FULL",
                          "enumDescriptions": [
                            "The default / unset value. The API will default to FULL on single report request and BASIC for multiple reports request.",
                            "Get the report metadata, without the list of VMs and their utilization info.",
                            "Include everything."
                          ],
                          "type": "string",
                          "enum": [
                            "UTILIZATION_REPORT_VIEW_UNSPECIFIED",
                            "BASIC",
                            "FULL"
                          ],
                          "location": "query"
                        }
                      },
                      "response": {
                        "$ref": "UtilizationReport"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports/{utilizationReportsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "delete": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "parameters": {
                        "name": {
                          "description": "Required. The Utilization Report name.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/utilizationReports/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        },
                        "requestId": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. A 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)."
                        }
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports/{utilizationReportsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "description": "Deletes a single Utilization Report.",
                      "id": "vmmigration.projects.locations.sources.utilizationReports.delete",
                      "path": "v1alpha1/{+name}",
                      "httpMethod": "DELETE"
                    },
                    "list": {
                      "path": "v1alpha1/{+parent}/utilizationReports",
                      "id": "vmmigration.projects.locations.sources.utilizationReports.list",
                      "description": "Lists Utilization Reports of the given Source.",
                      "httpMethod": "GET",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports",
                      "parameterOrder": [
                        "parent"
                      ],
                      "parameters": {
                        "pageToken": {
                          "description": "Required. A page token, received from a previous `ListUtilizationReports` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUtilizationReports` must match the call that provided the page token.",
                          "location": "query",
                          "type": "string"
                        },
                        "view": {
                          "location": "query",
                          "enum": [
                            "UTILIZATION_REPORT_VIEW_UNSPECIFIED",
                            "BASIC",
                            "FULL"
                          ],
                          "type": "string",
                          "description": "Optional. The level of details of each report. Defaults to BASIC.",
                          "enumDescriptions": [
                            "The default / unset value. The API will default to FULL on single report request and BASIC for multiple reports request.",
                            "Get the report metadata, without the list of VMs and their utilization info.",
                            "Include everything."
                          ]
                        },
                        "orderBy": {
                          "description": "Optional. the order by fields for the result.",
                          "location": "query",
                          "type": "string"
                        },
                        "pageSize": {
                          "description": "Optional. The maximum number of reports to return. The service may return fewer than this value. If unspecified, at most 500 reports will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                          "format": "int32",
                          "location": "query",
                          "type": "integer"
                        },
                        "filter": {
                          "description": "Optional. The filter request.",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "description": "Required. The Utilization Reports parent.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$"
                        }
                      },
                      "response": {
                        "$ref": "ListUtilizationReportsResponse"
                      }
                    },
                    "create": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "parameters": {
                        "parent": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The Utilization Report's parent.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                          "type": "string"
                        },
                        "requestId": {
                          "description": "A 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 since 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).",
                          "location": "query",
                          "type": "string"
                        },
                        "utilizationReportId": {
                          "description": "Required. The ID to use for the report, which will become the final component of the reports's resource name. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "request": {
                        "$ref": "UtilizationReport"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports",
                      "parameterOrder": [
                        "parent"
                      ],
                      "description": "Creates a new UtilizationReport.",
                      "id": "vmmigration.projects.locations.sources.utilizationReports.create",
                      "path": "v1alpha1/{+parent}/utilizationReports",
                      "httpMethod": "POST"
                    }
                  }
                }
              },
              "methods": {
                "fetchStorageInventory": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}:fetchStorageInventory",
                  "parameterOrder": [
                    "source"
                  ],
                  "response": {
                    "$ref": "FetchStorageInventoryResponse"
                  },
                  "parameters": {
                    "type": {
                      "enum": [
                        "STORAGE_TYPE_UNSPECIFIED",
                        "DISKS",
                        "SNAPSHOTS"
                      ],
                      "location": "query",
                      "description": "Required. The type of the storage inventory to fetch.",
                      "enumDescriptions": [
                        "The type is unspecified.",
                        "The type is disks.",
                        "The type is snapshots."
                      ],
                      "type": "string"
                    },
                    "source": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the Source.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                      "type": "string"
                    },
                    "forceRefresh": {
                      "description": "Optional. If this flag is set to true, the source will be queried instead of using cached results. Using this flag will make the call slower.",
                      "location": "query",
                      "type": "boolean"
                    },
                    "pageToken": {
                      "description": "Optional. A page token, received from a previous `FetchStorageInventory` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `FetchStorageInventory` must match the call that provided the page token.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "format": "int32",
                      "description": "Optional. The maximum number of VMs to return. The service may return fewer than this value.",
                      "location": "query",
                      "type": "integer"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "vmmigration.projects.locations.sources.fetchStorageInventory",
                  "path": "v1alpha1/{+source}:fetchStorageInventory",
                  "description": "List remote source's inventory of storage resources. The remote source is another cloud vendor (e.g. AWS, Azure). The inventory describes the list of existing storage resources in that source. Note that this operation lists the resources on the remote source, as opposed to listing the MigratingVms resources in the vmmigration service."
                },
                "list": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListSourcesResponse"
                  },
                  "parameters": {
                    "pageSize": {
                      "format": "int32",
                      "description": "Optional. The maximum number of sources to return. The service may return fewer than this value. If unspecified, at most 500 sources will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "type": "integer"
                    },
                    "orderBy": {
                      "description": "Optional. the order by fields for the result.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageToken": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. A page token, received from a previous `ListSources` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSources` must match the call that provided the page token."
                    },
                    "parent": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The parent, which owns this collection of sources.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string"
                    },
                    "filter": {
                      "description": "Optional. The filter request.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "vmmigration.projects.locations.sources.list",
                  "path": "v1alpha1/{+parent}/sources",
                  "description": "Lists Sources in a given project and location."
                },
                "patch": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Output only. The Source name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                      "type": "string"
                    },
                    "updateMask": {
                      "location": "query",
                      "type": "string",
                      "description": "Field mask is used to specify the fields to be overwritten in the Source resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
                      "format": "google-fieldmask"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "A 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 since 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)."
                    }
                  },
                  "request": {
                    "$ref": "Source"
                  },
                  "id": "vmmigration.projects.locations.sources.patch",
                  "path": "v1alpha1/{+name}",
                  "description": "Updates the parameters of a single Source.",
                  "httpMethod": "PATCH"
                },
                "create": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources",
                  "parameterOrder": [
                    "parent"
                  ],
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "description": "Required. The Source's parent.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "requestId": {
                      "description": "A 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 since 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).",
                      "location": "query",
                      "type": "string"
                    },
                    "sourceId": {
                      "description": "Required. The source identifier.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "request": {
                    "$ref": "Source"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "path": "v1alpha1/{+parent}/sources",
                  "id": "vmmigration.projects.locations.sources.create",
                  "description": "Creates a new Source in a given project and location."
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The Source name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "Source"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Gets details of a single Source.",
                  "path": "v1alpha1/{+name}",
                  "id": "vmmigration.projects.locations.sources.get",
                  "httpMethod": "GET"
                },
                "delete": {
                  "httpMethod": "DELETE",
                  "id": "vmmigration.projects.locations.sources.delete",
                  "path": "v1alpha1/{+name}",
                  "description": "Deletes a single Source.",
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The Source name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A 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)."
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "fetchInventory": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}:fetchInventory",
                  "parameterOrder": [
                    "source"
                  ],
                  "response": {
                    "$ref": "FetchInventoryResponse"
                  },
                  "parameters": {
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "The maximum number of VMs to return. The service may return fewer than this value. For AWS source: If unspecified, at most 500 VMs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000. For VMWare source: If unspecified, all VMs will be returned. There is no limit for maximum value."
                    },
                    "source": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the Source.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
                      "type": "string"
                    },
                    "forceRefresh": {
                      "location": "query",
                      "type": "boolean",
                      "description": "If this flag is set to true, the source will be queried instead of using cached results. Using this flag will make the call slower."
                    },
                    "pageToken": {
                      "description": "A page token, received from a previous `FetchInventory` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `FetchInventory` must match the call that provided the page token.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "vmmigration.projects.locations.sources.fetchInventory",
                  "path": "v1alpha1/{+source}:fetchInventory",
                  "description": "List remote source's inventory of VMs. The remote source is the onprem vCenter (remote in the sense it's not in Compute Engine). The inventory describes the list of existing VMs in that source. Note that this operation lists the VMs on the remote source, as opposed to listing the MigratingVms resources in the vmmigration service."
                }
              }
            },
            "imageImports": {
              "methods": {
                "list": {
                  "path": "v1alpha1/{+parent}/imageImports",
                  "id": "vmmigration.projects.locations.imageImports.list",
                  "description": "Lists ImageImports in a given project.",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports",
                  "parameterOrder": [
                    "parent"
                  ],
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "description": "Required. The parent, which owns this collection of targets.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. The filter request (according to AIP-160)."
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "description": "Optional. The maximum number of targets to return. The service may return fewer than this value. If unspecified, at most 500 targets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "format": "int32"
                    },
                    "orderBy": {
                      "description": "Optional. The order by fields for the result (according to AIP-132). Currently ordering is only possible by \"name\" field.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageToken": {
                      "description": "Optional. A page token, received from a previous `ListImageImports` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListImageImports` must match the call that provided the page token.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "ListImageImportsResponse"
                  }
                },
                "create": {
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports",
                  "parameterOrder": [
                    "parent"
                  ],
                  "parameters": {
                    "parent": {
                      "description": "Required. The ImageImport's parent.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A 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 since 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)."
                    },
                    "imageImportId": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. The image import identifier. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen."
                    }
                  },
                  "request": {
                    "$ref": "ImageImport"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "path": "v1alpha1/{+parent}/imageImports",
                  "id": "vmmigration.projects.locations.imageImports.create",
                  "description": "Creates a new ImageImport in a given project."
                },
                "get": {
                  "description": "Gets details of a single ImageImport.",
                  "path": "v1alpha1/{+name}",
                  "id": "vmmigration.projects.locations.imageImports.get",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The ImageImport name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "ImageImport"
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}",
                  "parameterOrder": [
                    "name"
                  ]
                },
                "delete": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "description": "Required. The ImageImport name.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A 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 t he 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)."
                    }
                  },
                  "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Deletes a single ImageImport.",
                  "id": "vmmigration.projects.locations.imageImports.delete",
                  "path": "v1alpha1/{+name}",
                  "httpMethod": "DELETE"
                }
              },
              "resources": {
                "imageImportJobs": {
                  "methods": {
                    "list": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "ListImageImportJobsResponse"
                      },
                      "parameters": {
                        "filter": {
                          "description": "Optional. The filter request (according to AIP-160).",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "type": "string",
                          "description": "Required. The parent, which owns this collection of targets.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+$",
                          "location": "path",
                          "required": true
                        },
                        "orderBy": {
                          "description": "Optional. The order by fields for the result (according to AIP-132). Currently ordering is only possible by \"name\" field.",
                          "location": "query",
                          "type": "string"
                        },
                        "pageSize": {
                          "description": "Optional. The maximum number of targets to return. The service may return fewer than this value. If unspecified, at most 500 targets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                          "format": "int32",
                          "location": "query",
                          "type": "integer"
                        },
                        "pageToken": {
                          "description": "Optional. A page token, received from a previous `ListImageImportJobs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListImageImportJobs` must match the call that provided the page token.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}/imageImportJobs",
                      "parameterOrder": [
                        "parent"
                      ],
                      "description": "Lists ImageImportJobs in a given project.",
                      "id": "vmmigration.projects.locations.imageImports.imageImportJobs.list",
                      "path": "v1alpha1/{+parent}/imageImportJobs",
                      "httpMethod": "GET"
                    },
                    "cancel": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The image import job id.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+/imageImportJobs/[^/]+$",
                          "type": "string"
                        }
                      },
                      "request": {
                        "$ref": "CancelImageImportJobRequest"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}/imageImportJobs/{imageImportJobsId}:cancel",
                      "parameterOrder": [
                        "name"
                      ],
                      "description": "Initiates the cancellation of a running ImageImportJob.",
                      "path": "v1alpha1/{+name}:cancel",
                      "id": "vmmigration.projects.locations.imageImports.imageImportJobs.cancel",
                      "httpMethod": "POST"
                    },
                    "get": {
                      "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}/imageImportJobs/{imageImportJobsId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "ImageImportJob"
                      },
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The ImageImportJob name.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+/imageImportJobs/[^/]+$",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "GET",
                      "id": "vmmigration.projects.locations.imageImports.imageImportJobs.get",
                      "path": "v1alpha1/{+name}",
                      "description": "Gets details of a single ImageImportJob."
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "id": "vmmigration:v1alpha1",
  "mtlsRootUrl": "https://vmmigration.mtls.googleapis.com/",
  "rootUrl": "https://vmmigration.googleapis.com/",
  "servicePath": "",
  "protocol": "rest"
}
