// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Generated by the C++ microgenerator.
// If you make any local changes, they will be lost.
// file:///workspace/generator/discovery/compute_public_google_rest_v1.json
// revision: 20231110

syntax = "proto3";

package google.cloud.cpp.compute.disks.v1;

import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/cloud/compute/v1/internal/common_007.proto";
import "google/cloud/compute/v1/internal/common_014.proto";
import "google/cloud/compute/v1/internal/common_016.proto";
import "google/cloud/compute/v1/internal/common_023.proto";
import "google/cloud/compute/v1/internal/common_110.proto";
import "google/cloud/compute/v1/internal/common_131.proto";
import "google/cloud/compute/v1/internal/common_136.proto";
import "google/cloud/extended_operations.proto";

// Service for the disks resource.
// https://cloud.google.com/compute/docs/reference/rest/v1/disks
service Disks {
  option (google.api.default_host) = "compute.googleapis.com";
  option (google.api.oauth_scopes) =
      "https://www.googleapis.com/auth/cloud-platform,"
      "https://www.googleapis.com/auth/compute,"
      "https://www.googleapis.com/auth/compute.readonly";

  // Adds existing resource policies to a disk. You can only add one policy
  // which will be applied to this disk for scheduling snapshot creation.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/addResourcePolicies
  rpc AddResourcePolicies(AddResourcePoliciesRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/addResourcePolicies"
      body: "disks_add_resource_policies_request_resource"
    };
    option (google.api.method_signature) =
        "project,zone,disk,disks_add_resource_policies_request_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Retrieves an aggregated list of persistent disks.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/aggregatedList
  rpc AggregatedListDisks(AggregatedListDisksRequest)
      returns (google.cloud.cpp.compute.v1.DiskAggregatedList) {
    option (google.api.http) = {
      get: "/compute/v1/projects/{project}/aggregated/disks"
    };
    option (google.api.method_signature) = "project";
  }

  // Bulk create a set of disks.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/bulkInsert
  rpc BulkInsert(BulkInsertRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/bulkInsert"
      body: "bulk_insert_disk_resource"
    };
    option (google.api.method_signature) =
        "project,zone,bulk_insert_disk_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Creates a snapshot of a specified persistent disk. For regular snapshot
  // creation, consider using snapshots.insert instead, as that method supports
  // more features, such as creating snapshots in a project different from the
  // source disk project.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/createSnapshot
  rpc CreateSnapshot(CreateSnapshotRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/createSnapshot"
      body: "snapshot_resource"
    };
    option (google.api.method_signature) =
        "project,zone,disk,snapshot_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Deletes the specified persistent disk. Deleting a disk removes its data
  // permanently and is irreversible. However, deleting a disk does not delete
  // any snapshots previously made from the disk. You must separately delete
  // snapshots.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/delete
  rpc DeleteDisk(DeleteDiskRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      delete: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
    };
    option (google.api.method_signature) = "project,zone,disk";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Returns the specified persistent disk.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/get
  rpc GetDisk(GetDiskRequest) returns (google.cloud.cpp.compute.v1.Disk) {
    option (google.api.http) = {
      get: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
    };
    option (google.api.method_signature) = "project,zone,disk";
  }

  // Gets the access control policy for a resource. May be empty if no such
  // policy or resource exists.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/getIamPolicy
  rpc GetIamPolicy(GetIamPolicyRequest)
      returns (google.cloud.cpp.compute.v1.Policy) {
    option (google.api.http) = {
      get: "/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/getIamPolicy"
    };
    option (google.api.method_signature) = "project,zone,resource";
  }

  // Creates a persistent disk in the specified project using the data in the
  // request. You can create a disk from a source (sourceImage, sourceSnapshot,
  // or sourceDisk) or create an empty 500 GB data disk by omitting all
  // properties. You can also create a disk that is larger than the default size
  // by specifying the sizeGb property.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/insert
  rpc InsertDisk(InsertDiskRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks"
      body: "disk_resource"
    };
    option (google.api.method_signature) = "project,zone,disk_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Retrieves a list of persistent disks contained within the specified zone.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/list
  rpc ListDisks(ListDisksRequest)
      returns (google.cloud.cpp.compute.v1.DiskList) {
    option (google.api.http) = {
      get: "/compute/v1/projects/{project}/zones/{zone}/disks"
    };
    option (google.api.method_signature) = "project,zone";
  }

  // Removes resource policies from a disk.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/removeResourcePolicies
  rpc RemoveResourcePolicies(RemoveResourcePoliciesRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/removeResourcePolicies"
      body: "disks_remove_resource_policies_request_resource"
    };
    option (google.api.method_signature) =
        "project,zone,disk,disks_remove_resource_policies_request_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Resizes the specified persistent disk. You can only increase the size of
  // the disk.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/resize
  rpc Resize(ResizeRequest) returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/resize"
      body: "disks_resize_request_resource"
    };
    option (google.api.method_signature) =
        "project,zone,disk,disks_resize_request_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Sets the access control policy on the specified resource. Replaces any
  // existing policy.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/setIamPolicy
  rpc SetIamPolicy(SetIamPolicyRequest)
      returns (google.cloud.cpp.compute.v1.Policy) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setIamPolicy"
      body: "zone_set_policy_request_resource"
    };
    option (google.api.method_signature) =
        "project,zone,resource,zone_set_policy_request_resource";
  }

  // Sets the labels on a disk. To learn more about labels, read the Labeling
  // Resources documentation.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/setLabels
  rpc SetLabels(SetLabelsRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setLabels"
      body: "zone_set_labels_request_resource"
    };
    option (google.api.method_signature) =
        "project,zone,resource,zone_set_labels_request_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Starts asynchronous replication. Must be invoked on the primary disk.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/startAsyncReplication
  rpc StartAsyncReplication(StartAsyncReplicationRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/startAsyncReplication"
      body: "disks_start_async_replication_request_resource"
    };
    option (google.api.method_signature) =
        "project,zone,disk,disks_start_async_replication_request_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Stops asynchronous replication. Can be invoked either on the primary or on
  // the secondary disk.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/stopAsyncReplication
  rpc StopAsyncReplication(StopAsyncReplicationRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/stopAsyncReplication"
      body: "*"
    };
    option (google.api.method_signature) = "project,zone,disk";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Stops asynchronous replication for a consistency group of disks. Can be
  // invoked either in the primary or secondary scope.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/stopGroupAsyncReplication
  rpc StopGroupAsyncReplication(StopGroupAsyncReplicationRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/stopGroupAsyncReplication"
      body: "disks_stop_group_async_replication_resource"
    };
    option (google.api.method_signature) =
        "project,zone,disks_stop_group_async_replication_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }

  // Returns permissions that a caller has on the specified resource.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/testIamPermissions
  rpc TestIamPermissions(TestIamPermissionsRequest)
      returns (google.cloud.cpp.compute.v1.TestPermissionsResponse) {
    option (google.api.http) = {
      post: "/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/testIamPermissions"
      body: "test_permissions_request_resource"
    };
    option (google.api.method_signature) =
        "project,zone,resource,test_permissions_request_resource";
  }

  // Updates the specified disk with the data included in the request. The
  // update is performed only on selected fields included as part of
  // update-mask. Only the following fields can be modified: user_license.
  // https://cloud.google.com/compute/docs/reference/rest/v1/disks/update
  rpc UpdateDisk(UpdateDiskRequest)
      returns (google.cloud.cpp.compute.v1.Operation) {
    option (google.api.http) = {
      patch: "/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
      body: "disk_resource"
    };
    option (google.api.method_signature) =
        "project,zone,disk,update_mask,disk_resource";
    option (google.cloud.operation_service) = "ZoneOperations";
  }
}

