Repository: googleapis/java-storage
Pull request #1220 (2022-02-01 19:49:33)

feat!: Update definition of RewriteObjectRequest to bring to parity with JSON API support
- [ ] Regenerate this pull request now.

PiperOrigin-RevId: 425656197

Source-Link: https://github.com/googleapis/googleapis/commit/903e011f0c0f356f6f54c051e4bda5eec0e2d8e3

Source-Link: https://github.com/googleapis/googleapis-gen/commit/b9bdb527cf669c47f21f3bce37bbfd3d8eaa1ac4
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYjliZGI1MjdjZjY2OWM0N2YyMWYzYmNlMzdiYmZkM2Q4ZWFhMWFjNCJ9


Patch:
diff --git a/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java b/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java
index 7965a7b2..45f49f59 100644
--- a/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java
+++ b/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java
@@ -2230,7 +2230,9 @@ public class StorageClient implements BackgroundResource {
    *       RewriteObjectRequest.newBuilder()
    *           .setDestinationName("destinationName-1762755655")
    *           .setDestinationBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString())
-   *           .setDestinationCustomerEncryption(CustomerEncryption.newBuilder().build())
+   *           .setDestinationKmsKey(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
    *           .setDestination(Object.newBuilder().build())
    *           .setSourceBucket("sourceBucket841604581")
    *           .setSourceObject("sourceObject1196439354")
@@ -2275,7 +2277,9 @@ public class StorageClient implements BackgroundResource {
    *       RewriteObjectRequest.newBuilder()
    *           .setDestinationName("destinationName-1762755655")
    *           .setDestinationBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString())
-   *           .setDestinationCustomerEncryption(CustomerEncryption.newBuilder().build())
+   *           .setDestinationKmsKey(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
    *           .setDestination(Object.newBuilder().build())
    *           .setSourceBucket("sourceBucket841604581")
    *           .setSourceObject("sourceObject1196439354")
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java
index 31fa725c..c3364402 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java
@@ -2636,8 +2636,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * A Cloud KMS key that will be used to encrypt objects inserted into this
-     * bucket, if no encryption method is specified.
+     * The name of the Cloud KMS key that will be used to encrypt objects
+     * inserted into this bucket, if no encryption method is specified.
      * </pre>
      *
      * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -2649,8 +2649,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * A Cloud KMS key that will be used to encrypt objects inserted into this
-     * bucket, if no encryption method is specified.
+     * The name of the Cloud KMS key that will be used to encrypt objects
+     * inserted into this bucket, if no encryption method is specified.
      * </pre>
      *
      * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -2758,8 +2758,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * A Cloud KMS key that will be used to encrypt objects inserted into this
-     * bucket, if no encryption method is specified.
+     * The name of the Cloud KMS key that will be used to encrypt objects
+     * inserted into this bucket, if no encryption method is specified.
      * </pre>
      *
      * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -2782,8 +2782,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * A Cloud KMS key that will be used to encrypt objects inserted into this
-     * bucket, if no encryption method is specified.
+     * The name of the Cloud KMS key that will be used to encrypt objects
+     * inserted into this bucket, if no encryption method is specified.
      * </pre>
      *
      * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -3127,8 +3127,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
        *
        *
        * <pre>
-       * A Cloud KMS key that will be used to encrypt objects inserted into this
-       * bucket, if no encryption method is specified.
+       * The name of the Cloud KMS key that will be used to encrypt objects
+       * inserted into this bucket, if no encryption method is specified.
        * </pre>
        *
        * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -3150,8 +3150,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
        *
        *
        * <pre>
-       * A Cloud KMS key that will be used to encrypt objects inserted into this
-       * bucket, if no encryption method is specified.
+       * The name of the Cloud KMS key that will be used to encrypt objects
+       * inserted into this bucket, if no encryption method is specified.
        * </pre>
        *
        * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -3173,8 +3173,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
        *
        *
        * <pre>
-       * A Cloud KMS key that will be used to encrypt objects inserted into this
-       * bucket, if no encryption method is specified.
+       * The name of the Cloud KMS key that will be used to encrypt objects
+       * inserted into this bucket, if no encryption method is specified.
        * </pre>
        *
        * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -3195,8 +3195,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
        *
        *
        * <pre>
-       * A Cloud KMS key that will be used to encrypt objects inserted into this
-       * bucket, if no encryption method is specified.
+       * The name of the Cloud KMS key that will be used to encrypt objects
+       * inserted into this bucket, if no encryption method is specified.
        * </pre>
        *
        * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
@@ -3213,8 +3213,8 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
        *
        *
        * <pre>
-       * A Cloud KMS key that will be used to encrypt objects inserted into this
-       * bucket, if no encryption method is specified.
+       * The name of the Cloud KMS key that will be used to encrypt objects
+       * inserted into this bucket, if no encryption method is specified.
        * </pre>
        *
        * <code>string default_kms_key = 1 [(.google.api.resource_reference) = { ... }</code>
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java
index 3dfad0b8..29aa268b 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java
@@ -129,7 +129,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
    *
    *
    * <pre>
-   * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+   * Encryption algorithm used with the Customer-Supplied Encryption Keys
+   * feature.
    * </pre>
    *
    * <code>string encryption_algorithm = 1;</code>
@@ -152,7 +153,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
    *
    *
    * <pre>
-   * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+   * Encryption algorithm used with the Customer-Supplied Encryption Keys
+   * feature.
    * </pre>
    *
    * <code>string encryption_algorithm = 1;</code>
@@ -178,7 +180,7 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
    *
    *
    * <pre>
-   * Encryption key used with Customer-Supplied Encryption Keys feature.
+   * Encryption key used with the Customer-Supplied Encryption Keys feature.
    * In raw bytes format (not base64-encoded).
    * </pre>
    *
@@ -197,8 +199,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
    *
    *
    * <pre>
-   * SHA256 hash of encryption key used with Customer-Supplied Encryption Keys
-   * feature.
+   * SHA256 hash of encryption key used with the Customer-Supplied Encryption
+   * Keys feature.
    * </pre>
    *
    * <code>bytes encryption_key_sha256_bytes = 5;</code>
@@ -562,7 +564,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+     * Encryption algorithm used with the Customer-Supplied Encryption Keys
+     * feature.
      * </pre>
      *
      * <code>string encryption_algorithm = 1;</code>
@@ -584,7 +587,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+     * Encryption algorithm used with the Customer-Supplied Encryption Keys
+     * feature.
      * </pre>
      *
      * <code>string encryption_algorithm = 1;</code>
@@ -606,7 +610,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+     * Encryption algorithm used with the Customer-Supplied Encryption Keys
+     * feature.
      * </pre>
      *
      * <code>string encryption_algorithm = 1;</code>
@@ -627,7 +632,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+     * Encryption algorithm used with the Customer-Supplied Encryption Keys
+     * feature.
      * </pre>
      *
      * <code>string encryption_algorithm = 1;</code>
@@ -644,7 +650,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+     * Encryption algorithm used with the Customer-Supplied Encryption Keys
+     * feature.
      * </pre>
      *
      * <code>string encryption_algorithm = 1;</code>
@@ -669,7 +676,7 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption key used with Customer-Supplied Encryption Keys feature.
+     * Encryption key used with the Customer-Supplied Encryption Keys feature.
      * In raw bytes format (not base64-encoded).
      * </pre>
      *
@@ -685,7 +692,7 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption key used with Customer-Supplied Encryption Keys feature.
+     * Encryption key used with the Customer-Supplied Encryption Keys feature.
      * In raw bytes format (not base64-encoded).
      * </pre>
      *
@@ -707,7 +714,7 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * Encryption key used with Customer-Supplied Encryption Keys feature.
+     * Encryption key used with the Customer-Supplied Encryption Keys feature.
      * In raw bytes format (not base64-encoded).
      * </pre>
      *
@@ -728,8 +735,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * SHA256 hash of encryption key used with Customer-Supplied Encryption Keys
-     * feature.
+     * SHA256 hash of encryption key used with the Customer-Supplied Encryption
+     * Keys feature.
      * </pre>
      *
      * <code>bytes encryption_key_sha256_bytes = 5;</code>
@@ -744,8 +751,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * SHA256 hash of encryption key used with Customer-Supplied Encryption Keys
-     * feature.
+     * SHA256 hash of encryption key used with the Customer-Supplied Encryption
+     * Keys feature.
      * </pre>
      *
      * <code>bytes encryption_key_sha256_bytes = 5;</code>
@@ -766,8 +773,8 @@ public final class CommonObjectRequestParams extends com.google.protobuf.Generat
      *
      *
      * <pre>
-     * SHA256 hash of encryption key used with Customer-Supplied Encryption Keys
-     * feature.
+     * SHA256 hash of encryption key used with the Customer-Supplied Encryption
+     * Keys feature.
      * </pre>
      *
      * <code>bytes encryption_key_sha256_bytes = 5;</code>
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java
index 753fbeaa..327ae414 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java
@@ -27,7 +27,8 @@ public interface CommonObjectRequestParamsOrBuilder
    *
    *
    * <pre>
-   * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+   * Encryption algorithm used with the Customer-Supplied Encryption Keys
+   * feature.
    * </pre>
    *
    * <code>string encryption_algorithm = 1;</code>
@@ -39,7 +40,8 @@ public interface CommonObjectRequestParamsOrBuilder
    *
    *
    * <pre>
-   * Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+   * Encryption algorithm used with the Customer-Supplied Encryption Keys
+   * feature.
    * </pre>
    *
    * <code>string encryption_algorithm = 1;</code>
@@ -52,7 +54,7 @@ public interface CommonObjectRequestParamsOrBuilder
    *
    *
    * <pre>
-   * Encryption key used with Customer-Supplied Encryption Keys feature.
+   * Encryption key used with the Customer-Supplied Encryption Keys feature.
    * In raw bytes format (not base64-encoded).
    * </pre>
    *
@@ -66,8 +68,8 @@ public interface CommonObjectRequestParamsOrBuilder
    *
    *
    * <pre>
-   * SHA256 hash of encryption key used with Customer-Supplied Encryption Keys
-   * feature.
+   * SHA256 hash of encryption key used with the Customer-Supplied Encryption
+   * Keys feature.
    * </pre>
    *
    * <code>bytes encryption_key_sha256_bytes = 5;</code>
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java
index 72bc8591..f56fe6f9 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java
@@ -22,8 +22,8 @@ package com.google.storage.v2;
  *
  *
  * <pre>
- * Describes the customer-specified mechanism used to store an Object's data at
- * rest.
+ * Describes the Customer-Supplied Encryption Key mechanism used to store an
+ * Object's data at rest.
  * </pre>
  *
  * Protobuf type {@code google.storage.v2.CustomerEncryption}
@@ -357,8 +357,8 @@ public final class CustomerEncryption extends com.google.protobuf.GeneratedMessa
    *
    *
    * <pre>
-   * Describes the customer-specified mechanism used to store an Object's data at
-   * rest.
+   * Describes the Customer-Supplied Encryption Key mechanism used to store an
+   * Object's data at rest.
    * </pre>
    *
    * Protobuf type {@code google.storage.v2.CustomerEncryption}
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java
index b2b257a4..6ea1c551 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java
@@ -1608,7 +1608,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key, if the object is encrypted by
+   * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
    * such a key.
    * </pre>
    *
@@ -1624,7 +1624,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key, if the object is encrypted by
+   * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
    * such a key.
    * </pre>
    *
@@ -1642,7 +1642,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key, if the object is encrypted by
+   * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
    * such a key.
    * </pre>
    *
@@ -6153,7 +6153,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6168,7 +6168,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6189,7 +6189,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6212,7 +6212,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6233,7 +6233,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6260,7 +6260,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6281,7 +6281,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6296,7 +6296,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
@@ -6315,7 +6315,7 @@ public final class Object extends com.google.protobuf.GeneratedMessageV3
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key, if the object is encrypted by
+     * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
      * such a key.
      * </pre>
      *
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java
index 56140e3b..7f6ab46a 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java
@@ -852,7 +852,7 @@ public interface ObjectOrBuilder
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key, if the object is encrypted by
+   * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
    * such a key.
    * </pre>
    *
@@ -865,7 +865,7 @@ public interface ObjectOrBuilder
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key, if the object is encrypted by
+   * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
    * such a key.
    * </pre>
    *
@@ -878,7 +878,7 @@ public interface ObjectOrBuilder
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key, if the object is encrypted by
+   * Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
    * such a key.
    * </pre>
    *
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java
index f29ce456..1a69d9a0 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java
@@ -23,6 +23,13 @@ package com.google.storage.v2;
  *
  * <pre>
  * Request message for RewriteObject.
+ * If the source object is encrypted using a Customer-Supplied Encryption Key
+ * the key information must be provided in the copy_source_encryption_algorithm,
+ * copy_source_encryption_key_bytes, and copy_source_encryption_key_sha256_bytes
+ * fields. If the destination object should be encrypted the keying information
+ * should be provided in the encryption_algorithm, encryption_key_bytes, and
+ * encryption_key_sha256_bytes fields of the
+ * common_object_request_params.customer_encryption field.
  * </pre>
  *
  * Protobuf type {@code google.storage.v2.RewriteObjectRequest}
@@ -40,6 +47,7 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
   private RewriteObjectRequest() {
     destinationName_ = "";
     destinationBucket_ = "";
+    destinationKmsKey_ = "";
     sourceBucket_ = "";
     sourceObject_ = "";
     rewriteToken_ = "";
@@ -243,20 +251,11 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
               destinationBucket_ = s;
               break;
             }
-          case 210:
+          case 218:
             {
-              com.google.storage.v2.CustomerEncryption.Builder subBuilder = null;
-              if (destinationCustomerEncryption_ != null) {
-                subBuilder = destinationCustomerEncryption_.toBuilder();
-              }
-              destinationCustomerEncryption_ =
-                  input.readMessage(
-                      com.google.storage.v2.CustomerEncryption.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(destinationCustomerEncryption_);
-                destinationCustomerEncryption_ = subBuilder.buildPartial();
-              }
+              java.lang.String s = input.readStringRequireUtf8();
 
+              destinationKmsKey_ = s;
               break;
             }
           default:
@@ -408,56 +407,61 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
     }
   }
 
-  public static final int DESTINATION_CUSTOMER_ENCRYPTION_FIELD_NUMBER = 26;
-  private com.google.storage.v2.CustomerEncryption destinationCustomerEncryption_;
+  public static final int DESTINATION_KMS_KEY_FIELD_NUMBER = 27;
+  private volatile java.lang.Object destinationKmsKey_;
   /**
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key for the destination object, if
-   * the object is to be encrypted by such a key.
+   * The name of the Cloud KMS key that will be used to encrypt the destination
+   * object. The Cloud KMS key must be located in same location as the object.
+   * If the parameter is not specified, the request uses the destination
+   * bucket's default encryption key, if any, or else the Google-managed
+   * encryption key.
    * </pre>
    *
-   * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+   * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
    *
-   * @return Whether the destinationCustomerEncryption field is set.
+   * @return The destinationKmsKey.
    */
   @java.lang.Override
-  public boolean hasDestinationCustomerEncryption() {
-    return destinationCustomerEncryption_ != null;
+  public java.lang.String getDestinationKmsKey() {
+    java.lang.Object ref = destinationKmsKey_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      destinationKmsKey_ = s;
+      return s;
+    }
   }
   /**
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key for the destination object, if
-   * the object is to be encrypted by such a key.
+   * The name of the Cloud KMS key that will be used to encrypt the destination
+   * object. The Cloud KMS key must be located in same location as the object.
+   * If the parameter is not specified, the request uses the destination
+   * bucket's default encryption key, if any, or else the Google-managed
+   * encryption key.
    * </pre>
    *
-   * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+   * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
    *
-   * @return The destinationCustomerEncryption.
+   * @return The bytes for destinationKmsKey.
    */
   @java.lang.Override
-  public com.google.storage.v2.CustomerEncryption getDestinationCustomerEncryption() {
-    return destinationCustomerEncryption_ == null
-        ? com.google.storage.v2.CustomerEncryption.getDefaultInstance()
-        : destinationCustomerEncryption_;
-  }
-  /**
-   *
-   *
-   * <pre>
-   * Metadata of customer-supplied encryption key for the destination object, if
-   * the object is to be encrypted by such a key.
-   * </pre>
-   *
-   * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
-   */
-  @java.lang.Override
-  public com.google.storage.v2.CustomerEncryptionOrBuilder
-      getDestinationCustomerEncryptionOrBuilder() {
-    return getDestinationCustomerEncryption();
+  public com.google.protobuf.ByteString getDestinationKmsKeyBytes() {
+    java.lang.Object ref = destinationKmsKey_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+      destinationKmsKey_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   public static final int DESTINATION_FIELD_NUMBER = 1;
@@ -467,9 +471,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    * <pre>
    * Properties of the destination, post-rewrite object.
-   * The `name`, `bucket`, and `customer_encryption` fields must not be
-   * populated (these values are specified in the `destination_name`,
-   * `destination_bucket`, and `destination_customer_encryption` fields).
+   * The `name`, `bucket` and `kms_key` fields must not be populated (these
+   * values are specified in the `destination_name`, `destination_bucket`, and
+   * `destination_kms_key` fields).
    * If `destination` is present it will be used to construct the destination
    * object's metadata; otherwise the destination object's metadata will be
    * copied from the source object.
@@ -488,9 +492,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    * <pre>
    * Properties of the destination, post-rewrite object.
-   * The `name`, `bucket`, and `customer_encryption` fields must not be
-   * populated (these values are specified in the `destination_name`,
-   * `destination_bucket`, and `destination_customer_encryption` fields).
+   * The `name`, `bucket` and `kms_key` fields must not be populated (these
+   * values are specified in the `destination_name`, `destination_bucket`, and
+   * `destination_kms_key` fields).
    * If `destination` is present it will be used to construct the destination
    * object's metadata; otherwise the destination object's metadata will be
    * copied from the source object.
@@ -509,9 +513,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    * <pre>
    * Properties of the destination, post-rewrite object.
-   * The `name`, `bucket`, and `customer_encryption` fields must not be
-   * populated (these values are specified in the `destination_name`,
-   * `destination_bucket`, and `destination_customer_encryption` fields).
+   * The `name`, `bucket` and `kms_key` fields must not be populated (these
+   * values are specified in the `destination_name`, `destination_bucket`, and
+   * `destination_kms_key` fields).
    * If `destination` is present it will be used to construct the destination
    * object's metadata; otherwise the destination object's metadata will be
    * copied from the source object.
@@ -1051,7 +1055,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    *
    * <pre>
-   * The algorithm used to encrypt the source object, if any.
+   * The algorithm used to encrypt the source object, if any. Used if the source
+   * object was encrypted with a Customer-Supplied Encryption Key.
    * </pre>
    *
    * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -1074,7 +1079,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    *
    * <pre>
-   * The algorithm used to encrypt the source object, if any.
+   * The algorithm used to encrypt the source object, if any. Used if the source
+   * object was encrypted with a Customer-Supplied Encryption Key.
    * </pre>
    *
    * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -1100,8 +1106,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    *
    * <pre>
-   * The encryption key used to encrypt the source object, if any.
-   * In raw bytes format (not base64-encoded).
+   * The raw bytes (not base64-encoded) AES-256 encryption key used to encrypt
+   * the source object, if it was encrypted with a Customer-Supplied Encryption
+   * Key.
    * </pre>
    *
    * <code>bytes copy_source_encryption_key_bytes = 21;</code>
@@ -1119,8 +1126,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    *
    * <pre>
-   * The SHA-256 hash of the key used to encrypt the source object, if any.
-   * In raw bytes format (not base64-encoded).
+   * The raw bytes (not base64-encoded) SHA256 hash of the encryption key used
+   * to encrypt the source object, if it was encrypted with a Customer-Supplied
+   * Encryption Key.
    * </pre>
    *
    * <code>bytes copy_source_encryption_key_sha256_bytes = 22;</code>
@@ -1312,8 +1320,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationBucket_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 25, destinationBucket_);
     }
-    if (destinationCustomerEncryption_ != null) {
-      output.writeMessage(26, getDestinationCustomerEncryption());
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationKmsKey_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 27, destinationKmsKey_);
     }
     unknownFields.writeTo(output);
   }