// Request message for AddResourcePolicies.
message AddResourcePoliciesRequest {
  // The disk name for this request.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // The DisksAddResourcePoliciesRequest for this request.
  optional google.cloud.cpp.compute.v1.DisksAddResourcePoliciesRequest
      disks_add_resource_policies_request_resource = 2
      [json_name = "__json_request_body"];

  // Project ID for this request.
  string project = 3 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 4 [json_name = "requestId"];

  // The name of the zone for this request.
  string zone = 5 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for AggregatedListDisks.
message AggregatedListDisksRequest {
  // A filter expression that filters resources listed in the response. Most
  // Compute resources support two types of filter expressions: expressions that
  // support regular expressions and expressions that follow API improvement
  // proposal AIP-160. These two types of filter expressions cannot be mixed in
  // one request. If you want to use AIP-160, your expression must specify the
  // field name, an operator, and the value that you want to use for filtering.
  // The value must be a string, a number, or a boolean. The operator must be
  // either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`. For example, if you are
  // filtering Compute Engine instances, you can exclude instances named
  // `example-instance` by specifying `name != example-instance`. The `:*`
  // comparison can be used to test whether a key has been defined. For example,
  // to find all objects with `owner` label use: ``` labels.owner:* ``` You can
  // also filter nested fields. For example, you could specify
  // `scheduling.automaticRestart = false` to include instances only if they are
  // not scheduled for automatic restarts. You can use filtering on nested
  // fields to filter based on resource labels. To filter on multiple
  // expressions, provide each separate expression within parentheses. For
  // example: ``` (scheduling.automaticRestart = true) (cpuPlatform = "Intel
  // Skylake") ``` By default, each expression is an `AND` expression. However,
  // you can include `AND` and `OR` expressions explicitly. For example: ```
  // (cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND
  // (scheduling.automaticRestart = true) ``` If you want to use a regular
  // expression, use the `eq` (equal) or `ne` (not equal) operator against a
  // single un-parenthesized expression with or without quotes or against
  // multiple parenthesized expressions. Examples: `fieldname eq unquoted
  // literal` `fieldname eq 'single quoted literal'` `fieldname eq "double
  // quoted literal"` `(fieldname1 eq literal) (fieldname2 ne "literal")` The
  // literal value is interpreted as a regular expression using Google RE2
  // library syntax. The literal value must match the entire field. For example,
  // to filter for instances that do not end with name "instance", you would use
  // `name ne .*instance`. You cannot combine constraints on multiple fields
  // using regular expressions.
  optional string filter = 1 [json_name = "filter"];

  // Indicates whether every visible scope for each scope type (zone, region,
  // global) should be included in the response. For new resource types added
  // after this field, the flag has no effect as new resource types will always
  // include every visible scope for each scope type in response. For resource
  // types which predate this field, if this flag is omitted or false, only
  // scopes of the scope types where the resource type is expected to be found
  // will be included.
  optional bool include_all_scopes = 2 [json_name = "includeAllScopes"];

  // The maximum number of results per page that should be returned. If the
  // number of available results is larger than `maxResults`, Compute Engine
  // returns a `nextPageToken` that can be used to get the next page of results
  // in subsequent list requests. Acceptable values are `0` to `500`, inclusive.
  // (Default: `500`)
  optional uint32 max_results = 3 [json_name = "maxResults"];

  // Sorts list results by a certain order. By default, results are returned in
  // alphanumerical order based on the resource name. You can also sort results
  // in descending order based on the creation timestamp using
  // `orderBy="creationTimestamp desc"`. This sorts results based on the
  // `creationTimestamp` field in reverse chronological order (newest result
  // first). Use this to sort resources like operations so that the newest
  // operation is returned first. Currently, only sorting by `name` or
  // `creationTimestamp desc` is supported.
  optional string order_by = 4 [json_name = "orderBy"];

  // Specifies a page token to use. Set `pageToken` to the `nextPageToken`
  // returned by a previous list request to get the next page of results.
  optional string page_token = 5 [json_name = "pageToken"];

  // Project ID for this request.
  string project = 6
      [(google.api.field_behavior) = REQUIRED, json_name = "project"];

  // Opt-in for partial success behavior which provides partial results in case
  // of failure. The default value is false.
  optional bool return_partial_success = 7 [json_name = "returnPartialSuccess"];

  optional string service_project_number = 8
      [json_name = "serviceProjectNumber"];
}

// Request message for BulkInsert.
message BulkInsertRequest {
  // The BulkInsertDiskResource for this request.
  optional google.cloud.cpp.compute.v1.BulkInsertDiskResource
      bulk_insert_disk_resource = 1 [json_name = "__json_request_body"];

  // Project ID for this request.
  string project = 2 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 3 [json_name = "requestId"];

  // The name of the zone for this request.
  string zone = 4 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for CreateSnapshot.
message CreateSnapshotRequest {
  // Name of the persistent disk to snapshot.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // [Input Only] Whether to attempt an application consistent snapshot by
  // informing the OS to prepare for the snapshot process.
  optional bool guest_flush = 2 [json_name = "guestFlush"];

  // Project ID for this request.
  string project = 3 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 4 [json_name = "requestId"];

  // The Snapshot for this request.
  optional google.cloud.cpp.compute.v1.Snapshot snapshot_resource = 5
      [json_name = "__json_request_body"];

  // The name of the zone for this request.
  string zone = 6 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for DeleteDisk.
message DeleteDiskRequest {
  // Name of the persistent disk to delete.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // Project ID for this request.
  string project = 2 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 3 [json_name = "requestId"];

  // The name of the zone for this request.
  string zone = 4 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for GetDisk.
message GetDiskRequest {
  // Name of the persistent disk to return.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // Project ID for this request.
  string project = 2
      [(google.api.field_behavior) = REQUIRED, json_name = "project"];

  // The name of the zone for this request.
  string zone = 3 [(google.api.field_behavior) = REQUIRED, json_name = "zone"];
}

// Request message for GetIamPolicy.
message GetIamPolicyRequest {
  // Requested IAM Policy version.
  optional int32 options_requested_policy_version = 1
      [json_name = "optionsRequestedPolicyVersion"];

  // Project ID for this request.
  string project = 2
      [(google.api.field_behavior) = REQUIRED, json_name = "project"];

  // Name or id of the resource for this request.
  string resource = 3
      [(google.api.field_behavior) = REQUIRED, json_name = "resource"];

  // The name of the zone for this request.
  string zone = 4 [(google.api.field_behavior) = REQUIRED, json_name = "zone"];
}

// Request message for InsertDisk.
message InsertDiskRequest {
  // The Disk for this request.
  optional google.cloud.cpp.compute.v1.Disk disk_resource = 1
      [json_name = "__json_request_body"];

  // Project ID for this request.
  string project = 2 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 3 [json_name = "requestId"];

  // Source image to restore onto a disk. This field is optional.
  optional string source_image = 4 [json_name = "sourceImage"];

  // The name of the zone for this request.
  string zone = 5 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for ListDisks.
message ListDisksRequest {
  // A filter expression that filters resources listed in the response. Most
  // Compute resources support two types of filter expressions: expressions that
  // support regular expressions and expressions that follow API improvement
  // proposal AIP-160. These two types of filter expressions cannot be mixed in
  // one request. If you want to use AIP-160, your expression must specify the
  // field name, an operator, and the value that you want to use for filtering.
  // The value must be a string, a number, or a boolean. The operator must be
  // either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`. For example, if you are
  // filtering Compute Engine instances, you can exclude instances named
  // `example-instance` by specifying `name != example-instance`. The `:*`
  // comparison can be used to test whether a key has been defined. For example,
  // to find all objects with `owner` label use: ``` labels.owner:* ``` You can
  // also filter nested fields. For example, you could specify
  // `scheduling.automaticRestart = false` to include instances only if they are
  // not scheduled for automatic restarts. You can use filtering on nested
  // fields to filter based on resource labels. To filter on multiple
  // expressions, provide each separate expression within parentheses. For
  // example: ``` (scheduling.automaticRestart = true) (cpuPlatform = "Intel
  // Skylake") ``` By default, each expression is an `AND` expression. However,
  // you can include `AND` and `OR` expressions explicitly. For example: ```
  // (cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND
  // (scheduling.automaticRestart = true) ``` If you want to use a regular
  // expression, use the `eq` (equal) or `ne` (not equal) operator against a
  // single un-parenthesized expression with or without quotes or against
  // multiple parenthesized expressions. Examples: `fieldname eq unquoted
  // literal` `fieldname eq 'single quoted literal'` `fieldname eq "double
  // quoted literal"` `(fieldname1 eq literal) (fieldname2 ne "literal")` The
  // literal value is interpreted as a regular expression using Google RE2
  // library syntax. The literal value must match the entire field. For example,
  // to filter for instances that do not end with name "instance", you would use
  // `name ne .*instance`. You cannot combine constraints on multiple fields
  // using regular expressions.
  optional string filter = 1 [json_name = "filter"];

  // The maximum number of results per page that should be returned. If the
  // number of available results is larger than `maxResults`, Compute Engine
  // returns a `nextPageToken` that can be used to get the next page of results
  // in subsequent list requests. Acceptable values are `0` to `500`, inclusive.
  // (Default: `500`)
  optional uint32 max_results = 2 [json_name = "maxResults"];

  // Sorts list results by a certain order. By default, results are returned in
  // alphanumerical order based on the resource name. You can also sort results
  // in descending order based on the creation timestamp using
  // `orderBy="creationTimestamp desc"`. This sorts results based on the
  // `creationTimestamp` field in reverse chronological order (newest result
  // first). Use this to sort resources like operations so that the newest
  // operation is returned first. Currently, only sorting by `name` or
  // `creationTimestamp desc` is supported.
  optional string order_by = 3 [json_name = "orderBy"];

  // Specifies a page token to use. Set `pageToken` to the `nextPageToken`
  // returned by a previous list request to get the next page of results.
  optional string page_token = 4 [json_name = "pageToken"];

  // Project ID for this request.
  string project = 5
      [(google.api.field_behavior) = REQUIRED, json_name = "project"];

  // Opt-in for partial success behavior which provides partial results in case
  // of failure. The default value is false.
  optional bool return_partial_success = 6 [json_name = "returnPartialSuccess"];

  // The name of the zone for this request.
  string zone = 7 [(google.api.field_behavior) = REQUIRED, json_name = "zone"];
}

// Request message for RemoveResourcePolicies.
message RemoveResourcePoliciesRequest {
  // The disk name for this request.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // The DisksRemoveResourcePoliciesRequest for this request.
  optional google.cloud.cpp.compute.v1.DisksRemoveResourcePoliciesRequest
      disks_remove_resource_policies_request_resource = 2
      [json_name = "__json_request_body"];

  // Project ID for this request.
  string project = 3 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 4 [json_name = "requestId"];

  // The name of the zone for this request.
  string zone = 5 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for Resize.
message ResizeRequest {
  // The name of the persistent disk.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // The DisksResizeRequest for this request.
  optional google.cloud.cpp.compute.v1.DisksResizeRequest
      disks_resize_request_resource = 2 [json_name = "__json_request_body"];

  // Project ID for this request.
  string project = 3 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 4 [json_name = "requestId"];

  // The name of the zone for this request.
  string zone = 5 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for SetIamPolicy.
message SetIamPolicyRequest {
  // Project ID for this request.
  string project = 1
      [(google.api.field_behavior) = REQUIRED, json_name = "project"];

  // Name or id of the resource for this request.
  string resource = 2
      [(google.api.field_behavior) = REQUIRED, json_name = "resource"];

  // The name of the zone for this request.
  string zone = 3 [(google.api.field_behavior) = REQUIRED, json_name = "zone"];

  // The ZoneSetPolicyRequest for this request.
  optional google.cloud.cpp.compute.v1.ZoneSetPolicyRequest
      zone_set_policy_request_resource = 4 [json_name = "__json_request_body"];
}

// Request message for SetLabels.
message SetLabelsRequest {
  // Project ID for this request.
  string project = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 2 [json_name = "requestId"];

  // Name or id of the resource for this request.
  string resource = 3
      [(google.api.field_behavior) = REQUIRED, json_name = "resource"];

  // The name of the zone for this request.
  string zone = 4 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];

  // The ZoneSetLabelsRequest for this request.
  optional google.cloud.cpp.compute.v1.ZoneSetLabelsRequest
      zone_set_labels_request_resource = 5 [json_name = "__json_request_body"];
}

// Request message for StartAsyncReplication.
message StartAsyncReplicationRequest {
  // The name of the persistent disk.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // The DisksStartAsyncReplicationRequest for this request.
  optional google.cloud.cpp.compute.v1.DisksStartAsyncReplicationRequest
      disks_start_async_replication_request_resource = 2
      [json_name = "__json_request_body"];

  // Project ID for this request.
  string project = 3 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 4 [json_name = "requestId"];

  // The name of the zone for this request.
  string zone = 5 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for StopAsyncReplication.
message StopAsyncReplicationRequest {
  // The name of the persistent disk.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // Project ID for this request.
  string project = 2 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 3 [json_name = "requestId"];

  // The name of the zone for this request.
  string zone = 4 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for StopGroupAsyncReplication.
message StopGroupAsyncReplicationRequest {
  // The DisksStopGroupAsyncReplicationResource for this request.
  optional google.cloud.cpp.compute.v1.DisksStopGroupAsyncReplicationResource
      disks_stop_group_async_replication_resource = 1
      [json_name = "__json_request_body"];

  // Project ID for this request.
  string project = 2 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 3 [json_name = "requestId"];

  // The name of the zone for this request. This must be the zone of the primary
  // or secondary disks in the consistency group.
  string zone = 4 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}

// Request message for TestIamPermissions.
message TestIamPermissionsRequest {
  // Project ID for this request.
  string project = 1
      [(google.api.field_behavior) = REQUIRED, json_name = "project"];

  // Name or id of the resource for this request.
  string resource = 2
      [(google.api.field_behavior) = REQUIRED, json_name = "resource"];

  // The TestPermissionsRequest for this request.
  optional google.cloud.cpp.compute.v1.TestPermissionsRequest
      test_permissions_request_resource = 3 [json_name = "__json_request_body"];

  // The name of the zone for this request.
  string zone = 4 [(google.api.field_behavior) = REQUIRED, json_name = "zone"];
}

// Request message for UpdateDisk.
message UpdateDiskRequest {
  // The disk name for this request.
  string disk = 1 [(google.api.field_behavior) = REQUIRED, json_name = "disk"];

  // The Disk for this request.
  optional google.cloud.cpp.compute.v1.Disk disk_resource = 2
      [json_name = "__json_request_body"];

  optional string paths = 3 [json_name = "paths"];

  // Project ID for this request.
  string project = 4 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "project",
    json_name = "project"
  ];

  // An optional request ID to identify requests. Specify a unique request ID so
  // that if you must retry your request, the server will know to ignore the
  // request if it has already been completed. 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).
  optional string request_id = 5 [json_name = "requestId"];

  // update_mask indicates fields to be updated as part of this request.
  optional string update_mask = 6 [json_name = "updateMask"];

  // The name of the zone for this request.
  string zone = 7 [
    (google.api.field_behavior) = REQUIRED,
    (google.cloud.operation_request_field) = "zone",
    json_name = "zone"
  ];
}