@@ -1404,10 +1412,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationBucket_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(25, destinationBucket_);
     }
-    if (destinationCustomerEncryption_ != null) {
-      size +=
-          com.google.protobuf.CodedOutputStream.computeMessageSize(
-              26, getDestinationCustomerEncryption());
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationKmsKey_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(27, destinationKmsKey_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -1427,12 +1433,7 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
 
     if (!getDestinationName().equals(other.getDestinationName())) return false;
     if (!getDestinationBucket().equals(other.getDestinationBucket())) return false;
-    if (hasDestinationCustomerEncryption() != other.hasDestinationCustomerEncryption())
-      return false;
-    if (hasDestinationCustomerEncryption()) {
-      if (!getDestinationCustomerEncryption().equals(other.getDestinationCustomerEncryption()))
-        return false;
-    }
+    if (!getDestinationKmsKey().equals(other.getDestinationKmsKey())) return false;
     if (hasDestination() != other.hasDestination()) return false;
     if (hasDestination()) {
       if (!getDestination().equals(other.getDestination())) return false;
@@ -1507,10 +1508,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
     hash = (53 * hash) + getDestinationName().hashCode();
     hash = (37 * hash) + DESTINATION_BUCKET_FIELD_NUMBER;
     hash = (53 * hash) + getDestinationBucket().hashCode();
-    if (hasDestinationCustomerEncryption()) {
-      hash = (37 * hash) + DESTINATION_CUSTOMER_ENCRYPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getDestinationCustomerEncryption().hashCode();
-    }
+    hash = (37 * hash) + DESTINATION_KMS_KEY_FIELD_NUMBER;
+    hash = (53 * hash) + getDestinationKmsKey().hashCode();
     if (hasDestination()) {
       hash = (37 * hash) + DESTINATION_FIELD_NUMBER;
       hash = (53 * hash) + getDestination().hashCode();
@@ -1679,6 +1678,13 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
    *
    * <pre>
    * Request message for RewriteObject.
+   * If the source object is encrypted using a Customer-Supplied Encryption Key
+   * the key information must be provided in the copy_source_encryption_algorithm,
+   * copy_source_encryption_key_bytes, and copy_source_encryption_key_sha256_bytes
+   * fields. If the destination object should be encrypted the keying information
+   * should be provided in the encryption_algorithm, encryption_key_bytes, and
+   * encryption_key_sha256_bytes fields of the
+   * common_object_request_params.customer_encryption field.
    * </pre>
    *
    * Protobuf type {@code google.storage.v2.RewriteObjectRequest}
@@ -1723,12 +1729,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
 
       destinationBucket_ = "";
 
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        destinationCustomerEncryption_ = null;
-      } else {
-        destinationCustomerEncryption_ = null;
-        destinationCustomerEncryptionBuilder_ = null;
-      }
+      destinationKmsKey_ = "";
+
       if (destinationBuilder_ == null) {
         destination_ = null;
       } else {
@@ -1812,11 +1814,7 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
       int to_bitField0_ = 0;
       result.destinationName_ = destinationName_;
       result.destinationBucket_ = destinationBucket_;
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        result.destinationCustomerEncryption_ = destinationCustomerEncryption_;
-      } else {
-        result.destinationCustomerEncryption_ = destinationCustomerEncryptionBuilder_.build();
-      }
+      result.destinationKmsKey_ = destinationKmsKey_;
       if (destinationBuilder_ == null) {
         result.destination_ = destination_;
       } else {
@@ -1931,8 +1929,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
         destinationBucket_ = other.destinationBucket_;
         onChanged();
       }
-      if (other.hasDestinationCustomerEncryption()) {
-        mergeDestinationCustomerEncryption(other.getDestinationCustomerEncryption());
+      if (!other.getDestinationKmsKey().isEmpty()) {
+        destinationKmsKey_ = other.destinationKmsKey_;
+        onChanged();
       }
       if (other.hasDestination()) {
         mergeDestination(other.getDestination());
@@ -2281,204 +2280,130 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
       return this;
     }
 
-    private com.google.storage.v2.CustomerEncryption destinationCustomerEncryption_;
-    private com.google.protobuf.SingleFieldBuilderV3<
-            com.google.storage.v2.CustomerEncryption,
-            com.google.storage.v2.CustomerEncryption.Builder,
-            com.google.storage.v2.CustomerEncryptionOrBuilder>
-        destinationCustomerEncryptionBuilder_;
-    /**
-     *
-     *
-     * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
-     * </pre>
-     *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
-     *
-     * @return Whether the destinationCustomerEncryption field is set.
-     */
-    public boolean hasDestinationCustomerEncryption() {
-      return destinationCustomerEncryptionBuilder_ != null
-          || destinationCustomerEncryption_ != null;
-    }
+    private java.lang.Object destinationKmsKey_ = "";
     /**
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
+     * The name of the Cloud KMS key that will be used to encrypt the destination
+     * object. The Cloud KMS key must be located in same location as the object.
+     * If the parameter is not specified, the request uses the destination
+     * bucket's default encryption key, if any, or else the Google-managed
+     * encryption key.
      * </pre>
      *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+     * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
      *
-     * @return The destinationCustomerEncryption.
+     * @return The destinationKmsKey.
      */
-    public com.google.storage.v2.CustomerEncryption getDestinationCustomerEncryption() {
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        return destinationCustomerEncryption_ == null
-            ? com.google.storage.v2.CustomerEncryption.getDefaultInstance()
-            : destinationCustomerEncryption_;
+    public java.lang.String getDestinationKmsKey() {
+      java.lang.Object ref = destinationKmsKey_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        destinationKmsKey_ = s;
+        return s;
       } else {
-        return destinationCustomerEncryptionBuilder_.getMessage();
+        return (java.lang.String) ref;
       }
     }
     /**
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
+     * The name of the Cloud KMS key that will be used to encrypt the destination
+     * object. The Cloud KMS key must be located in same location as the object.
+     * If the parameter is not specified, the request uses the destination
+     * bucket's default encryption key, if any, or else the Google-managed
+     * encryption key.
      * </pre>
      *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
-     */
-    public Builder setDestinationCustomerEncryption(
-        com.google.storage.v2.CustomerEncryption value) {
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        destinationCustomerEncryption_ = value;
-        onChanged();
-      } else {
-        destinationCustomerEncryptionBuilder_.setMessage(value);
-      }
-
-      return this;
-    }
-    /**
-     *
+     * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
      *
-     * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
-     * </pre>
-     *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+     * @return The bytes for destinationKmsKey.
      */
-    public Builder setDestinationCustomerEncryption(
-        com.google.storage.v2.CustomerEncryption.Builder builderForValue) {
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        destinationCustomerEncryption_ = builderForValue.build();
-        onChanged();
+    public com.google.protobuf.ByteString getDestinationKmsKeyBytes() {
+      java.lang.Object ref = destinationKmsKey_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b =
+            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+        destinationKmsKey_ = b;
+        return b;
       } else {
-        destinationCustomerEncryptionBuilder_.setMessage(builderForValue.build());
+        return (com.google.protobuf.ByteString) ref;
       }
-
-      return this;
     }
     /**
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
+     * The name of the Cloud KMS key that will be used to encrypt the destination
+     * object. The Cloud KMS key must be located in same location as the object.
+     * If the parameter is not specified, the request uses the destination
+     * bucket's default encryption key, if any, or else the Google-managed
+     * encryption key.
      * </pre>
      *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
-     */
-    public Builder mergeDestinationCustomerEncryption(
-        com.google.storage.v2.CustomerEncryption value) {
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        if (destinationCustomerEncryption_ != null) {
-          destinationCustomerEncryption_ =
-              com.google.storage.v2.CustomerEncryption.newBuilder(destinationCustomerEncryption_)
-                  .mergeFrom(value)
-                  .buildPartial();
-        } else {
-          destinationCustomerEncryption_ = value;
-        }
-        onChanged();
-      } else {
-        destinationCustomerEncryptionBuilder_.mergeFrom(value);
-      }
-
-      return this;
-    }
-    /**
-     *
+     * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
      *
-     * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
-     * </pre>
-     *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+     * @param value The destinationKmsKey to set.
+     * @return This builder for chaining.
      */
-    public Builder clearDestinationCustomerEncryption() {
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        destinationCustomerEncryption_ = null;
-        onChanged();
-      } else {
-        destinationCustomerEncryption_ = null;
-        destinationCustomerEncryptionBuilder_ = null;
+    public Builder setDestinationKmsKey(java.lang.String value) {
+      if (value == null) {
+        throw new NullPointerException();
       }
 
+      destinationKmsKey_ = value;
+      onChanged();
       return this;
     }
     /**
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
+     * The name of the Cloud KMS key that will be used to encrypt the destination
+     * object. The Cloud KMS key must be located in same location as the object.
+     * If the parameter is not specified, the request uses the destination
+     * bucket's default encryption key, if any, or else the Google-managed
+     * encryption key.
      * </pre>
      *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+     * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
+     *
+     * @return This builder for chaining.
      */
-    public com.google.storage.v2.CustomerEncryption.Builder
-        getDestinationCustomerEncryptionBuilder() {
+    public Builder clearDestinationKmsKey() {
 
+      destinationKmsKey_ = getDefaultInstance().getDestinationKmsKey();
       onChanged();
-      return getDestinationCustomerEncryptionFieldBuilder().getBuilder();
+      return this;
     }
     /**
      *
      *
      * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
+     * The name of the Cloud KMS key that will be used to encrypt the destination
+     * object. The Cloud KMS key must be located in same location as the object.
+     * If the parameter is not specified, the request uses the destination
+     * bucket's default encryption key, if any, or else the Google-managed
+     * encryption key.
      * </pre>
      *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
-     */
-    public com.google.storage.v2.CustomerEncryptionOrBuilder
-        getDestinationCustomerEncryptionOrBuilder() {
-      if (destinationCustomerEncryptionBuilder_ != null) {
-        return destinationCustomerEncryptionBuilder_.getMessageOrBuilder();
-      } else {
-        return destinationCustomerEncryption_ == null
-            ? com.google.storage.v2.CustomerEncryption.getDefaultInstance()
-            : destinationCustomerEncryption_;
-      }
-    }
-    /**
-     *
-     *
-     * <pre>
-     * Metadata of customer-supplied encryption key for the destination object, if
-     * the object is to be encrypted by such a key.
-     * </pre>
+     * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
      *
-     * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+     * @param value The bytes for destinationKmsKey to set.
+     * @return This builder for chaining.
      */
-    private com.google.protobuf.SingleFieldBuilderV3<
-            com.google.storage.v2.CustomerEncryption,
-            com.google.storage.v2.CustomerEncryption.Builder,
-            com.google.storage.v2.CustomerEncryptionOrBuilder>
-        getDestinationCustomerEncryptionFieldBuilder() {
-      if (destinationCustomerEncryptionBuilder_ == null) {
-        destinationCustomerEncryptionBuilder_ =
-            new com.google.protobuf.SingleFieldBuilderV3<
-                com.google.storage.v2.CustomerEncryption,
-                com.google.storage.v2.CustomerEncryption.Builder,
-                com.google.storage.v2.CustomerEncryptionOrBuilder>(
-                getDestinationCustomerEncryption(), getParentForChildren(), isClean());
-        destinationCustomerEncryption_ = null;
+    public Builder setDestinationKmsKeyBytes(com.google.protobuf.ByteString value) {
+      if (value == null) {
+        throw new NullPointerException();
       }
-      return destinationCustomerEncryptionBuilder_;
+      checkByteStringIsUtf8(value);
+
+      destinationKmsKey_ = value;
+      onChanged();
+      return this;
     }
 
     private com.google.storage.v2.Object destination_;
@@ -2492,9 +2417,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2512,9 +2437,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2538,9 +2463,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2566,9 +2491,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2591,9 +2516,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2621,9 +2546,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2647,9 +2572,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2667,9 +2592,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -2691,9 +2616,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      * <pre>
      * Properties of the destination, post-rewrite object.
-     * The `name`, `bucket`, and `customer_encryption` fields must not be
-     * populated (these values are specified in the `destination_name`,
-     * `destination_bucket`, and `destination_customer_encryption` fields).
+     * The `name`, `bucket` and `kms_key` fields must not be populated (these
+     * values are specified in the `destination_name`, `destination_bucket`, and
+     * `destination_kms_key` fields).
      * If `destination` is present it will be used to construct the destination
      * object's metadata; otherwise the destination object's metadata will be
      * copied from the source object.
@@ -3860,7 +3785,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The algorithm used to encrypt the source object, if any.
+     * The algorithm used to encrypt the source object, if any. Used if the source
+     * object was encrypted with a Customer-Supplied Encryption Key.
      * </pre>
      *
      * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -3882,7 +3808,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The algorithm used to encrypt the source object, if any.
+     * The algorithm used to encrypt the source object, if any. Used if the source
+     * object was encrypted with a Customer-Supplied Encryption Key.
      * </pre>
      *
      * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -3904,7 +3831,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The algorithm used to encrypt the source object, if any.
+     * The algorithm used to encrypt the source object, if any. Used if the source
+     * object was encrypted with a Customer-Supplied Encryption Key.
      * </pre>
      *
      * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -3925,7 +3853,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The algorithm used to encrypt the source object, if any.
+     * The algorithm used to encrypt the source object, if any. Used if the source
+     * object was encrypted with a Customer-Supplied Encryption Key.
      * </pre>
      *
      * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -3942,7 +3871,8 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The algorithm used to encrypt the source object, if any.
+     * The algorithm used to encrypt the source object, if any. Used if the source
+     * object was encrypted with a Customer-Supplied Encryption Key.
      * </pre>
      *
      * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -3967,8 +3897,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The encryption key used to encrypt the source object, if any.
-     * In raw bytes format (not base64-encoded).
+     * The raw bytes (not base64-encoded) AES-256 encryption key used to encrypt
+     * the source object, if it was encrypted with a Customer-Supplied Encryption
+     * Key.
      * </pre>
      *
      * <code>bytes copy_source_encryption_key_bytes = 21;</code>
@@ -3983,8 +3914,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The encryption key used to encrypt the source object, if any.
-     * In raw bytes format (not base64-encoded).
+     * The raw bytes (not base64-encoded) AES-256 encryption key used to encrypt
+     * the source object, if it was encrypted with a Customer-Supplied Encryption
+     * Key.
      * </pre>
      *
      * <code>bytes copy_source_encryption_key_bytes = 21;</code>
@@ -4005,8 +3937,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The encryption key used to encrypt the source object, if any.
-     * In raw bytes format (not base64-encoded).
+     * The raw bytes (not base64-encoded) AES-256 encryption key used to encrypt
+     * the source object, if it was encrypted with a Customer-Supplied Encryption
+     * Key.
      * </pre>
      *
      * <code>bytes copy_source_encryption_key_bytes = 21;</code>
@@ -4026,8 +3959,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The SHA-256 hash of the key used to encrypt the source object, if any.
-     * In raw bytes format (not base64-encoded).
+     * The raw bytes (not base64-encoded) SHA256 hash of the encryption key used
+     * to encrypt the source object, if it was encrypted with a Customer-Supplied
+     * Encryption Key.
      * </pre>
      *
      * <code>bytes copy_source_encryption_key_sha256_bytes = 22;</code>
@@ -4042,8 +3976,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The SHA-256 hash of the key used to encrypt the source object, if any.
-     * In raw bytes format (not base64-encoded).
+     * The raw bytes (not base64-encoded) SHA256 hash of the encryption key used
+     * to encrypt the source object, if it was encrypted with a Customer-Supplied
+     * Encryption Key.
      * </pre>
      *
      * <code>bytes copy_source_encryption_key_sha256_bytes = 22;</code>
@@ -4064,8 +3999,9 @@ public final class RewriteObjectRequest extends com.google.protobuf.GeneratedMes
      *
      *
      * <pre>
-     * The SHA-256 hash of the key used to encrypt the source object, if any.
-     * In raw bytes format (not base64-encoded).
+     * The raw bytes (not base64-encoded) SHA256 hash of the encryption key used
+     * to encrypt the source object, if it was encrypted with a Customer-Supplied
+     * Encryption Key.
      * </pre>
      *
      * <code>bytes copy_source_encryption_key_sha256_bytes = 22;</code>
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java
index 73183221..549946c6 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java
@@ -93,48 +93,43 @@ public interface RewriteObjectRequestOrBuilder
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key for the destination object, if
-   * the object is to be encrypted by such a key.
+   * The name of the Cloud KMS key that will be used to encrypt the destination
+   * object. The Cloud KMS key must be located in same location as the object.
+   * If the parameter is not specified, the request uses the destination
+   * bucket's default encryption key, if any, or else the Google-managed
+   * encryption key.
    * </pre>
    *
-   * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+   * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
    *
-   * @return Whether the destinationCustomerEncryption field is set.
+   * @return The destinationKmsKey.
    */
-  boolean hasDestinationCustomerEncryption();
+  java.lang.String getDestinationKmsKey();
   /**
    *
    *
    * <pre>
-   * Metadata of customer-supplied encryption key for the destination object, if
-   * the object is to be encrypted by such a key.
+   * The name of the Cloud KMS key that will be used to encrypt the destination
+   * object. The Cloud KMS key must be located in same location as the object.
+   * If the parameter is not specified, the request uses the destination
+   * bucket's default encryption key, if any, or else the Google-managed
+   * encryption key.
    * </pre>
    *
-   * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
+   * <code>string destination_kms_key = 27 [(.google.api.resource_reference) = { ... }</code>
    *
-   * @return The destinationCustomerEncryption.
+   * @return The bytes for destinationKmsKey.
    */
-  com.google.storage.v2.CustomerEncryption getDestinationCustomerEncryption();
-  /**
-   *
-   *
-   * <pre>
-   * Metadata of customer-supplied encryption key for the destination object, if
-   * the object is to be encrypted by such a key.
-   * </pre>
-   *
-   * <code>.google.storage.v2.CustomerEncryption destination_customer_encryption = 26;</code>
-   */
-  com.google.storage.v2.CustomerEncryptionOrBuilder getDestinationCustomerEncryptionOrBuilder();
+  com.google.protobuf.ByteString getDestinationKmsKeyBytes();
 
   /**
    *
    *
    * <pre>
    * Properties of the destination, post-rewrite object.
-   * The `name`, `bucket`, and `customer_encryption` fields must not be
-   * populated (these values are specified in the `destination_name`,
-   * `destination_bucket`, and `destination_customer_encryption` fields).
+   * The `name`, `bucket` and `kms_key` fields must not be populated (these
+   * values are specified in the `destination_name`, `destination_bucket`, and
+   * `destination_kms_key` fields).
    * If `destination` is present it will be used to construct the destination
    * object's metadata; otherwise the destination object's metadata will be
    * copied from the source object.
@@ -150,9 +145,9 @@ public interface RewriteObjectRequestOrBuilder
    *
    * <pre>
    * Properties of the destination, post-rewrite object.
-   * The `name`, `bucket`, and `customer_encryption` fields must not be
-   * populated (these values are specified in the `destination_name`,
-   * `destination_bucket`, and `destination_customer_encryption` fields).
+   * The `name`, `bucket` and `kms_key` fields must not be populated (these
+   * values are specified in the `destination_name`, `destination_bucket`, and
+   * `destination_kms_key` fields).
    * If `destination` is present it will be used to construct the destination
    * object's metadata; otherwise the destination object's metadata will be
    * copied from the source object.
@@ -168,9 +163,9 @@ public interface RewriteObjectRequestOrBuilder
    *
    * <pre>
    * Properties of the destination, post-rewrite object.
-   * The `name`, `bucket`, and `customer_encryption` fields must not be
-   * populated (these values are specified in the `destination_name`,
-   * `destination_bucket`, and `destination_customer_encryption` fields).
+   * The `name`, `bucket` and `kms_key` fields must not be populated (these
+   * values are specified in the `destination_name`, `destination_bucket`, and
+   * `destination_kms_key` fields).
    * If `destination` is present it will be used to construct the destination
    * object's metadata; otherwise the destination object's metadata will be
    * copied from the source object.
@@ -548,7 +543,8 @@ public interface RewriteObjectRequestOrBuilder
    *
    *
    * <pre>
-   * The algorithm used to encrypt the source object, if any.
+   * The algorithm used to encrypt the source object, if any. Used if the source
+   * object was encrypted with a Customer-Supplied Encryption Key.
    * </pre>
    *
    * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -560,7 +556,8 @@ public interface RewriteObjectRequestOrBuilder
    *
    *
    * <pre>
-   * The algorithm used to encrypt the source object, if any.
+   * The algorithm used to encrypt the source object, if any. Used if the source
+   * object was encrypted with a Customer-Supplied Encryption Key.
    * </pre>
    *
    * <code>string copy_source_encryption_algorithm = 16;</code>
@@ -573,8 +570,9 @@ public interface RewriteObjectRequestOrBuilder
    *
    *
    * <pre>
-   * The encryption key used to encrypt the source object, if any.
-   * In raw bytes format (not base64-encoded).
+   * The raw bytes (not base64-encoded) AES-256 encryption key used to encrypt
+   * the source object, if it was encrypted with a Customer-Supplied Encryption
+   * Key.
    * </pre>
    *
    * <code>bytes copy_source_encryption_key_bytes = 21;</code>
@@ -587,8 +585,9 @@ public interface RewriteObjectRequestOrBuilder
    *
    *
    * <pre>
-   * The SHA-256 hash of the key used to encrypt the source object, if any.
-   * In raw bytes format (not base64-encoded).
+   * The raw bytes (not base64-encoded) SHA256 hash of the encryption key used
+   * to encrypt the source object, if it was encrypted with a Customer-Supplied
+   * Encryption Key.
    * </pre>
    *
    * <code>bytes copy_source_encryption_key_sha256_bytes = 22;</code>
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java
index 75f03b66..e1748b3f 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java
@@ -506,373 +506,372 @@ public final class StorageProto {
           + "nRequestParams\"s\n\030QueryWriteStatusRespon"
           + "se\022\030\n\016persisted_size\030\001 \001(\003H\000\022-\n\010resource"
           + "\030\002 \001(\0132\031.google.storage.v2.ObjectH\000B\016\n\014w"
-          + "rite_status\"\274\n\n\024RewriteObjectRequest\022\035\n\020"
+          + "rite_status\"\261\n\n\024RewriteObjectRequest\022\035\n\020"
           + "destination_name\030\030 \001(\tB\003\340A\005\022A\n\022destinati"
           + "on_bucket\030\031 \001(\tB%\340A\005\372A\037\n\035storage.googlea"
-          + "pis.com/Bucket\022N\n\037destination_customer_e"
-          + "ncryption\030\032 \001(\0132%.google.storage.v2.Cust"
-          + "omerEncryption\022.\n\013destination\030\001 \001(\0132\031.go"
-          + "ogle.storage.v2.Object\022\032\n\rsource_bucket\030"
-          + "\002 \001(\tB\003\340A\002\022\032\n\rsource_object\030\003 \001(\tB\003\340A\002\022\031"
-          + "\n\021source_generation\030\004 \001(\003\022\025\n\rrewrite_tok"
-          + "en\030\005 \001(\t\022J\n\032destination_predefined_acl\030\006"
-          + " \001(\0162&.google.storage.v2.PredefinedObjec"
-          + "tAcl\022 \n\023if_generation_match\030\007 \001(\003H\000\210\001\001\022$"
-          + "\n\027if_generation_not_match\030\010 \001(\003H\001\210\001\001\022$\n\027"
-          + "if_metageneration_match\030\t \001(\003H\002\210\001\001\022(\n\033if"
-          + "_metageneration_not_match\030\n \001(\003H\003\210\001\001\022\'\n\032"
-          + "if_source_generation_match\030\013 \001(\003H\004\210\001\001\022+\n"
-          + "\036if_source_generation_not_match\030\014 \001(\003H\005\210"
-          + "\001\001\022+\n\036if_source_metageneration_match\030\r \001"
-          + "(\003H\006\210\001\001\022/\n\"if_source_metageneration_not_"
-          + "match\030\016 \001(\003H\007\210\001\001\022$\n\034max_bytes_rewritten_"
-          + "per_call\030\017 \001(\003\022(\n copy_source_encryption"
-          + "_algorithm\030\020 \001(\t\022(\n copy_source_encrypti"
-          + "on_key_bytes\030\025 \001(\014\022/\n\'copy_source_encryp"
-          + "tion_key_sha256_bytes\030\026 \001(\014\022R\n\034common_ob"
-          + "ject_request_params\030\023 \001(\0132,.google.stora"
-          + "ge.v2.CommonObjectRequestParams\022E\n\025commo"
-          + "n_request_params\030\024 \001(\0132&.google.storage."
-          + "v2.CommonRequestParamsB\026\n\024_if_generation"
-          + "_matchB\032\n\030_if_generation_not_matchB\032\n\030_i"
-          + "f_metageneration_matchB\036\n\034_if_metagenera"
-          + "tion_not_matchB\035\n\033_if_source_generation_"
-          + "matchB!\n\037_if_source_generation_not_match"
-          + "B!\n\037_if_source_metageneration_matchB%\n#_"
-          + "if_source_metageneration_not_match\"\227\001\n\017R"
-          + "ewriteResponse\022\035\n\025total_bytes_rewritten\030"
-          + "\001 \001(\003\022\023\n\013object_size\030\002 \001(\003\022\014\n\004done\030\003 \001(\010"
-          + "\022\025\n\rrewrite_token\030\004 \001(\t\022+\n\010resource\030\005 \001("
-          + "\0132\031.google.storage.v2.Object\"\366\001\n\032StartRe"
-          + "sumableWriteRequest\022=\n\021write_object_spec"
-          + "\030\001 \001(\0132\".google.storage.v2.WriteObjectSp"
-          + "ec\022R\n\034common_object_request_params\030\003 \001(\013"
-          + "2,.google.storage.v2.CommonObjectRequest"
-          + "Params\022E\n\025common_request_params\030\004 \001(\0132&."
-          + "google.storage.v2.CommonRequestParams\"0\n"
-          + "\033StartResumableWriteResponse\022\021\n\tupload_i"
-          + "d\030\001 \001(\t\"\324\004\n\023UpdateObjectRequest\022)\n\006objec"
-          + "t\030\001 \001(\0132\031.google.storage.v2.Object\022 \n\023if"
-          + "_generation_match\030\002 \001(\003H\000\210\001\001\022$\n\027if_gener"
-          + "ation_not_match\030\003 \001(\003H\001\210\001\001\022$\n\027if_metagen"
-          + "eration_match\030\004 \001(\003H\002\210\001\001\022(\n\033if_metagener"
-          + "ation_not_match\030\005 \001(\003H\003\210\001\001\022>\n\016predefined"
-          + "_acl\030\006 \001(\0162&.google.storage.v2.Predefine"
-          + "dObjectAcl\022/\n\013update_mask\030\007 \001(\0132\032.google"
-          + ".protobuf.FieldMask\022R\n\034common_object_req"
-          + "uest_params\030\010 \001(\0132,.google.storage.v2.Co"
-          + "mmonObjectRequestParams\022E\n\025common_reques"
-          + "t_params\030\t \001(\0132&.google.storage.v2.Commo"
-          + "nRequestParamsB\026\n\024_if_generation_matchB\032"
-          + "\n\030_if_generation_not_matchB\032\n\030_if_metage"
-          + "neration_matchB\036\n\034_if_metageneration_not"
-          + "_match\"\247\001\n\030GetServiceAccountRequest\022D\n\007p"
-          + "roject\030\001 \001(\tB3\340A\002\372A-\n+cloudresourcemanag"
-          + "er.googleapis.com/Project\022E\n\025common_requ"
-          + "est_params\030\002 \001(\0132&.google.storage.v2.Com"
-          + "monRequestParams\"\307\001\n\024CreateHmacKeyReques"
-          + "t\022D\n\007project\030\001 \001(\tB3\340A\002\372A-\n+cloudresourc"
-          + "emanager.googleapis.com/Project\022\"\n\025servi"
-          + "ce_account_email\030\002 \001(\tB\003\340A\002\022E\n\025common_re"
-          + "quest_params\030\003 \001(\0132&.google.storage.v2.C"
-          + "ommonRequestParams\"g\n\025CreateHmacKeyRespo"
-          + "nse\0224\n\010metadata\030\001 \001(\0132\".google.storage.v"
-          + "2.HmacKeyMetadata\022\030\n\020secret_key_bytes\030\003 "
-          + "\001(\014\"\273\001\n\024DeleteHmacKeyRequest\022\026\n\taccess_i"
-          + "d\030\001 \001(\tB\003\340A\002\022D\n\007project\030\002 \001(\tB3\340A\002\372A-\n+c"
-          + "loudresourcemanager.googleapis.com/Proje"
-          + "ct\022E\n\025common_request_params\030\003 \001(\0132&.goog"
-          + "le.storage.v2.CommonRequestParams\"\270\001\n\021Ge"
-          + "tHmacKeyRequest\022\026\n\taccess_id\030\001 \001(\tB\003\340A\002\022"
-          + "D\n\007project\030\002 \001(\tB3\340A\002\372A-\n+cloudresourcem"
-          + "anager.googleapis.com/Project\022E\n\025common_"
-          + "request_params\030\003 \001(\0132&.google.storage.v2"
-          + ".CommonRequestParams\"\234\002\n\023ListHmacKeysReq"
-          + "uest\022D\n\007project\030\001 \001(\tB3\340A\002\372A-\n+cloudreso"
-          + "urcemanager.googleapis.com/Project\022\026\n\tpa"
-          + "ge_size\030\002 \001(\005B\003\340A\001\022\027\n\npage_token\030\003 \001(\tB\003"
-          + "\340A\001\022\"\n\025service_account_email\030\004 \001(\tB\003\340A\001\022"
-          + "\036\n\021show_deleted_keys\030\005 \001(\010B\003\340A\001\022J\n\025commo"
-          + "n_request_params\030\006 \001(\0132&.google.storage."
-          + "v2.CommonRequestParamsB\003\340A\001\"f\n\024ListHmacK"
-          + "eysResponse\0225\n\thmac_keys\030\001 \003(\0132\".google."
-          + "storage.v2.HmacKeyMetadata\022\027\n\017next_page_"
-          + "token\030\002 \001(\t\"\311\001\n\024UpdateHmacKeyRequest\0229\n\010"
-          + "hmac_key\030\001 \001(\0132\".google.storage.v2.HmacK"
-          + "eyMetadataB\003\340A\002\022E\n\025common_request_params"
-          + "\030\002 \001(\0132&.google.storage.v2.CommonRequest"
-          + "Params\022/\n\013update_mask\030\003 \001(\0132\032.google.pro"
-          + "tobuf.FieldMask\"|\n\031CommonObjectRequestPa"
-          + "rams\022\034\n\024encryption_algorithm\030\001 \001(\t\022\034\n\024en"
-          + "cryption_key_bytes\030\004 \001(\014\022#\n\033encryption_k"
-          + "ey_sha256_bytes\030\005 \001(\014\"`\n\023CommonRequestPa"
-          + "rams\022I\n\014user_project\030\001 \001(\tB3\340A\002\372A-\n+clou"
-          + "dresourcemanager.googleapis.com/Project\""
-          + "\312\005\n\020ServiceConstants\"\265\005\n\006Values\022\026\n\022VALUE"
-          + "S_UNSPECIFIED\020\000\022\033\n\024MAX_READ_CHUNK_BYTES\020"
-          + "\200\200\200\001\022\034\n\025MAX_WRITE_CHUNK_BYTES\020\200\200\200\001\022\031\n\022MA"
-          + "X_OBJECT_SIZE_MB\020\200\200\300\002\022)\n$MAX_CUSTOM_META"
-          + "DATA_FIELD_NAME_BYTES\020\200\010\022*\n%MAX_CUSTOM_M"
-          + "ETADATA_FIELD_VALUE_BYTES\020\200 \022)\n$MAX_CUST"
-          + "OM_METADATA_TOTAL_SIZE_BYTES\020\200@\022*\n$MAX_B"
-          + "UCKET_METADATA_TOTAL_SIZE_BYTES\020\200\240\001\022\'\n#M"
-          + "AX_NOTIFICATION_CONFIGS_PER_BUCKET\020d\022\"\n\036"
-          + "MAX_LIFECYCLE_RULES_PER_BUCKET\020d\022&\n\"MAX_"
-          + "NOTIFICATION_CUSTOM_ATTRIBUTES\020\005\0221\n,MAX_"
-          + "NOTIFICATION_CUSTOM_ATTRIBUTE_KEY_LENGTH"
-          + "\020\200\002\0223\n.MAX_NOTIFICATION_CUSTOM_ATTRIBUTE"
-          + "_VALUE_LENGTH\020\200\010\022\034\n\030MAX_LABELS_ENTRIES_C"
-          + "OUNT\020@\022\037\n\033MAX_LABELS_KEY_VALUE_LENGTH\020?\022"
-          + "\037\n\032MAX_LABELS_KEY_VALUE_BYTES\020\200\001\022.\n)MAX_"
-          + "OBJECT_IDS_PER_DELETE_OBJECTS_REQUEST\020\350\007"
-          + "\022\036\n\032SPLIT_TOKEN_MAX_VALID_DAYS\020\016\032\002\020\001\"\207\027\n"
-          + "\006Bucket\022\021\n\004name\030\001 \001(\tB\003\340A\005\022\026\n\tbucket_id\030"
-          + "\002 \001(\tB\003\340A\003\022D\n\007project\030\003 \001(\tB3\340A\005\372A-\n+clo"
-          + "udresourcemanager.googleapis.com/Project"
-          + "\022\033\n\016metageneration\030\004 \001(\003B\003\340A\003\022\025\n\010locatio"
-          + "n\030\005 \001(\tB\003\340A\005\022\032\n\rlocation_type\030\006 \001(\tB\003\340A\003"
-          + "\022\025\n\rstorage_class\030\007 \001(\t\022\013\n\003rpo\030\033 \001(\t\0223\n\003"
-          + "acl\030\010 \003(\0132&.google.storage.v2.BucketAcce"
-          + "ssControl\022B\n\022default_object_acl\030\t \003(\0132&."
-          + "google.storage.v2.ObjectAccessControl\0226\n"
-          + "\tlifecycle\030\n \001(\0132#.google.storage.v2.Buc"
-          + "ket.Lifecycle\0224\n\013create_time\030\013 \001(\0132\032.goo"
-          + "gle.protobuf.TimestampB\003\340A\003\022,\n\004cors\030\014 \003("
-          + "\0132\036.google.storage.v2.Bucket.Cors\0224\n\013upd"
-          + "ate_time\030\r \001(\0132\032.google.protobuf.Timesta"
-          + "mpB\003\340A\003\022 \n\030default_event_based_hold\030\016 \001("
-          + "\010\0225\n\006labels\030\017 \003(\0132%.google.storage.v2.Bu"
-          + "cket.LabelsEntry\0222\n\007website\030\020 \001(\0132!.goog"
-          + "le.storage.v2.Bucket.Website\0228\n\nversioni"
-          + "ng\030\021 \001(\0132$.google.storage.v2.Bucket.Vers"
-          + "ioning\0222\n\007logging\030\022 \001(\0132!.google.storage"
-          + ".v2.Bucket.Logging\022,\n\005owner\030\023 \001(\0132\030.goog"
-          + "le.storage.v2.OwnerB\003\340A\003\0228\n\nencryption\030\024"
-          + " \001(\0132$.google.storage.v2.Bucket.Encrypti"
-          + "on\0222\n\007billing\030\025 \001(\0132!.google.storage.v2."
-          + "Bucket.Billing\022C\n\020retention_policy\030\026 \001(\013"
-          + "2).google.storage.v2.Bucket.RetentionPol"
-          + "icy\0227\n\niam_config\030\027 \001(\0132#.google.storage"
-          + ".v2.Bucket.IamConfig\022\025\n\rsatisfies_pzs\030\031 "
-          + "\001(\010\022P\n\027custom_placement_config\030\032 \001(\0132/.g"
-          + "oogle.storage.v2.Bucket.CustomPlacementC"
-          + "onfig\032!\n\007Billing\022\026\n\016requester_pays\030\001 \001(\010"
-          + "\032X\n\004Cors\022\016\n\006origin\030\001 \003(\t\022\016\n\006method\030\002 \003(\t"
-          + "\022\027\n\017response_header\030\003 \003(\t\022\027\n\017max_age_sec"
-          + "onds\030\004 \001(\005\032M\n\nEncryption\022?\n\017default_kms_"
-          + "key\030\001 \001(\tB&\372A#\n!cloudkms.googleapis.com/"
-          + "CryptoKey\032\211\003\n\tIamConfig\022a\n\033uniform_bucke"
-          + "t_level_access\030\001 \001(\0132<.google.storage.v2"
-          + ".Bucket.IamConfig.UniformBucketLevelAcce"
-          + "ss\022\\\n\030public_access_prevention\030\002 \001(\0162:.g"
-          + "oogle.storage.v2.Bucket.IamConfig.Public"
-          + "AccessPrevention\032Z\n\030UniformBucketLevelAc"
-          + "cess\022\017\n\007enabled\030\001 \001(\010\022-\n\tlock_time\030\002 \001(\013"
-          + "2\032.google.protobuf.Timestamp\"_\n\026PublicAc"
-          + "cessPrevention\022(\n$PUBLIC_ACCESS_PREVENTI"
-          + "ON_UNSPECIFIED\020\000\022\014\n\010ENFORCED\020\001\022\r\n\tINHERI"
-          + "TED\020\002\032\303\005\n\tLifecycle\0226\n\004rule\030\001 \003(\0132(.goog"
-          + "le.storage.v2.Bucket.Lifecycle.Rule\032\375\004\n\004"
-          + "Rule\022?\n\006action\030\001 \001(\0132/.google.storage.v2"
-          + ".Bucket.Lifecycle.Rule.Action\022E\n\tconditi"
-          + "on\030\002 \001(\01322.google.storage.v2.Bucket.Life"
-          + "cycle.Rule.Condition\032-\n\006Action\022\014\n\004type\030\001"
-          + " \001(\t\022\025\n\rstorage_class\030\002 \001(\t\032\275\003\n\tConditio"
-          + "n\022\025\n\010age_days\030\001 \001(\005H\000\210\001\001\022)\n\016created_befo"
-          + "re\030\002 \001(\0132\021.google.type.Date\022\024\n\007is_live\030\003"
-          + " \001(\010H\001\210\001\001\022\037\n\022num_newer_versions\030\004 \001(\005H\002\210"
-          + "\001\001\022\035\n\025matches_storage_class\030\005 \003(\t\022#\n\026day"
-          + "s_since_custom_time\030\007 \001(\005H\003\210\001\001\022-\n\022custom"
-          + "_time_before\030\010 \001(\0132\021.google.type.Date\022\'\n"
-          + "\032days_since_noncurrent_time\030\t \001(\005H\004\210\001\001\0221"
-          + "\n\026noncurrent_time_before\030\n \001(\0132\021.google."
-          + "type.DateB\013\n\t_age_daysB\n\n\010_is_liveB\025\n\023_n"
-          + "um_newer_versionsB\031\n\027_days_since_custom_"
-          + "timeB\035\n\033_days_since_noncurrent_time\0328\n\007L"
-          + "ogging\022\022\n\nlog_bucket\030\001 \001(\t\022\031\n\021log_object"
-          + "_prefix\030\002 \001(\t\032r\n\017RetentionPolicy\0222\n\016effe"
-          + "ctive_time\030\001 \001(\0132\032.google.protobuf.Times"
-          + "tamp\022\021\n\tis_locked\030\002 \001(\010\022\030\n\020retention_per"
-          + "iod\030\003 \001(\003\032\035\n\nVersioning\022\017\n\007enabled\030\001 \001(\010"
-          + "\032;\n\007Website\022\030\n\020main_page_suffix\030\001 \001(\t\022\026\n"
-          + "\016not_found_page\030\002 \001(\t\032/\n\025CustomPlacement"
-          + "Config\022\026\n\016data_locations\030\001 \003(\t\032-\n\013Labels"
-          + "Entry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:G\352"
-          + "AD\n\035storage.googleapis.com/Bucket\022#proje"
-          + "cts/{project}/buckets/{bucket}\"\247\001\n\023Bucke"
-          + "tAccessControl\022\014\n\004role\030\001 \001(\t\022\n\n\002id\030\002 \001(\t"
-          + "\022\016\n\006entity\030\003 \001(\t\022\021\n\tentity_id\030\004 \001(\t\022\r\n\005e"
-          + "mail\030\005 \001(\t\022\016\n\006domain\030\006 \001(\t\0224\n\014project_te"
-          + "am\030\007 \001(\0132\036.google.storage.v2.ProjectTeam"
-          + "\"B\n\017ChecksummedData\022\017\n\007content\030\001 \001(\014\022\023\n\006"
-          + "crc32c\030\002 \001(\007H\000\210\001\001B\t\n\007_crc32c\"C\n\017ObjectCh"
-          + "ecksums\022\023\n\006crc32c\030\001 \001(\007H\000\210\001\001\022\020\n\010md5_hash"
-          + "\030\002 \001(\014B\t\n\007_crc32c\"\203\002\n\017HmacKeyMetadata\022\n\n"
-          + "\002id\030\001 \001(\t\022\021\n\taccess_id\030\002 \001(\t\022A\n\007project\030"
-          + "\003 \001(\tB0\372A-\n+cloudresourcemanager.googlea"
-          + "pis.com/Project\022\035\n\025service_account_email"
-          + "\030\004 \001(\t\022\r\n\005state\030\005 \001(\t\022/\n\013create_time\030\006 \001"
-          + "(\0132\032.google.protobuf.Timestamp\022/\n\013update"
-          + "_time\030\007 \001(\0132\032.google.protobuf.Timestamp\""
-          + "\217\003\n\014Notification\022\021\n\004name\030\001 \001(\tB\003\340A\002\022\022\n\005t"
-          + "opic\030\002 \001(\tB\003\340A\002\022\030\n\013event_types\030\003 \003(\tB\003\340A"
-          + "\001\022U\n\021custom_attributes\030\004 \003(\01325.google.st"
-          + "orage.v2.Notification.CustomAttributesEn"
-          + "tryB\003\340A\001\022\037\n\022object_name_prefix\030\005 \001(\tB\003\340A"
-          + "\001\022\033\n\016payload_format\030\006 \001(\tB\003\340A\002\0327\n\025Custom"
-          + "AttributesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 "
-          + "\001(\t:\0028\001:p\352Am\n#storage.googleapis.com/Not"
-          + "ification\022Fprojects/{project}/buckets/{b"
-          + "ucket}/notificationConfigs/{notification",
-      "}\"L\n\022CustomerEncryption\022\034\n\024encryption_al"
-          + "gorithm\030\001 \001(\t\022\030\n\020key_sha256_bytes\030\003 \001(\014\""
-          + "\364\010\n\006Object\022\021\n\004name\030\001 \001(\tB\003\340A\005\0225\n\006bucket\030"
-          + "\002 \001(\tB%\340A\005\372A\037\n\035storage.googleapis.com/Bu"
-          + "cket\022\027\n\ngeneration\030\003 \001(\003B\003\340A\005\022\033\n\016metagen"
-          + "eration\030\004 \001(\003B\003\340A\003\022\025\n\rstorage_class\030\005 \001("
-          + "\t\022\021\n\004size\030\006 \001(\003B\003\340A\003\022\030\n\020content_encoding"
-          + "\030\007 \001(\t\022\033\n\023content_disposition\030\010 \001(\t\022\025\n\rc"
-          + "ache_control\030\t \001(\t\0223\n\003acl\030\n \003(\0132&.google"
-          + ".storage.v2.ObjectAccessControl\022\030\n\020conte"
-          + "nt_language\030\013 \001(\t\0224\n\013delete_time\030\014 \001(\0132\032"
-          + ".google.protobuf.TimestampB\003\340A\003\022\024\n\014conte"
-          + "nt_type\030\r \001(\t\0224\n\013create_time\030\016 \001(\0132\032.goo"
-          + "gle.protobuf.TimestampB\003\340A\003\022\034\n\017component"
-          + "_count\030\017 \001(\005B\003\340A\003\022:\n\tchecksums\030\020 \001(\0132\".g"
-          + "oogle.storage.v2.ObjectChecksumsB\003\340A\003\0224\n"
-          + "\013update_time\030\021 \001(\0132\032.google.protobuf.Tim"
-          + "estampB\003\340A\003\0227\n\007kms_key\030\022 \001(\tB&\372A#\n!cloud"
-          + "kms.googleapis.com/CryptoKey\022B\n\031update_s"
-          + "torage_class_time\030\023 \001(\0132\032.google.protobu"
-          + "f.TimestampB\003\340A\003\022\026\n\016temporary_hold\030\024 \001(\010"
-          + "\0229\n\025retention_expire_time\030\025 \001(\0132\032.google"
-          + ".protobuf.Timestamp\0229\n\010metadata\030\026 \003(\0132\'."
-          + "google.storage.v2.Object.MetadataEntry\022\035"
-          + "\n\020event_based_hold\030\027 \001(\010H\000\210\001\001\022,\n\005owner\030\030"
-          + " \001(\0132\030.google.storage.v2.OwnerB\003\340A\003\022B\n\023c"
-          + "ustomer_encryption\030\031 \001(\0132%.google.storag"
-          + "e.v2.CustomerEncryption\022/\n\013custom_time\030\032"
-          + " \001(\0132\032.google.protobuf.Timestamp\032/\n\rMeta"
-          + "dataEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028"
-          + "\001B\023\n\021_event_based_hold\"\247\001\n\023ObjectAccessC"
-          + "ontrol\022\014\n\004role\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\016\n\006enti"
-          + "ty\030\003 \001(\t\022\021\n\tentity_id\030\004 \001(\t\022\r\n\005email\030\005 \001"
-          + "(\t\022\016\n\006domain\030\006 \001(\t\0224\n\014project_team\030\007 \001(\013"
-          + "2\036.google.storage.v2.ProjectTeam\"l\n\023List"
-          + "ObjectsResponse\022*\n\007objects\030\001 \003(\0132\031.googl"
-          + "e.storage.v2.Object\022\020\n\010prefixes\030\002 \003(\t\022\027\n"
-          + "\017next_page_token\030\003 \001(\t\"3\n\013ProjectTeam\022\026\n"
-          + "\016project_number\030\001 \001(\t\022\014\n\004team\030\002 \001(\t\"\'\n\016S"
-          + "erviceAccount\022\025\n\remail_address\030\001 \001(\t\"*\n\005"
-          + "Owner\022\016\n\006entity\030\001 \001(\t\022\021\n\tentity_id\030\002 \001(\t"
-          + "\"C\n\014ContentRange\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002"
-          + " \001(\003\022\027\n\017complete_length\030\003 \001(\003*\377\001\n\023Predef"
-          + "inedObjectAcl\022%\n!PREDEFINED_OBJECT_ACL_U"
-          + "NSPECIFIED\020\000\022!\n\035OBJECT_ACL_AUTHENTICATED"
-          + "_READ\020\001\022(\n$OBJECT_ACL_BUCKET_OWNER_FULL_"
-          + "CONTROL\020\002\022 \n\034OBJECT_ACL_BUCKET_OWNER_REA"
-          + "D\020\003\022\026\n\022OBJECT_ACL_PRIVATE\020\004\022\036\n\032OBJECT_AC"
-          + "L_PROJECT_PRIVATE\020\005\022\032\n\026OBJECT_ACL_PUBLIC"
-          + "_READ\020\006*\325\001\n\023PredefinedBucketAcl\022%\n!PREDE"
-          + "FINED_BUCKET_ACL_UNSPECIFIED\020\000\022!\n\035BUCKET"
-          + "_ACL_AUTHENTICATED_READ\020\001\022\026\n\022BUCKET_ACL_"
-          + "PRIVATE\020\002\022\036\n\032BUCKET_ACL_PROJECT_PRIVATE\020"
-          + "\003\022\032\n\026BUCKET_ACL_PUBLIC_READ\020\004\022 \n\034BUCKET_"
-          + "ACL_PUBLIC_READ_WRITE\020\0052\260\033\n\007Storage\022W\n\014D"
-          + "eleteBucket\022&.google.storage.v2.DeleteBu"
-          + "cketRequest\032\026.google.protobuf.Empty\"\007\332A\004"
-          + "name\022T\n\tGetBucket\022#.google.storage.v2.Ge"
-          + "tBucketRequest\032\031.google.storage.v2.Bucke"
-          + "t\"\007\332A\004name\022m\n\014CreateBucket\022&.google.stor"
-          + "age.v2.CreateBucketRequest\032\031.google.stor"
-          + "age.v2.Bucket\"\032\332A\027parent,bucket,bucket_i"
-          + "d\022g\n\013ListBuckets\022%.google.storage.v2.Lis"
-          + "tBucketsRequest\032&.google.storage.v2.List"
-          + "BucketsResponse\"\t\332A\006parent\022v\n\031LockBucket"
-          + "RetentionPolicy\0223.google.storage.v2.Lock"
-          + "BucketRetentionPolicyRequest\032\031.google.st"
-          + "orage.v2.Bucket\"\t\332A\006bucket\022V\n\014GetIamPoli"
-          + "cy\022\".google.iam.v1.GetIamPolicyRequest\032\025"
-          + ".google.iam.v1.Policy\"\013\332A\010resource\022]\n\014Se"
-          + "tIamPolicy\022\".google.iam.v1.SetIamPolicyR"
-          + "equest\032\025.google.iam.v1.Policy\"\022\332A\017resour"
-          + "ce,policy\022\202\001\n\022TestIamPermissions\022(.googl"
-          + "e.iam.v1.TestIamPermissionsRequest\032).goo"
-          + "gle.iam.v1.TestIamPermissionsResponse\"\027\332"
-          + "A\024resource,permissions\022h\n\014UpdateBucket\022&"
-          + ".google.storage.v2.UpdateBucketRequest\032\031"
-          + ".google.storage.v2.Bucket\"\025\332A\022bucket,upd"
-          + "ate_mask\022c\n\022DeleteNotification\022,.google."
-          + "storage.v2.DeleteNotificationRequest\032\026.g"
-          + "oogle.protobuf.Empty\"\007\332A\004name\022f\n\017GetNoti"
-          + "fication\022).google.storage.v2.GetNotifica"
-          + "tionRequest\032\037.google.storage.v2.Notifica"
-          + "tion\"\007\332A\004name\022{\n\022CreateNotification\022,.go"
-          + "ogle.storage.v2.CreateNotificationReques"
-          + "t\032\037.google.storage.v2.Notification\"\026\332A\023p"
-          + "arent,notification\022y\n\021ListNotifications\022"
-          + "+.google.storage.v2.ListNotificationsReq"
-          + "uest\032,.google.storage.v2.ListNotificatio"
-          + "nsResponse\"\t\332A\006parent\022U\n\rComposeObject\022\'"
-          + ".google.storage.v2.ComposeObjectRequest\032"
-          + "\031.google.storage.v2.Object\"\000\022{\n\014DeleteOb"
-          + "ject\022&.google.storage.v2.DeleteObjectReq"
-          + "uest\032\026.google.protobuf.Empty\"+\332A\rbucket,"
-          + "object\332A\030bucket,object,generation\022x\n\tGet"
-          + "Object\022#.google.storage.v2.GetObjectRequ"
-          + "est\032\031.google.storage.v2.Object\"+\332A\rbucke"
-          + "t,object\332A\030bucket,object,generation\022\210\001\n\n"
-          + "ReadObject\022$.google.storage.v2.ReadObjec"
-          + "tRequest\032%.google.storage.v2.ReadObjectR"
-          + "esponse\"+\332A\rbucket,object\332A\030bucket,objec"
-          + "t,generation0\001\022h\n\014UpdateObject\022&.google."
-          + "storage.v2.UpdateObjectRequest\032\031.google."
-          + "storage.v2.Object\"\025\332A\022object,update_mask"
-          + "\022`\n\013WriteObject\022%.google.storage.v2.Writ"
-          + "eObjectRequest\032&.google.storage.v2.Write"
-          + "ObjectResponse\"\000(\001\022g\n\013ListObjects\022%.goog"
-          + "le.storage.v2.ListObjectsRequest\032&.googl"
-          + "e.storage.v2.ListObjectsResponse\"\t\332A\006par"
-          + "ent\022^\n\rRewriteObject\022\'.google.storage.v2"
-          + ".RewriteObjectRequest\032\".google.storage.v"
-          + "2.RewriteResponse\"\000\022v\n\023StartResumableWri"
-          + "te\022-.google.storage.v2.StartResumableWri"
-          + "teRequest\032..google.storage.v2.StartResum"
-          + "ableWriteResponse\"\000\022y\n\020QueryWriteStatus\022"
-          + "*.google.storage.v2.QueryWriteStatusRequ"
-          + "est\032+.google.storage.v2.QueryWriteStatus"
-          + "Response\"\014\332A\tupload_id\022o\n\021GetServiceAcco"
-          + "unt\022+.google.storage.v2.GetServiceAccoun"
-          + "tRequest\032!.google.storage.v2.ServiceAcco"
-          + "unt\"\n\332A\007project\022\204\001\n\rCreateHmacKey\022\'.goog"
-          + "le.storage.v2.CreateHmacKeyRequest\032(.goo"
-          + "gle.storage.v2.CreateHmacKeyResponse\" \332A"
-          + "\035project,service_account_email\022f\n\rDelete"
-          + "HmacKey\022\'.google.storage.v2.DeleteHmacKe"
-          + "yRequest\032\026.google.protobuf.Empty\"\024\332A\021acc"
-          + "ess_id,project\022l\n\nGetHmacKey\022$.google.st"
-          + "orage.v2.GetHmacKeyRequest\032\".google.stor"
-          + "age.v2.HmacKeyMetadata\"\024\332A\021access_id,pro"
-          + "ject\022k\n\014ListHmacKeys\022&.google.storage.v2"
-          + ".ListHmacKeysRequest\032\'.google.storage.v2"
-          + ".ListHmacKeysResponse\"\n\332A\007project\022u\n\rUpd"
-          + "ateHmacKey\022\'.google.storage.v2.UpdateHma"
-          + "cKeyRequest\032\".google.storage.v2.HmacKeyM"
-          + "etadata\"\027\332A\024hmac_key,update_mask\032\247\002\312A\026st"
-          + "orage.googleapis.com\322A\212\002https://www.goog"
-          + "leapis.com/auth/cloud-platform,https://w"
-          + "ww.googleapis.com/auth/cloud-platform.re"
-          + "ad-only,https://www.googleapis.com/auth/"
-          + "devstorage.full_control,https://www.goog"
-          + "leapis.com/auth/devstorage.read_only,htt"
+          + "pis.com/Bucket\022C\n\023destination_kms_key\030\033 "
+          + "\001(\tB&\372A#\n!cloudkms.googleapis.com/Crypto"
+          + "Key\022.\n\013destination\030\001 \001(\0132\031.google.storag"
+          + "e.v2.Object\022\032\n\rsource_bucket\030\002 \001(\tB\003\340A\002\022"
+          + "\032\n\rsource_object\030\003 \001(\tB\003\340A\002\022\031\n\021source_ge"
+          + "neration\030\004 \001(\003\022\025\n\rrewrite_token\030\005 \001(\t\022J\n"
+          + "\032destination_predefined_acl\030\006 \001(\0162&.goog"
+          + "le.storage.v2.PredefinedObjectAcl\022 \n\023if_"
+          + "generation_match\030\007 \001(\003H\000\210\001\001\022$\n\027if_genera"
+          + "tion_not_match\030\010 \001(\003H\001\210\001\001\022$\n\027if_metagene"
+          + "ration_match\030\t \001(\003H\002\210\001\001\022(\n\033if_metagenera"
+          + "tion_not_match\030\n \001(\003H\003\210\001\001\022\'\n\032if_source_g"
+          + "eneration_match\030\013 \001(\003H\004\210\001\001\022+\n\036if_source_"
+          + "generation_not_match\030\014 \001(\003H\005\210\001\001\022+\n\036if_so"
+          + "urce_metageneration_match\030\r \001(\003H\006\210\001\001\022/\n\""
+          + "if_source_metageneration_not_match\030\016 \001(\003"
+          + "H\007\210\001\001\022$\n\034max_bytes_rewritten_per_call\030\017 "
+          + "\001(\003\022(\n copy_source_encryption_algorithm\030"
+          + "\020 \001(\t\022(\n copy_source_encryption_key_byte"
+          + "s\030\025 \001(\014\022/\n\'copy_source_encryption_key_sh"
+          + "a256_bytes\030\026 \001(\014\022R\n\034common_object_reques"
+          + "t_params\030\023 \001(\0132,.google.storage.v2.Commo"
+          + "nObjectRequestParams\022E\n\025common_request_p"
+          + "arams\030\024 \001(\0132&.google.storage.v2.CommonRe"
+          + "questParamsB\026\n\024_if_generation_matchB\032\n\030_"
+          + "if_generation_not_matchB\032\n\030_if_metagener"
+          + "ation_matchB\036\n\034_if_metageneration_not_ma"
+          + "tchB\035\n\033_if_source_generation_matchB!\n\037_i"
+          + "f_source_generation_not_matchB!\n\037_if_sou"
+          + "rce_metageneration_matchB%\n#_if_source_m"
+          + "etageneration_not_match\"\227\001\n\017RewriteRespo"
+          + "nse\022\035\n\025total_bytes_rewritten\030\001 \001(\003\022\023\n\013ob"
+          + "ject_size\030\002 \001(\003\022\014\n\004done\030\003 \001(\010\022\025\n\rrewrite"
+          + "_token\030\004 \001(\t\022+\n\010resource\030\005 \001(\0132\031.google."
+          + "storage.v2.Object\"\366\001\n\032StartResumableWrit"
+          + "eRequest\022=\n\021write_object_spec\030\001 \001(\0132\".go"
+          + "ogle.storage.v2.WriteObjectSpec\022R\n\034commo"
+          + "n_object_request_params\030\003 \001(\0132,.google.s"
+          + "torage.v2.CommonObjectRequestParams\022E\n\025c"
+          + "ommon_request_params\030\004 \001(\0132&.google.stor"
+          + "age.v2.CommonRequestParams\"0\n\033StartResum"
+          + "ableWriteResponse\022\021\n\tupload_id\030\001 \001(\t\"\324\004\n"
+          + "\023UpdateObjectRequest\022)\n\006object\030\001 \001(\0132\031.g"
+          + "oogle.storage.v2.Object\022 \n\023if_generation"
+          + "_match\030\002 \001(\003H\000\210\001\001\022$\n\027if_generation_not_m"
+          + "atch\030\003 \001(\003H\001\210\001\001\022$\n\027if_metageneration_mat"
+          + "ch\030\004 \001(\003H\002\210\001\001\022(\n\033if_metageneration_not_m"
+          + "atch\030\005 \001(\003H\003\210\001\001\022>\n\016predefined_acl\030\006 \001(\0162"
+          + "&.google.storage.v2.PredefinedObjectAcl\022"
+          + "/\n\013update_mask\030\007 \001(\0132\032.google.protobuf.F"
+          + "ieldMask\022R\n\034common_object_request_params"
+          + "\030\010 \001(\0132,.google.storage.v2.CommonObjectR"
+          + "equestParams\022E\n\025common_request_params\030\t "
+          + "\001(\0132&.google.storage.v2.CommonRequestPar"
+          + "amsB\026\n\024_if_generation_matchB\032\n\030_if_gener"
+          + "ation_not_matchB\032\n\030_if_metageneration_ma"
+          + "tchB\036\n\034_if_metageneration_not_match\"\247\001\n\030"
+          + "GetServiceAccountRequest\022D\n\007project\030\001 \001("
+          + "\tB3\340A\002\372A-\n+cloudresourcemanager.googleap"
+          + "is.com/Project\022E\n\025common_request_params\030"
+          + "\002 \001(\0132&.google.storage.v2.CommonRequestP"
+          + "arams\"\307\001\n\024CreateHmacKeyRequest\022D\n\007projec"
+          + "t\030\001 \001(\tB3\340A\002\372A-\n+cloudresourcemanager.go"
+          + "ogleapis.com/Project\022\"\n\025service_account_"
+          + "email\030\002 \001(\tB\003\340A\002\022E\n\025common_request_param"
+          + "s\030\003 \001(\0132&.google.storage.v2.CommonReques"
+          + "tParams\"g\n\025CreateHmacKeyResponse\0224\n\010meta"
+          + "data\030\001 \001(\0132\".google.storage.v2.HmacKeyMe"
+          + "tadata\022\030\n\020secret_key_bytes\030\003 \001(\014\"\273\001\n\024Del"
+          + "eteHmacKeyRequest\022\026\n\taccess_id\030\001 \001(\tB\003\340A"
+          + "\002\022D\n\007project\030\002 \001(\tB3\340A\002\372A-\n+cloudresourc"
+          + "emanager.googleapis.com/Project\022E\n\025commo"
+          + "n_request_params\030\003 \001(\0132&.google.storage."
+          + "v2.CommonRequestParams\"\270\001\n\021GetHmacKeyReq"
+          + "uest\022\026\n\taccess_id\030\001 \001(\tB\003\340A\002\022D\n\007project\030"
+          + "\002 \001(\tB3\340A\002\372A-\n+cloudresourcemanager.goog"
+          + "leapis.com/Project\022E\n\025common_request_par"
+          + "ams\030\003 \001(\0132&.google.storage.v2.CommonRequ"
+          + "estParams\"\234\002\n\023ListHmacKeysRequest\022D\n\007pro"
+          + "ject\030\001 \001(\tB3\340A\002\372A-\n+cloudresourcemanager"
+          + ".googleapis.com/Project\022\026\n\tpage_size\030\002 \001"
+          + "(\005B\003\340A\001\022\027\n\npage_token\030\003 \001(\tB\003\340A\001\022\"\n\025serv"
+          + "ice_account_email\030\004 \001(\tB\003\340A\001\022\036\n\021show_del"
+          + "eted_keys\030\005 \001(\010B\003\340A\001\022J\n\025common_request_p"
+          + "arams\030\006 \001(\0132&.google.storage.v2.CommonRe"
+          + "questParamsB\003\340A\001\"f\n\024ListHmacKeysResponse"
+          + "\0225\n\thmac_keys\030\001 \003(\0132\".google.storage.v2."
+          + "HmacKeyMetadata\022\027\n\017next_page_token\030\002 \001(\t"
+          + "\"\311\001\n\024UpdateHmacKeyRequest\0229\n\010hmac_key\030\001 "
+          + "\001(\0132\".google.storage.v2.HmacKeyMetadataB"
+          + "\003\340A\002\022E\n\025common_request_params\030\002 \001(\0132&.go"
+          + "ogle.storage.v2.CommonRequestParams\022/\n\013u"
+          + "pdate_mask\030\003 \001(\0132\032.google.protobuf.Field"
+          + "Mask\"|\n\031CommonObjectRequestParams\022\034\n\024enc"
+          + "ryption_algorithm\030\001 \001(\t\022\034\n\024encryption_ke"
+          + "y_bytes\030\004 \001(\014\022#\n\033encryption_key_sha256_b"
+          + "ytes\030\005 \001(\014\"`\n\023CommonRequestParams\022I\n\014use"
+          + "r_project\030\001 \001(\tB3\340A\002\372A-\n+cloudresourcema"
+          + "nager.googleapis.com/Project\"\312\005\n\020Service"
+          + "Constants\"\265\005\n\006Values\022\026\n\022VALUES_UNSPECIFI"
+          + "ED\020\000\022\033\n\024MAX_READ_CHUNK_BYTES\020\200\200\200\001\022\034\n\025MAX"
+          + "_WRITE_CHUNK_BYTES\020\200\200\200\001\022\031\n\022MAX_OBJECT_SI"
+          + "ZE_MB\020\200\200\300\002\022)\n$MAX_CUSTOM_METADATA_FIELD_"
+          + "NAME_BYTES\020\200\010\022*\n%MAX_CUSTOM_METADATA_FIE"
+          + "LD_VALUE_BYTES\020\200 \022)\n$MAX_CUSTOM_METADATA"
+          + "_TOTAL_SIZE_BYTES\020\200@\022*\n$MAX_BUCKET_METAD"
+          + "ATA_TOTAL_SIZE_BYTES\020\200\240\001\022\'\n#MAX_NOTIFICA"
+          + "TION_CONFIGS_PER_BUCKET\020d\022\"\n\036MAX_LIFECYC"
+          + "LE_RULES_PER_BUCKET\020d\022&\n\"MAX_NOTIFICATIO"
+          + "N_CUSTOM_ATTRIBUTES\020\005\0221\n,MAX_NOTIFICATIO"
+          + "N_CUSTOM_ATTRIBUTE_KEY_LENGTH\020\200\002\0223\n.MAX_"
+          + "NOTIFICATION_CUSTOM_ATTRIBUTE_VALUE_LENG"
+          + "TH\020\200\010\022\034\n\030MAX_LABELS_ENTRIES_COUNT\020@\022\037\n\033M"
+          + "AX_LABELS_KEY_VALUE_LENGTH\020?\022\037\n\032MAX_LABE"
+          + "LS_KEY_VALUE_BYTES\020\200\001\022.\n)MAX_OBJECT_IDS_"
+          + "PER_DELETE_OBJECTS_REQUEST\020\350\007\022\036\n\032SPLIT_T"
+          + "OKEN_MAX_VALID_DAYS\020\016\032\002\020\001\"\207\027\n\006Bucket\022\021\n\004"
+          + "name\030\001 \001(\tB\003\340A\005\022\026\n\tbucket_id\030\002 \001(\tB\003\340A\003\022"
+          + "D\n\007project\030\003 \001(\tB3\340A\005\372A-\n+cloudresourcem"
+          + "anager.googleapis.com/Project\022\033\n\016metagen"
+          + "eration\030\004 \001(\003B\003\340A\003\022\025\n\010location\030\005 \001(\tB\003\340A"
+          + "\005\022\032\n\rlocation_type\030\006 \001(\tB\003\340A\003\022\025\n\rstorage"
+          + "_class\030\007 \001(\t\022\013\n\003rpo\030\033 \001(\t\0223\n\003acl\030\010 \003(\0132&"
+          + ".google.storage.v2.BucketAccessControl\022B"
+          + "\n\022default_object_acl\030\t \003(\0132&.google.stor"
+          + "age.v2.ObjectAccessControl\0226\n\tlifecycle\030"
+          + "\n \001(\0132#.google.storage.v2.Bucket.Lifecyc"
+          + "le\0224\n\013create_time\030\013 \001(\0132\032.google.protobu"
+          + "f.TimestampB\003\340A\003\022,\n\004cors\030\014 \003(\0132\036.google."
+          + "storage.v2.Bucket.Cors\0224\n\013update_time\030\r "
+          + "\001(\0132\032.google.protobuf.TimestampB\003\340A\003\022 \n\030"
+          + "default_event_based_hold\030\016 \001(\010\0225\n\006labels"
+          + "\030\017 \003(\0132%.google.storage.v2.Bucket.Labels"
+          + "Entry\0222\n\007website\030\020 \001(\0132!.google.storage."
+          + "v2.Bucket.Website\0228\n\nversioning\030\021 \001(\0132$."
+          + "google.storage.v2.Bucket.Versioning\0222\n\007l"
+          + "ogging\030\022 \001(\0132!.google.storage.v2.Bucket."
+          + "Logging\022,\n\005owner\030\023 \001(\0132\030.google.storage."
+          + "v2.OwnerB\003\340A\003\0228\n\nencryption\030\024 \001(\0132$.goog"
+          + "le.storage.v2.Bucket.Encryption\0222\n\007billi"
+          + "ng\030\025 \001(\0132!.google.storage.v2.Bucket.Bill"
+          + "ing\022C\n\020retention_policy\030\026 \001(\0132).google.s"
+          + "torage.v2.Bucket.RetentionPolicy\0227\n\niam_"
+          + "config\030\027 \001(\0132#.google.storage.v2.Bucket."
+          + "IamConfig\022\025\n\rsatisfies_pzs\030\031 \001(\010\022P\n\027cust"
+          + "om_placement_config\030\032 \001(\0132/.google.stora"
+          + "ge.v2.Bucket.CustomPlacementConfig\032!\n\007Bi"
+          + "lling\022\026\n\016requester_pays\030\001 \001(\010\032X\n\004Cors\022\016\n"
+          + "\006origin\030\001 \003(\t\022\016\n\006method\030\002 \003(\t\022\027\n\017respons"
+          + "e_header\030\003 \003(\t\022\027\n\017max_age_seconds\030\004 \001(\005\032"
+          + "M\n\nEncryption\022?\n\017default_kms_key\030\001 \001(\tB&"
+          + "\372A#\n!cloudkms.googleapis.com/CryptoKey\032\211"
+          + "\003\n\tIamConfig\022a\n\033uniform_bucket_level_acc"
+          + "ess\030\001 \001(\0132<.google.storage.v2.Bucket.Iam"
+          + "Config.UniformBucketLevelAccess\022\\\n\030publi"
+          + "c_access_prevention\030\002 \001(\0162:.google.stora"
+          + "ge.v2.Bucket.IamConfig.PublicAccessPreve"
+          + "ntion\032Z\n\030UniformBucketLevelAccess\022\017\n\007ena"
+          + "bled\030\001 \001(\010\022-\n\tlock_time\030\002 \001(\0132\032.google.p"
+          + "rotobuf.Timestamp\"_\n\026PublicAccessPrevent"
+          + "ion\022(\n$PUBLIC_ACCESS_PREVENTION_UNSPECIF"
+          + "IED\020\000\022\014\n\010ENFORCED\020\001\022\r\n\tINHERITED\020\002\032\303\005\n\tL"
+          + "ifecycle\0226\n\004rule\030\001 \003(\0132(.google.storage."
+          + "v2.Bucket.Lifecycle.Rule\032\375\004\n\004Rule\022?\n\006act"
+          + "ion\030\001 \001(\0132/.google.storage.v2.Bucket.Lif"
+          + "ecycle.Rule.Action\022E\n\tcondition\030\002 \001(\01322."
+          + "google.storage.v2.Bucket.Lifecycle.Rule."
+          + "Condition\032-\n\006Action\022\014\n\004type\030\001 \001(\t\022\025\n\rsto"
+          + "rage_class\030\002 \001(\t\032\275\003\n\tCondition\022\025\n\010age_da"
+          + "ys\030\001 \001(\005H\000\210\001\001\022)\n\016created_before\030\002 \001(\0132\021."
+          + "google.type.Date\022\024\n\007is_live\030\003 \001(\010H\001\210\001\001\022\037"
+          + "\n\022num_newer_versions\030\004 \001(\005H\002\210\001\001\022\035\n\025match"
+          + "es_storage_class\030\005 \003(\t\022#\n\026days_since_cus"
+          + "tom_time\030\007 \001(\005H\003\210\001\001\022-\n\022custom_time_befor"
+          + "e\030\010 \001(\0132\021.google.type.Date\022\'\n\032days_since"
+          + "_noncurrent_time\030\t \001(\005H\004\210\001\001\0221\n\026noncurren"
+          + "t_time_before\030\n \001(\0132\021.google.type.DateB\013"
+          + "\n\t_age_daysB\n\n\010_is_liveB\025\n\023_num_newer_ve"
+          + "rsionsB\031\n\027_days_since_custom_timeB\035\n\033_da"
+          + "ys_since_noncurrent_time\0328\n\007Logging\022\022\n\nl"
+          + "og_bucket\030\001 \001(\t\022\031\n\021log_object_prefix\030\002 \001"
+          + "(\t\032r\n\017RetentionPolicy\0222\n\016effective_time\030"
+          + "\001 \001(\0132\032.google.protobuf.Timestamp\022\021\n\tis_"
+          + "locked\030\002 \001(\010\022\030\n\020retention_period\030\003 \001(\003\032\035"
+          + "\n\nVersioning\022\017\n\007enabled\030\001 \001(\010\032;\n\007Website"
+          + "\022\030\n\020main_page_suffix\030\001 \001(\t\022\026\n\016not_found_"
+          + "page\030\002 \001(\t\032/\n\025CustomPlacementConfig\022\026\n\016d"
+          + "ata_locations\030\001 \003(\t\032-\n\013LabelsEntry\022\013\n\003ke"
+          + "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:G\352AD\n\035storage"
+          + ".googleapis.com/Bucket\022#projects/{projec"
+          + "t}/buckets/{bucket}\"\247\001\n\023BucketAccessCont"
+          + "rol\022\014\n\004role\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\016\n\006entity\030"
+          + "\003 \001(\t\022\021\n\tentity_id\030\004 \001(\t\022\r\n\005email\030\005 \001(\t\022"
+          + "\016\n\006domain\030\006 \001(\t\0224\n\014project_team\030\007 \001(\0132\036."
+          + "google.storage.v2.ProjectTeam\"B\n\017Checksu"
+          + "mmedData\022\017\n\007content\030\001 \001(\014\022\023\n\006crc32c\030\002 \001("
+          + "\007H\000\210\001\001B\t\n\007_crc32c\"C\n\017ObjectChecksums\022\023\n\006"
+          + "crc32c\030\001 \001(\007H\000\210\001\001\022\020\n\010md5_hash\030\002 \001(\014B\t\n\007_"
+          + "crc32c\"\203\002\n\017HmacKeyMetadata\022\n\n\002id\030\001 \001(\t\022\021"
+          + "\n\taccess_id\030\002 \001(\t\022A\n\007project\030\003 \001(\tB0\372A-\n"
+          + "+cloudresourcemanager.googleapis.com/Pro"
+          + "ject\022\035\n\025service_account_email\030\004 \001(\t\022\r\n\005s"
+          + "tate\030\005 \001(\t\022/\n\013create_time\030\006 \001(\0132\032.google"
+          + ".protobuf.Timestamp\022/\n\013update_time\030\007 \001(\013"
+          + "2\032.google.protobuf.Timestamp\"\217\003\n\014Notific"
+          + "ation\022\021\n\004name\030\001 \001(\tB\003\340A\002\022\022\n\005topic\030\002 \001(\tB"
+          + "\003\340A\002\022\030\n\013event_types\030\003 \003(\tB\003\340A\001\022U\n\021custom"
+          + "_attributes\030\004 \003(\01325.google.storage.v2.No"
+          + "tification.CustomAttributesEntryB\003\340A\001\022\037\n"
+          + "\022object_name_prefix\030\005 \001(\tB\003\340A\001\022\033\n\016payloa"
+          + "d_format\030\006 \001(\tB\003\340A\002\0327\n\025CustomAttributesE"
+          + "ntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:p\352A"
+          + "m\n#storage.googleapis.com/Notification\022F"
+          + "projects/{project}/buckets/{bucket}/noti"
+          + "ficationConfigs/{notification}\"L\n\022Custom",
+      "erEncryption\022\034\n\024encryption_algorithm\030\001 \001"
+          + "(\t\022\030\n\020key_sha256_bytes\030\003 \001(\014\"\364\010\n\006Object\022"
+          + "\021\n\004name\030\001 \001(\tB\003\340A\005\0225\n\006bucket\030\002 \001(\tB%\340A\005\372"
+          + "A\037\n\035storage.googleapis.com/Bucket\022\027\n\ngen"
+          + "eration\030\003 \001(\003B\003\340A\005\022\033\n\016metageneration\030\004 \001"
+          + "(\003B\003\340A\003\022\025\n\rstorage_class\030\005 \001(\t\022\021\n\004size\030\006"
+          + " \001(\003B\003\340A\003\022\030\n\020content_encoding\030\007 \001(\t\022\033\n\023c"
+          + "ontent_disposition\030\010 \001(\t\022\025\n\rcache_contro"
+          + "l\030\t \001(\t\0223\n\003acl\030\n \003(\0132&.google.storage.v2"
+          + ".ObjectAccessControl\022\030\n\020content_language"
+          + "\030\013 \001(\t\0224\n\013delete_time\030\014 \001(\0132\032.google.pro"
+          + "tobuf.TimestampB\003\340A\003\022\024\n\014content_type\030\r \001"
+          + "(\t\0224\n\013create_time\030\016 \001(\0132\032.google.protobu"
+          + "f.TimestampB\003\340A\003\022\034\n\017component_count\030\017 \001("
+          + "\005B\003\340A\003\022:\n\tchecksums\030\020 \001(\0132\".google.stora"
+          + "ge.v2.ObjectChecksumsB\003\340A\003\0224\n\013update_tim"
+          + "e\030\021 \001(\0132\032.google.protobuf.TimestampB\003\340A\003"
+          + "\0227\n\007kms_key\030\022 \001(\tB&\372A#\n!cloudkms.googlea"
+          + "pis.com/CryptoKey\022B\n\031update_storage_clas"
+          + "s_time\030\023 \001(\0132\032.google.protobuf.Timestamp"
+          + "B\003\340A\003\022\026\n\016temporary_hold\030\024 \001(\010\0229\n\025retenti"
+          + "on_expire_time\030\025 \001(\0132\032.google.protobuf.T"
+          + "imestamp\0229\n\010metadata\030\026 \003(\0132\'.google.stor"
+          + "age.v2.Object.MetadataEntry\022\035\n\020event_bas"
+          + "ed_hold\030\027 \001(\010H\000\210\001\001\022,\n\005owner\030\030 \001(\0132\030.goog"
+          + "le.storage.v2.OwnerB\003\340A\003\022B\n\023customer_enc"
+          + "ryption\030\031 \001(\0132%.google.storage.v2.Custom"
+          + "erEncryption\022/\n\013custom_time\030\032 \001(\0132\032.goog"
+          + "le.protobuf.Timestamp\032/\n\rMetadataEntry\022\013"
+          + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B\023\n\021_event"
+          + "_based_hold\"\247\001\n\023ObjectAccessControl\022\014\n\004r"
+          + "ole\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\016\n\006entity\030\003 \001(\t\022\021\n"
+          + "\tentity_id\030\004 \001(\t\022\r\n\005email\030\005 \001(\t\022\016\n\006domai"
+          + "n\030\006 \001(\t\0224\n\014project_team\030\007 \001(\0132\036.google.s"
+          + "torage.v2.ProjectTeam\"l\n\023ListObjectsResp"
+          + "onse\022*\n\007objects\030\001 \003(\0132\031.google.storage.v"
+          + "2.Object\022\020\n\010prefixes\030\002 \003(\t\022\027\n\017next_page_"
+          + "token\030\003 \001(\t\"3\n\013ProjectTeam\022\026\n\016project_nu"
+          + "mber\030\001 \001(\t\022\014\n\004team\030\002 \001(\t\"\'\n\016ServiceAccou"
+          + "nt\022\025\n\remail_address\030\001 \001(\t\"*\n\005Owner\022\016\n\006en"
+          + "tity\030\001 \001(\t\022\021\n\tentity_id\030\002 \001(\t\"C\n\014Content"
+          + "Range\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\027\n\017com"
+          + "plete_length\030\003 \001(\003*\377\001\n\023PredefinedObjectA"
+          + "cl\022%\n!PREDEFINED_OBJECT_ACL_UNSPECIFIED\020"
+          + "\000\022!\n\035OBJECT_ACL_AUTHENTICATED_READ\020\001\022(\n$"
+          + "OBJECT_ACL_BUCKET_OWNER_FULL_CONTROL\020\002\022 "
+          + "\n\034OBJECT_ACL_BUCKET_OWNER_READ\020\003\022\026\n\022OBJE"
+          + "CT_ACL_PRIVATE\020\004\022\036\n\032OBJECT_ACL_PROJECT_P"
+          + "RIVATE\020\005\022\032\n\026OBJECT_ACL_PUBLIC_READ\020\006*\325\001\n"
+          + "\023PredefinedBucketAcl\022%\n!PREDEFINED_BUCKE"
+          + "T_ACL_UNSPECIFIED\020\000\022!\n\035BUCKET_ACL_AUTHEN"
+          + "TICATED_READ\020\001\022\026\n\022BUCKET_ACL_PRIVATE\020\002\022\036"
+          + "\n\032BUCKET_ACL_PROJECT_PRIVATE\020\003\022\032\n\026BUCKET"
+          + "_ACL_PUBLIC_READ\020\004\022 \n\034BUCKET_ACL_PUBLIC_"
+          + "READ_WRITE\020\0052\260\033\n\007Storage\022W\n\014DeleteBucket"
+          + "\022&.google.storage.v2.DeleteBucketRequest"
+          + "\032\026.google.protobuf.Empty\"\007\332A\004name\022T\n\tGet"
+          + "Bucket\022#.google.storage.v2.GetBucketRequ"
+          + "est\032\031.google.storage.v2.Bucket\"\007\332A\004name\022"
+          + "m\n\014CreateBucket\022&.google.storage.v2.Crea"
+          + "teBucketRequest\032\031.google.storage.v2.Buck"
+          + "et\"\032\332A\027parent,bucket,bucket_id\022g\n\013ListBu"
+          + "ckets\022%.google.storage.v2.ListBucketsReq"
+          + "uest\032&.google.storage.v2.ListBucketsResp"
+          + "onse\"\t\332A\006parent\022v\n\031LockBucketRetentionPo"
+          + "licy\0223.google.storage.v2.LockBucketReten"
+          + "tionPolicyRequest\032\031.google.storage.v2.Bu"
+          + "cket\"\t\332A\006bucket\022V\n\014GetIamPolicy\022\".google"
+          + ".iam.v1.GetIamPolicyRequest\032\025.google.iam"
+          + ".v1.Policy\"\013\332A\010resource\022]\n\014SetIamPolicy\022"
+          + "\".google.iam.v1.SetIamPolicyRequest\032\025.go"
+          + "ogle.iam.v1.Policy\"\022\332A\017resource,policy\022\202"
+          + "\001\n\022TestIamPermissions\022(.google.iam.v1.Te"
+          + "stIamPermissionsRequest\032).google.iam.v1."
+          + "TestIamPermissionsResponse\"\027\332A\024resource,"
+          + "permissions\022h\n\014UpdateBucket\022&.google.sto"
+          + "rage.v2.UpdateBucketRequest\032\031.google.sto"
+          + "rage.v2.Bucket\"\025\332A\022bucket,update_mask\022c\n"
+          + "\022DeleteNotification\022,.google.storage.v2."
+          + "DeleteNotificationRequest\032\026.google.proto"
+          + "buf.Empty\"\007\332A\004name\022f\n\017GetNotification\022)."
+          + "google.storage.v2.GetNotificationRequest"
+          + "\032\037.google.storage.v2.Notification\"\007\332A\004na"
+          + "me\022{\n\022CreateNotification\022,.google.storag"
+          + "e.v2.CreateNotificationRequest\032\037.google."
+          + "storage.v2.Notification\"\026\332A\023parent,notif"
+          + "ication\022y\n\021ListNotifications\022+.google.st"
+          + "orage.v2.ListNotificationsRequest\032,.goog"
+          + "le.storage.v2.ListNotificationsResponse\""
+          + "\t\332A\006parent\022U\n\rComposeObject\022\'.google.sto"
+          + "rage.v2.ComposeObjectRequest\032\031.google.st"
+          + "orage.v2.Object\"\000\022{\n\014DeleteObject\022&.goog"
+          + "le.storage.v2.DeleteObjectRequest\032\026.goog"
+          + "le.protobuf.Empty\"+\332A\rbucket,object\332A\030bu"
+          + "cket,object,generation\022x\n\tGetObject\022#.go"
+          + "ogle.storage.v2.GetObjectRequest\032\031.googl"
+          + "e.storage.v2.Object\"+\332A\rbucket,object\332A\030"
+          + "bucket,object,generation\022\210\001\n\nReadObject\022"
+          + "$.google.storage.v2.ReadObjectRequest\032%."
+          + "google.storage.v2.ReadObjectResponse\"+\332A"
+          + "\rbucket,object\332A\030bucket,object,generatio"
+          + "n0\001\022h\n\014UpdateObject\022&.google.storage.v2."
+          + "UpdateObjectRequest\032\031.google.storage.v2."
+          + "Object\"\025\332A\022object,update_mask\022`\n\013WriteOb"
+          + "ject\022%.google.storage.v2.WriteObjectRequ"
+          + "est\032&.google.storage.v2.WriteObjectRespo"
+          + "nse\"\000(\001\022g\n\013ListObjects\022%.google.storage."
+          + "v2.ListObjectsRequest\032&.google.storage.v"
+          + "2.ListObjectsResponse\"\t\332A\006parent\022^\n\rRewr"
+          + "iteObject\022\'.google.storage.v2.RewriteObj"
+          + "ectRequest\032\".google.storage.v2.RewriteRe"
+          + "sponse\"\000\022v\n\023StartResumableWrite\022-.google"
+          + ".storage.v2.StartResumableWriteRequest\032."
+          + ".google.storage.v2.StartResumableWriteRe"
+          + "sponse\"\000\022y\n\020QueryWriteStatus\022*.google.st"
+          + "orage.v2.QueryWriteStatusRequest\032+.googl"
+          + "e.storage.v2.QueryWriteStatusResponse\"\014\332"
+          + "A\tupload_id\022o\n\021GetServiceAccount\022+.googl"
+          + "e.storage.v2.GetServiceAccountRequest\032!."
+          + "google.storage.v2.ServiceAccount\"\n\332A\007pro"
+          + "ject\022\204\001\n\rCreateHmacKey\022\'.google.storage."
+          + "v2.CreateHmacKeyRequest\032(.google.storage"
+          + ".v2.CreateHmacKeyResponse\" \332A\035project,se"
+          + "rvice_account_email\022f\n\rDeleteHmacKey\022\'.g"
+          + "oogle.storage.v2.DeleteHmacKeyRequest\032\026."
+          + "google.protobuf.Empty\"\024\332A\021access_id,proj"
+          + "ect\022l\n\nGetHmacKey\022$.google.storage.v2.Ge"
+          + "tHmacKeyRequest\032\".google.storage.v2.Hmac"
+          + "KeyMetadata\"\024\332A\021access_id,project\022k\n\014Lis"
+          + "tHmacKeys\022&.google.storage.v2.ListHmacKe"
+          + "ysRequest\032\'.google.storage.v2.ListHmacKe"
+          + "ysResponse\"\n\332A\007project\022u\n\rUpdateHmacKey\022"
+          + "\'.google.storage.v2.UpdateHmacKeyRequest"
+          + "\032\".google.storage.v2.HmacKeyMetadata\"\027\332A"
+          + "\024hmac_key,update_mask\032\247\002\312A\026storage.googl"
+          + "eapis.com\322A\212\002https://www.googleapis.com/"
+          + "auth/cloud-platform,https://www.googleap"
+          + "is.com/auth/cloud-platform.read-only,htt"
           + "ps://www.googleapis.com/auth/devstorage."
-          + "read_writeB\334\001\n\025com.google.storage.v2B\014St"
-          + "orageProtoP\001Z8google.golang.org/genproto"
-          + "/googleapis/storage/v2;storage\352Ax\n!cloud"
-          + "kms.googleapis.com/CryptoKey\022Sprojects/{"
-          + "project}/locations/{location}/keyRings/{"
-          + "key_ring}/cryptoKeys/{crypto_key}b\006proto"
-          + "3"
+          + "full_control,https://www.googleapis.com/"
+          + "auth/devstorage.read_only,https://www.go"
+          + "ogleapis.com/auth/devstorage.read_writeB"
+          + "\334\001\n\025com.google.storage.v2B\014StorageProtoP"
+          + "\001Z8google.golang.org/genproto/googleapis"
+          + "/storage/v2;storage\352Ax\n!cloudkms.googlea"
+          + "pis.com/CryptoKey\022Sprojects/{project}/lo"
+          + "cations/{location}/keyRings/{key_ring}/c"
+          + "ryptoKeys/{crypto_key}b\006proto3"
     };
     descriptor =
         com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -1205,7 +1204,7 @@ public final class StorageProto {
             new java.lang.String[] {
               "DestinationName",
               "DestinationBucket",
-              "DestinationCustomerEncryption",
+              "DestinationKmsKey",
               "Destination",
               "SourceBucket",
               "SourceObject",
diff --git a/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto b/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto
index 9c54a5ca..33b1f1cf 100644
--- a/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto
+++ b/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto
@@ -1,4 +1,4 @@
-// Copyright 2021 Google LLC
+// Copyright 2022 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -923,6 +923,13 @@ message QueryWriteStatusResponse {
 }
 
 // Request message for RewriteObject.
+// If the source object is encrypted using a Customer-Supplied Encryption Key
+// the key information must be provided in the copy_source_encryption_algorithm,
+// copy_source_encryption_key_bytes, and copy_source_encryption_key_sha256_bytes
+// fields. If the destination object should be encrypted the keying information
+// should be provided in the encryption_algorithm, encryption_key_bytes, and
+// encryption_key_sha256_bytes fields of the
+// common_object_request_params.customer_encryption field.
 message RewriteObjectRequest {
   // Immutable. The name of the destination object. Nearly any sequence of unicode
   // characters is valid. See
@@ -941,14 +948,19 @@ message RewriteObjectRequest {
     }
   ];
 
-  // Metadata of customer-supplied encryption key for the destination object, if
-  // the object is to be encrypted by such a key.
-  CustomerEncryption destination_customer_encryption = 26;
+  // The name of the Cloud KMS key that will be used to encrypt the destination
+  // object. The Cloud KMS key must be located in same location as the object.
+  // If the parameter is not specified, the request uses the destination
+  // bucket's default encryption key, if any, or else the Google-managed
+  // encryption key.
+  string destination_kms_key = 27 [(google.api.resource_reference) = {
+                                     type: "cloudkms.googleapis.com/CryptoKey"
+                                   }];
 
   // Properties of the destination, post-rewrite object.
-  // The `name`, `bucket`, and `customer_encryption` fields must not be
-  // populated (these values are specified in the `destination_name`,
-  // `destination_bucket`, and `destination_customer_encryption` fields).
+  // The `name`, `bucket` and `kms_key` fields must not be populated (these
+  // values are specified in the `destination_name`, `destination_bucket`, and
+  // `destination_kms_key` fields).
   // If `destination` is present it will be used to construct the destination
   // object's metadata; otherwise the destination object's metadata will be
   // copied from the source object.
@@ -1019,15 +1031,18 @@ message RewriteObjectRequest {
   // `rewriteToken` is invalid.
   int64 max_bytes_rewritten_per_call = 15;
 
-  // The algorithm used to encrypt the source object, if any.
+  // The algorithm used to encrypt the source object, if any. Used if the source
+  // object was encrypted with a Customer-Supplied Encryption Key.
   string copy_source_encryption_algorithm = 16;
 
-  // The encryption key used to encrypt the source object, if any.
-  // In raw bytes format (not base64-encoded).
+  // The raw bytes (not base64-encoded) AES-256 encryption key used to encrypt
+  // the source object, if it was encrypted with a Customer-Supplied Encryption
+  // Key.
   bytes copy_source_encryption_key_bytes = 21;
 
-  // The SHA-256 hash of the key used to encrypt the source object, if any.
-  // In raw bytes format (not base64-encoded).
+  // The raw bytes (not base64-encoded) SHA256 hash of the encryption key used
+  // to encrypt the source object, if it was encrypted with a Customer-Supplied
+  // Encryption Key.
   bytes copy_source_encryption_key_sha256_bytes = 22;
 
   // A set of parameters common to Storage API requests concerning an object.
@@ -1257,15 +1272,16 @@ message UpdateHmacKeyRequest {
 
 // Parameters that can be passed to any object request.
 message CommonObjectRequestParams {
-  // Encryption algorithm used with Customer-Supplied Encryption Keys feature.
+  // Encryption algorithm used with the Customer-Supplied Encryption Keys
+  // feature.
   string encryption_algorithm = 1;
 
-  // Encryption key used with Customer-Supplied Encryption Keys feature.
+  // Encryption key used with the Customer-Supplied Encryption Keys feature.
   // In raw bytes format (not base64-encoded).
   bytes encryption_key_bytes = 4;
 
-  // SHA256 hash of encryption key used with Customer-Supplied Encryption Keys
-  // feature.
+  // SHA256 hash of encryption key used with the Customer-Supplied Encryption
+  // Keys feature.
   bytes encryption_key_sha256_bytes = 5;
 }
 
@@ -1406,8 +1422,8 @@ message Bucket {
 
   // Encryption properties of a bucket.
   message Encryption {
-    // A Cloud KMS key that will be used to encrypt objects inserted into this
-    // bucket, if no encryption method is specified.
+    // The name of the Cloud KMS key that will be used to encrypt objects
+    // inserted into this bucket, if no encryption method is specified.
     string default_kms_key = 1 [(google.api.resource_reference) = {
                                   type: "cloudkms.googleapis.com/CryptoKey"
                                 }];
@@ -1852,8 +1868,8 @@ message Notification {
   string payload_format = 6 [(google.api.field_behavior) = REQUIRED];
 }
 
-// Describes the customer-specified mechanism used to store an Object's data at
-// rest.
+// Describes the Customer-Supplied Encryption Key mechanism used to store an
+// Object's data at rest.
 message CustomerEncryption {
   // The encryption algorithm.
   string encryption_algorithm = 1;
@@ -2008,7 +2024,7 @@ message Object {
   // [FieldViolation][google.rpc.BadRequest.FieldViolation].
   Owner owner = 24 [(google.api.field_behavior) = OUTPUT_ONLY];
 
-  // Metadata of customer-supplied encryption key, if the object is encrypted by
+  // Metadata of Customer-Supplied Encryption Key, if the object is encrypted by
   // such a key.
   CustomerEncryption customer_encryption = 25;
 


Test patch:
diff --git a/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java b/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java
index 565f82f0..4c5c1d74 100644
--- a/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java
+++ b/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java
@@ -1918,7 +1918,9 @@ public class StorageClientTest {
         RewriteObjectRequest.newBuilder()
             .setDestinationName("destinationName-1762755655")
             .setDestinationBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString())
-            .setDestinationCustomerEncryption(CustomerEncryption.newBuilder().build())
+            .setDestinationKmsKey(
+                CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+                    .toString())
             .setDestination(Object.newBuilder().build())
             .setSourceBucket("sourceBucket841604581")
             .setSourceObject("sourceObject1196439354")
@@ -1950,9 +1952,7 @@ public class StorageClientTest {
 
     Assert.assertEquals(request.getDestinationName(), actualRequest.getDestinationName());
     Assert.assertEquals(request.getDestinationBucket(), actualRequest.getDestinationBucket());
-    Assert.assertEquals(
-        request.getDestinationCustomerEncryption(),
-        actualRequest.getDestinationCustomerEncryption());
+    Assert.assertEquals(request.getDestinationKmsKey(), actualRequest.getDestinationKmsKey());
     Assert.assertEquals(request.getDestination(), actualRequest.getDestination());
     Assert.assertEquals(request.getSourceBucket(), actualRequest.getSourceBucket());
     Assert.assertEquals(request.getSourceObject(), actualRequest.getSourceObject());
@@ -2004,7 +2004,9 @@ public class StorageClientTest {
           RewriteObjectRequest.newBuilder()
               .setDestinationName("destinationName-1762755655")
               .setDestinationBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString())
-              .setDestinationCustomerEncryption(CustomerEncryption.newBuilder().build())
+              .setDestinationKmsKey(
+                  CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+                      .toString())
               .setDestination(Object.newBuilder().build())
               .setSourceBucket("sourceBucket841604581")
               .setSourceObject("sourceObject1196439354")