Repository: googleapis/java-storage
Pull request #2439 (2024-03-07 07:06:10)

test(deps): update cross product test dependencies
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.cloud:google-cloud-kms](https://togithub.com/googleapis/google-cloud-java) | `2.39.0` -> `2.40.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-kms/2.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-kms/2.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-kms/2.39.0/2.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-kms/2.39.0/2.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [com.google.api.grpc:proto-google-cloud-kms-v1](https://togithub.com/googleapis/google-cloud-java) | `0.130.0` -> `0.131.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.api.grpc:proto-google-cloud-kms-v1/0.131.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.api.grpc:proto-google-cloud-kms-v1/0.131.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.api.grpc:proto-google-cloud-kms-v1/0.130.0/0.131.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.api.grpc:proto-google-cloud-kms-v1/0.130.0/0.131.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [com.google.cloud:google-cloud-pubsub](https://togithub.com/googleapis/java-pubsub) | `1.127.1` -> `1.127.2` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-pubsub/1.127.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-pubsub/1.127.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-pubsub/1.127.1/1.127.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-pubsub/1.127.1/1.127.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [com.google.api.grpc:proto-google-cloud-pubsub-v1](https://togithub.com/googleapis/java-pubsub/proto-google-cloud-pubsub-v1) ([source](https://togithub.com/googleapis/java-pubsub)) | `1.109.1` -> `1.109.2` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.api.grpc:proto-google-cloud-pubsub-v1/1.109.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.api.grpc:proto-google-cloud-pubsub-v1/1.109.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.api.grpc:proto-google-cloud-pubsub-v1/1.109.1/1.109.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.api.grpc:proto-google-cloud-pubsub-v1/1.109.1/1.109.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/java-pubsub (com.google.cloud:google-cloud-pubsub)</summary>

### [`v1.127.2`](https://togithub.com/googleapis/java-pubsub/blob/HEAD/CHANGELOG.md#11272-2024-03-10)

##### Bug Fixes

-   **deps:** Update the Java code generator (gapic-generator-java) to 2.37.0 ([#&#8203;1938](https://togithub.com/googleapis/java-pubsub/issues/1938)) ([1435c4e](https://togithub.com/googleapis/java-pubsub/commit/1435c4e4d25d789fadbfc2c54c2f90b138693b40))

##### Dependencies

-   Update dependency com.google.cloud:google-cloud-bigquery to v2.38.1 ([#&#8203;1944](https://togithub.com/googleapis/java-pubsub/issues/1944)) ([76317e1](https://togithub.com/googleapis/java-pubsub/commit/76317e1fe60467b4bbe9b4867d0a29e983ce687f))
-   Update dependency com.google.cloud:google-cloud-storage to v2.35.0 ([#&#8203;1942](https://togithub.com/googleapis/java-pubsub/issues/1942)) ([989f7ba](https://togithub.com/googleapis/java-pubsub/commit/989f7bac5bada7ac5d6e68c742af0290cb757e4b))
-   Update dependency com.google.cloud:google-cloud-storage to v2.35.0 ([#&#8203;1946](https://togithub.com/googleapis/java-pubsub/issues/1946)) ([b94989d](https://togithub.com/googleapis/java-pubsub/commit/b94989df6c5ae6f62e648016cef2e008a3b9ed05))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/java-storage).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjcuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIzMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->


forking-renovate[bot]: ### Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

 ⚠ **Warning**: custom changes will be lost.

Patch:
diff --git a/README.md b/README.md
index e4a3cfd1..90030c80 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file:
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>libraries-bom</artifactId>
-      <version>26.33.0</version>
+      <version>26.34.0</version>
       <type>pom</type>
       <scope>import</scope>
     </dependency>
@@ -50,7 +50,7 @@ If you are using Maven without the BOM, add this to your dependencies:
 If you are using Gradle 5.x or later, add this to your dependencies:
 
 ```Groovy
-implementation platform('com.google.cloud:libraries-bom:26.33.0')
+implementation platform('com.google.cloud:libraries-bom:26.34.0')
 
 implementation 'com.google.cloud:google-cloud-storage'
 ```
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 83ed6ef7..cb160294 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
@@ -3576,6 +3576,7 @@ public class StorageClient implements BackgroundResource {
    *           .setLexicographicStart("lexicographicStart-2093413008")
    *           .setLexicographicEnd("lexicographicEnd1646968169")
    *           .setSoftDeleted(true)
+   *           .setIncludeFoldersAsPrefixes(true)
    *           .setMatchGlob("matchGlob613636317")
    *           .build();
    *   for (Object element : storageClient.listObjects(request).iterateAll()) {
@@ -3617,6 +3618,7 @@ public class StorageClient implements BackgroundResource {
    *           .setLexicographicStart("lexicographicStart-2093413008")
    *           .setLexicographicEnd("lexicographicEnd1646968169")
    *           .setSoftDeleted(true)
+   *           .setIncludeFoldersAsPrefixes(true)
    *           .setMatchGlob("matchGlob613636317")
    *           .build();
    *   ApiFuture<Object> future = storageClient.listObjectsPagedCallable().futureCall(request);
@@ -3658,6 +3660,7 @@ public class StorageClient implements BackgroundResource {
    *           .setLexicographicStart("lexicographicStart-2093413008")
    *           .setLexicographicEnd("lexicographicEnd1646968169")
    *           .setSoftDeleted(true)
+   *           .setIncludeFoldersAsPrefixes(true)
    *           .setMatchGlob("matchGlob613636317")
    *           .build();
    *   while (true) {
diff --git a/gapic-google-cloud-storage-v2/src/main/resources/META-INF/native-image/com.google.storage.v2/reflect-config.json b/gapic-google-cloud-storage-v2/src/main/resources/META-INF/native-image/com.google.storage.v2/reflect-config.json
index aedfd2a2..534ec435 100644
--- a/gapic-google-cloud-storage-v2/src/main/resources/META-INF/native-image/com.google.storage.v2/reflect-config.json
+++ b/gapic-google-cloud-storage-v2/src/main/resources/META-INF/native-image/com.google.storage.v2/reflect-config.json
@@ -1601,6 +1601,24 @@
     "allDeclaredClasses": true,
     "allPublicClasses": true
   },
+  {
+    "name": "com.google.storage.v2.Bucket$HierarchicalNamespace",
+    "queryAllDeclaredConstructors": true,
+    "queryAllPublicConstructors": true,
+    "queryAllDeclaredMethods": true,
+    "allPublicMethods": true,
+    "allDeclaredClasses": true,
+    "allPublicClasses": true
+  },
+  {
+    "name": "com.google.storage.v2.Bucket$HierarchicalNamespace$Builder",
+    "queryAllDeclaredConstructors": true,
+    "queryAllPublicConstructors": true,
+    "queryAllDeclaredMethods": true,
+    "allPublicMethods": true,
+    "allDeclaredClasses": true,
+    "allPublicClasses": true
+  },
   {
     "name": "com.google.storage.v2.Bucket$IamConfig",
     "queryAllDeclaredConstructors": true,
diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java
index c65cddfc..c1bf741c 100644
--- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java
+++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java
@@ -20,7 +20,6 @@ import static com.google.storage.control.v2.StorageControlClient.ListFoldersPage
 
 import com.google.api.core.ApiFunction;
 import com.google.api.core.ApiFuture;
-import com.google.api.core.BetaApi;
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
@@ -533,8 +532,6 @@ public class StorageControlStubSettings extends StubSettings<StorageControlStubS
     }
 
     /** Returns the builder for the settings used for calls to renameFolder. */
-    @BetaApi(
-        "The surface for use by generated code is not stable yet and may change in the future.")
     public OperationCallSettings.Builder<RenameFolderRequest, Folder, RenameFolderMetadata>
         renameFolderOperationSettings() {
       return renameFolderOperationSettings;
diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml
index a7138c4b..604b126f 100644
--- a/google-cloud-storage/pom.xml
+++ b/google-cloud-storage/pom.xml
@@ -16,7 +16,7 @@
   </parent>
   <properties>
     <site.installationModule>google-cloud-storage</site.installationModule>
-    <pubsub-proto.version>1.109.1</pubsub-proto.version>
+    <pubsub-proto.version>1.109.2</pubsub-proto.version>
     <junit-platform.version>5.10.2</junit-platform.version>
   </properties>
   <dependencies>
@@ -173,13 +173,13 @@
     <dependency>
       <groupId>com.google.api.grpc</groupId>
       <artifactId>proto-google-cloud-kms-v1</artifactId>
-      <version>0.130.0</version>
+      <version>0.131.0</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-kms</artifactId>
-      <version>2.39.0</version>
+      <version>2.40.0</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/pom.xml b/pom.xml
index 3d04204c..98845612 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,12 +81,12 @@
       <dependency>
         <groupId>com.google.apis</groupId>
         <artifactId>google-api-services-storage</artifactId>
-        <version>v1-rev20240209-2.0.0</version>
+        <version>v1-rev20240307-2.0.0</version>
       </dependency>
       <dependency>
         <groupId>com.google.cloud</groupId>
         <artifactId>google-cloud-pubsub</artifactId>
-        <version>1.127.1</version>
+        <version>1.127.2</version>
         <scope>test</scope>
       </dependency>
       <dependency>
diff --git a/proto-google-cloud-storage-v2/clirr-ignored-differences.xml b/proto-google-cloud-storage-v2/clirr-ignored-differences.xml
index 32b659c4..61451374 100644
--- a/proto-google-cloud-storage-v2/clirr-ignored-differences.xml
+++ b/proto-google-cloud-storage-v2/clirr-ignored-differences.xml
@@ -66,4 +66,16 @@
     <className>com/google/storage/v2/*</className>
     <method>* *HardDeleteTime*(*)</method>
   </difference>
+
+  <difference>
+    <differenceType>7012</differenceType>
+    <className>com/google/storage/v2/*</className>
+    <method>* *HierarchicalNamespace*(*)</method>
+  </difference>
+
+  <difference>
+    <differenceType>7012</differenceType>
+    <className>com/google/storage/v2/*</className>
+    <method>* *IncludeFoldersAsPrefixes*(*)</method>
+  </difference>
 </differences>
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 faca15fd..347b9632 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
@@ -18085,6 +18085,545 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
     }
   }
 
+  public interface HierarchicalNamespaceOrBuilder
+      extends
+      // @@protoc_insertion_point(interface_extends:google.storage.v2.Bucket.HierarchicalNamespace)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     *
+     *
+     * <pre>
+     * Optional. Enables the hierarchical namespace feature.
+     * </pre>
+     *
+     * <code>bool enabled = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @return The enabled.
+     */
+    boolean getEnabled();
+  }
+  /**
+   *
+   *
+   * <pre>
+   * Configuration for a bucket's hierarchical namespace feature.
+   * </pre>
+   *
+   * Protobuf type {@code google.storage.v2.Bucket.HierarchicalNamespace}
+   */
+  public static final class HierarchicalNamespace extends com.google.protobuf.GeneratedMessageV3
+      implements
+      // @@protoc_insertion_point(message_implements:google.storage.v2.Bucket.HierarchicalNamespace)
+      HierarchicalNamespaceOrBuilder {
+    private static final long serialVersionUID = 0L;
+    // Use HierarchicalNamespace.newBuilder() to construct.
+    private HierarchicalNamespace(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private HierarchicalNamespace() {}
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+      return new HierarchicalNamespace();
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return com.google.storage.v2.StorageProto
+          .internal_static_google_storage_v2_Bucket_HierarchicalNamespace_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.google.storage.v2.StorageProto
+          .internal_static_google_storage_v2_Bucket_HierarchicalNamespace_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.google.storage.v2.Bucket.HierarchicalNamespace.class,
+              com.google.storage.v2.Bucket.HierarchicalNamespace.Builder.class);
+    }
+
+    public static final int ENABLED_FIELD_NUMBER = 1;
+    private boolean enabled_ = false;
+    /**
+     *
+     *
+     * <pre>
+     * Optional. Enables the hierarchical namespace feature.
+     * </pre>
+     *
+     * <code>bool enabled = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @return The enabled.
+     */
+    @java.lang.Override
+    public boolean getEnabled() {
+      return enabled_;
+    }
+
+    private byte memoizedIsInitialized = -1;
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+      if (enabled_ != false) {
+        output.writeBool(1, enabled_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (enabled_ != false) {
+        size += com.google.protobuf.CodedOutputStream.computeBoolSize(1, enabled_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+        return true;
+      }
+      if (!(obj instanceof com.google.storage.v2.Bucket.HierarchicalNamespace)) {
+        return super.equals(obj);
+      }
+      com.google.storage.v2.Bucket.HierarchicalNamespace other =
+          (com.google.storage.v2.Bucket.HierarchicalNamespace) obj;
+
+      if (getEnabled() != other.getEnabled()) return false;
+      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (37 * hash) + ENABLED_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getEnabled());
+      hash = (29 * hash) + getUnknownFields().hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        java.io.InputStream input) throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
+          PARSER, input, extensionRegistry);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseDelimitedFrom(
+        java.io.InputStream input) throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseDelimitedFrom(
+        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
+          PARSER, input, extensionRegistry);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
+          PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() {
+      return newBuilder();
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+
+    public static Builder newBuilder(com.google.storage.v2.Bucket.HierarchicalNamespace prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Configuration for a bucket's hierarchical namespace feature.
+     * </pre>
+     *
+     * Protobuf type {@code google.storage.v2.Bucket.HierarchicalNamespace}
+     */
+    public static final class Builder
+        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
+        implements
+        // @@protoc_insertion_point(builder_implements:google.storage.v2.Bucket.HierarchicalNamespace)
+        com.google.storage.v2.Bucket.HierarchicalNamespaceOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return com.google.storage.v2.StorageProto
+            .internal_static_google_storage_v2_Bucket_HierarchicalNamespace_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.storage.v2.StorageProto
+            .internal_static_google_storage_v2_Bucket_HierarchicalNamespace_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.storage.v2.Bucket.HierarchicalNamespace.class,
+                com.google.storage.v2.Bucket.HierarchicalNamespace.Builder.class);
+      }
+
+      // Construct using com.google.storage.v2.Bucket.HierarchicalNamespace.newBuilder()
+      private Builder() {}
+
+      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+      }
+
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        bitField0_ = 0;
+        enabled_ = false;
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+        return com.google.storage.v2.StorageProto
+            .internal_static_google_storage_v2_Bucket_HierarchicalNamespace_descriptor;
+      }
+
+      @java.lang.Override
+      public com.google.storage.v2.Bucket.HierarchicalNamespace getDefaultInstanceForType() {
+        return com.google.storage.v2.Bucket.HierarchicalNamespace.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public com.google.storage.v2.Bucket.HierarchicalNamespace build() {
+        com.google.storage.v2.Bucket.HierarchicalNamespace result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public com.google.storage.v2.Bucket.HierarchicalNamespace buildPartial() {
+        com.google.storage.v2.Bucket.HierarchicalNamespace result =
+            new com.google.storage.v2.Bucket.HierarchicalNamespace(this);
+        if (bitField0_ != 0) {
+          buildPartial0(result);
+        }
+        onBuilt();
+        return result;
+      }
+
+      private void buildPartial0(com.google.storage.v2.Bucket.HierarchicalNamespace result) {
+        int from_bitField0_ = bitField0_;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          result.enabled_ = enabled_;
+        }
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+        return super.setField(field, value);
+      }
+
+      @java.lang.Override
+      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+
+      @java.lang.Override
+      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index,
+          java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof com.google.storage.v2.Bucket.HierarchicalNamespace) {
+          return mergeFrom((com.google.storage.v2.Bucket.HierarchicalNamespace) other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(com.google.storage.v2.Bucket.HierarchicalNamespace other) {
+        if (other == com.google.storage.v2.Bucket.HierarchicalNamespace.getDefaultInstance())
+          return this;
+        if (other.getEnabled() != false) {
+          setEnabled(other.getEnabled());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              case 8:
+                {
+                  enabled_ = input.readBool();
+                  bitField0_ |= 0x00000001;
+                  break;
+                } // case 8
+              default:
+                {
+                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                    done = true; // was an endgroup tag
+                  }
+                  break;
+                } // default:
+            } // switch (tag)
+          } // while (!done)
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.unwrapIOException();
+        } finally {
+          onChanged();
+        } // finally
+        return this;
+      }
+
+      private int bitField0_;
+
+      private boolean enabled_;
+      /**
+       *
+       *
+       * <pre>
+       * Optional. Enables the hierarchical namespace feature.
+       * </pre>
+       *
+       * <code>bool enabled = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
+       *
+       * @return The enabled.
+       */
+      @java.lang.Override
+      public boolean getEnabled() {
+        return enabled_;
+      }
+      /**
+       *
+       *
+       * <pre>
+       * Optional. Enables the hierarchical namespace feature.
+       * </pre>
+       *
+       * <code>bool enabled = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
+       *
+       * @param value The enabled to set.
+       * @return This builder for chaining.
+       */
+      public Builder setEnabled(boolean value) {
+
+        enabled_ = value;
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return this;
+      }
+      /**
+       *
+       *
+       * <pre>
+       * Optional. Enables the hierarchical namespace feature.
+       * </pre>
+       *
+       * <code>bool enabled = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
+       *
+       * @return This builder for chaining.
+       */
+      public Builder clearEnabled() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        enabled_ = false;
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+      // @@protoc_insertion_point(builder_scope:google.storage.v2.Bucket.HierarchicalNamespace)
+    }
+
+    // @@protoc_insertion_point(class_scope:google.storage.v2.Bucket.HierarchicalNamespace)
+    private static final com.google.storage.v2.Bucket.HierarchicalNamespace DEFAULT_INSTANCE;
+
+    static {
+      DEFAULT_INSTANCE = new com.google.storage.v2.Bucket.HierarchicalNamespace();
+    }
+
+    public static com.google.storage.v2.Bucket.HierarchicalNamespace getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<HierarchicalNamespace> PARSER =
+        new com.google.protobuf.AbstractParser<HierarchicalNamespace>() {
+          @java.lang.Override
+          public HierarchicalNamespace parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            Builder builder = newBuilder();
+            try {
+              builder.mergeFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(builder.buildPartial());
+            } catch (com.google.protobuf.UninitializedMessageException e) {
+              throw e.asInvalidProtocolBufferException()
+                  .setUnfinishedMessage(builder.buildPartial());
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(e)
+                  .setUnfinishedMessage(builder.buildPartial());
+            }
+            return builder.buildPartial();
+          }
+        };
+
+    public static com.google.protobuf.Parser<HierarchicalNamespace> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<HierarchicalNamespace> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.storage.v2.Bucket.HierarchicalNamespace getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+  }
+
   private int bitField0_;
   public static final int NAME_FIELD_NUMBER = 1;
 
@@ -19635,6 +20174,69 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
         : autoclass_;
   }
 
+  public static final int HIERARCHICAL_NAMESPACE_FIELD_NUMBER = 32;
+  private com.google.storage.v2.Bucket.HierarchicalNamespace hierarchicalNamespace_;
+  /**
+   *
+   *
+   * <pre>
+   * Optional. The bucket's hierarchical namespace configuration. If there is no
+   * configuration, the hierarchical namespace feature will be disabled and have
+   * no effect on the bucket.
+   * </pre>
+   *
+   * <code>
+   * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+   * </code>
+   *
+   * @return Whether the hierarchicalNamespace field is set.
+   */
+  @java.lang.Override
+  public boolean hasHierarchicalNamespace() {
+    return ((bitField0_ & 0x00002000) != 0);
+  }
+  /**
+   *
+   *
+   * <pre>
+   * Optional. The bucket's hierarchical namespace configuration. If there is no
+   * configuration, the hierarchical namespace feature will be disabled and have
+   * no effect on the bucket.
+   * </pre>
+   *
+   * <code>
+   * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+   * </code>
+   *
+   * @return The hierarchicalNamespace.
+   */
+  @java.lang.Override
+  public com.google.storage.v2.Bucket.HierarchicalNamespace getHierarchicalNamespace() {
+    return hierarchicalNamespace_ == null
+        ? com.google.storage.v2.Bucket.HierarchicalNamespace.getDefaultInstance()
+        : hierarchicalNamespace_;
+  }
+  /**
+   *
+   *
+   * <pre>
+   * Optional. The bucket's hierarchical namespace configuration. If there is no
+   * configuration, the hierarchical namespace feature will be disabled and have
+   * no effect on the bucket.
+   * </pre>
+   *
+   * <code>
+   * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+   * </code>
+   */
+  @java.lang.Override
+  public com.google.storage.v2.Bucket.HierarchicalNamespaceOrBuilder
+      getHierarchicalNamespaceOrBuilder() {
+    return hierarchicalNamespace_ == null
+        ? com.google.storage.v2.Bucket.HierarchicalNamespace.getDefaultInstance()
+        : hierarchicalNamespace_;
+  }
+
   public static final int SOFT_DELETE_POLICY_FIELD_NUMBER = 31;
   private com.google.storage.v2.Bucket.SoftDeletePolicy softDeletePolicy_;
   /**
@@ -19653,7 +20255,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
    */
   @java.lang.Override
   public boolean hasSoftDeletePolicy() {
-    return ((bitField0_ & 0x00002000) != 0);
+    return ((bitField0_ & 0x00004000) != 0);
   }
   /**
    *
@@ -19791,9 +20393,12 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(etag_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 29, etag_);
     }
-    if (((bitField0_ & 0x00002000) != 0)) {
+    if (((bitField0_ & 0x00004000) != 0)) {
       output.writeMessage(31, getSoftDeletePolicy());
     }
+    if (((bitField0_ & 0x00002000) != 0)) {
+      output.writeMessage(32, getHierarchicalNamespace());
+    }
     getUnknownFields().writeTo(output);
   }
 
@@ -19895,9 +20500,13 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(etag_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(29, etag_);
     }
-    if (((bitField0_ & 0x00002000) != 0)) {
+    if (((bitField0_ & 0x00004000) != 0)) {
       size += com.google.protobuf.CodedOutputStream.computeMessageSize(31, getSoftDeletePolicy());
     }
+    if (((bitField0_ & 0x00002000) != 0)) {
+      size +=
+          com.google.protobuf.CodedOutputStream.computeMessageSize(32, getHierarchicalNamespace());
+    }
     size += getUnknownFields().getSerializedSize();
     memoizedSize = size;
     return size;
@@ -19980,6 +20589,10 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
     if (hasAutoclass()) {
       if (!getAutoclass().equals(other.getAutoclass())) return false;
     }
+    if (hasHierarchicalNamespace() != other.hasHierarchicalNamespace()) return false;
+    if (hasHierarchicalNamespace()) {
+      if (!getHierarchicalNamespace().equals(other.getHierarchicalNamespace())) return false;
+    }
     if (hasSoftDeletePolicy() != other.hasSoftDeletePolicy()) return false;
     if (hasSoftDeletePolicy()) {
       if (!getSoftDeletePolicy().equals(other.getSoftDeletePolicy())) return false;
@@ -20085,6 +20698,10 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
       hash = (37 * hash) + AUTOCLASS_FIELD_NUMBER;
       hash = (53 * hash) + getAutoclass().hashCode();
     }
+    if (hasHierarchicalNamespace()) {
+      hash = (37 * hash) + HIERARCHICAL_NAMESPACE_FIELD_NUMBER;
+      hash = (53 * hash) + getHierarchicalNamespace().hashCode();
+    }
     if (hasSoftDeletePolicy()) {
       hash = (37 * hash) + SOFT_DELETE_POLICY_FIELD_NUMBER;
       hash = (53 * hash) + getSoftDeletePolicy().hashCode();
@@ -20264,6 +20881,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
         getIamConfigFieldBuilder();
         getCustomPlacementConfigFieldBuilder();
         getAutoclassFieldBuilder();
+        getHierarchicalNamespaceFieldBuilder();
         getSoftDeletePolicyFieldBuilder();
       }
     }
@@ -20370,6 +20988,11 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
         autoclassBuilder_.dispose();
         autoclassBuilder_ = null;
       }
+      hierarchicalNamespace_ = null;
+      if (hierarchicalNamespaceBuilder_ != null) {
+        hierarchicalNamespaceBuilder_.dispose();
+        hierarchicalNamespaceBuilder_ = null;
+      }
       softDeletePolicy_ = null;
       if (softDeletePolicyBuilder_ != null) {
         softDeletePolicyBuilder_.dispose();
@@ -20535,9 +21158,16 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
         to_bitField0_ |= 0x00001000;
       }
       if (((from_bitField0_ & 0x10000000) != 0)) {
+        result.hierarchicalNamespace_ =
+            hierarchicalNamespaceBuilder_ == null
+                ? hierarchicalNamespace_
+                : hierarchicalNamespaceBuilder_.build();
+        to_bitField0_ |= 0x00002000;
+      }
+      if (((from_bitField0_ & 0x20000000) != 0)) {
         result.softDeletePolicy_ =
             softDeletePolicyBuilder_ == null ? softDeletePolicy_ : softDeletePolicyBuilder_.build();
-        to_bitField0_ |= 0x00002000;
+        to_bitField0_ |= 0x00004000;
       }
       result.bitField0_ |= to_bitField0_;
     }
@@ -20758,6 +21388,9 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
       if (other.hasAutoclass()) {
         mergeAutoclass(other.getAutoclass());
       }
+      if (other.hasHierarchicalNamespace()) {
+        mergeHierarchicalNamespace(other.getHierarchicalNamespace());
+      }
       if (other.hasSoftDeletePolicy()) {
         mergeSoftDeletePolicy(other.getSoftDeletePolicy());
       }
@@ -20987,9 +21620,16 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
               {
                 input.readMessage(
                     getSoftDeletePolicyFieldBuilder().getBuilder(), extensionRegistry);
-                bitField0_ |= 0x10000000;
+                bitField0_ |= 0x20000000;
                 break;
               } // case 250
+            case 258:
+              {
+                input.readMessage(
+                    getHierarchicalNamespaceFieldBuilder().getBuilder(), extensionRegistry);
+                bitField0_ |= 0x10000000;
+                break;
+              } // case 258
             default:
               {
                 if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -26086,6 +26726,233 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
       return autoclassBuilder_;
     }
 
+    private com.google.storage.v2.Bucket.HierarchicalNamespace hierarchicalNamespace_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+            com.google.storage.v2.Bucket.HierarchicalNamespace,
+            com.google.storage.v2.Bucket.HierarchicalNamespace.Builder,
+            com.google.storage.v2.Bucket.HierarchicalNamespaceOrBuilder>
+        hierarchicalNamespaceBuilder_;
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     *
+     * @return Whether the hierarchicalNamespace field is set.
+     */
+    public boolean hasHierarchicalNamespace() {
+      return ((bitField0_ & 0x10000000) != 0);
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     *
+     * @return The hierarchicalNamespace.
+     */
+    public com.google.storage.v2.Bucket.HierarchicalNamespace getHierarchicalNamespace() {
+      if (hierarchicalNamespaceBuilder_ == null) {
+        return hierarchicalNamespace_ == null
+            ? com.google.storage.v2.Bucket.HierarchicalNamespace.getDefaultInstance()
+            : hierarchicalNamespace_;
+      } else {
+        return hierarchicalNamespaceBuilder_.getMessage();
+      }
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     */
+    public Builder setHierarchicalNamespace(
+        com.google.storage.v2.Bucket.HierarchicalNamespace value) {
+      if (hierarchicalNamespaceBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        hierarchicalNamespace_ = value;
+      } else {
+        hierarchicalNamespaceBuilder_.setMessage(value);
+      }
+      bitField0_ |= 0x10000000;
+      onChanged();
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     */
+    public Builder setHierarchicalNamespace(
+        com.google.storage.v2.Bucket.HierarchicalNamespace.Builder builderForValue) {
+      if (hierarchicalNamespaceBuilder_ == null) {
+        hierarchicalNamespace_ = builderForValue.build();
+      } else {
+        hierarchicalNamespaceBuilder_.setMessage(builderForValue.build());
+      }
+      bitField0_ |= 0x10000000;
+      onChanged();
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     */
+    public Builder mergeHierarchicalNamespace(
+        com.google.storage.v2.Bucket.HierarchicalNamespace value) {
+      if (hierarchicalNamespaceBuilder_ == null) {
+        if (((bitField0_ & 0x10000000) != 0)
+            && hierarchicalNamespace_ != null
+            && hierarchicalNamespace_
+                != com.google.storage.v2.Bucket.HierarchicalNamespace.getDefaultInstance()) {
+          getHierarchicalNamespaceBuilder().mergeFrom(value);
+        } else {
+          hierarchicalNamespace_ = value;
+        }
+      } else {
+        hierarchicalNamespaceBuilder_.mergeFrom(value);
+      }
+      if (hierarchicalNamespace_ != null) {
+        bitField0_ |= 0x10000000;
+        onChanged();
+      }
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     */
+    public Builder clearHierarchicalNamespace() {
+      bitField0_ = (bitField0_ & ~0x10000000);
+      hierarchicalNamespace_ = null;
+      if (hierarchicalNamespaceBuilder_ != null) {
+        hierarchicalNamespaceBuilder_.dispose();
+        hierarchicalNamespaceBuilder_ = null;
+      }
+      onChanged();
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     */
+    public com.google.storage.v2.Bucket.HierarchicalNamespace.Builder
+        getHierarchicalNamespaceBuilder() {
+      bitField0_ |= 0x10000000;
+      onChanged();
+      return getHierarchicalNamespaceFieldBuilder().getBuilder();
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     */
+    public com.google.storage.v2.Bucket.HierarchicalNamespaceOrBuilder
+        getHierarchicalNamespaceOrBuilder() {
+      if (hierarchicalNamespaceBuilder_ != null) {
+        return hierarchicalNamespaceBuilder_.getMessageOrBuilder();
+      } else {
+        return hierarchicalNamespace_ == null
+            ? com.google.storage.v2.Bucket.HierarchicalNamespace.getDefaultInstance()
+            : hierarchicalNamespace_;
+      }
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. The bucket's hierarchical namespace configuration. If there is no
+     * configuration, the hierarchical namespace feature will be disabled and have
+     * no effect on the bucket.
+     * </pre>
+     *
+     * <code>
+     * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+     * </code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+            com.google.storage.v2.Bucket.HierarchicalNamespace,
+            com.google.storage.v2.Bucket.HierarchicalNamespace.Builder,
+            com.google.storage.v2.Bucket.HierarchicalNamespaceOrBuilder>
+        getHierarchicalNamespaceFieldBuilder() {
+      if (hierarchicalNamespaceBuilder_ == null) {
+        hierarchicalNamespaceBuilder_ =
+            new com.google.protobuf.SingleFieldBuilderV3<
+                com.google.storage.v2.Bucket.HierarchicalNamespace,
+                com.google.storage.v2.Bucket.HierarchicalNamespace.Builder,
+                com.google.storage.v2.Bucket.HierarchicalNamespaceOrBuilder>(
+                getHierarchicalNamespace(), getParentForChildren(), isClean());
+        hierarchicalNamespace_ = null;
+      }
+      return hierarchicalNamespaceBuilder_;
+    }
+
     private com.google.storage.v2.Bucket.SoftDeletePolicy softDeletePolicy_;
     private com.google.protobuf.SingleFieldBuilderV3<
             com.google.storage.v2.Bucket.SoftDeletePolicy,
@@ -26107,7 +26974,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      * @return Whether the softDeletePolicy field is set.
      */
     public boolean hasSoftDeletePolicy() {
-      return ((bitField0_ & 0x10000000) != 0);
+      return ((bitField0_ & 0x20000000) != 0);
     }
     /**
      *
@@ -26153,7 +27020,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
       } else {
         softDeletePolicyBuilder_.setMessage(value);
       }
-      bitField0_ |= 0x10000000;
+      bitField0_ |= 0x20000000;
       onChanged();
       return this;
     }
@@ -26176,7 +27043,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
       } else {
         softDeletePolicyBuilder_.setMessage(builderForValue.build());
       }
-      bitField0_ |= 0x10000000;
+      bitField0_ |= 0x20000000;
       onChanged();
       return this;
     }
@@ -26194,7 +27061,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      */
     public Builder mergeSoftDeletePolicy(com.google.storage.v2.Bucket.SoftDeletePolicy value) {
       if (softDeletePolicyBuilder_ == null) {
-        if (((bitField0_ & 0x10000000) != 0)
+        if (((bitField0_ & 0x20000000) != 0)
             && softDeletePolicy_ != null
             && softDeletePolicy_
                 != com.google.storage.v2.Bucket.SoftDeletePolicy.getDefaultInstance()) {
@@ -26206,7 +27073,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
         softDeletePolicyBuilder_.mergeFrom(value);
       }
       if (softDeletePolicy_ != null) {
-        bitField0_ |= 0x10000000;
+        bitField0_ |= 0x20000000;
         onChanged();
       }
       return this;
@@ -26224,7 +27091,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      * </code>
      */
     public Builder clearSoftDeletePolicy() {
-      bitField0_ = (bitField0_ & ~0x10000000);
+      bitField0_ = (bitField0_ & ~0x20000000);
       softDeletePolicy_ = null;
       if (softDeletePolicyBuilder_ != null) {
         softDeletePolicyBuilder_.dispose();
@@ -26246,7 +27113,7 @@ public final class Bucket extends com.google.protobuf.GeneratedMessageV3
      * </code>
      */
     public com.google.storage.v2.Bucket.SoftDeletePolicy.Builder getSoftDeletePolicyBuilder() {
-      bitField0_ |= 0x10000000;
+      bitField0_ |= 0x20000000;
       onChanged();
       return getSoftDeletePolicyFieldBuilder().getBuilder();
     }
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java
index 41ca1c71..8c6c315b 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java
@@ -1075,6 +1075,53 @@ public interface BucketOrBuilder
    */
   com.google.storage.v2.Bucket.AutoclassOrBuilder getAutoclassOrBuilder();
 
+  /**
+   *
+   *
+   * <pre>
+   * Optional. The bucket's hierarchical namespace configuration. If there is no
+   * configuration, the hierarchical namespace feature will be disabled and have
+   * no effect on the bucket.
+   * </pre>
+   *
+   * <code>
+   * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+   * </code>
+   *
+   * @return Whether the hierarchicalNamespace field is set.
+   */
+  boolean hasHierarchicalNamespace();
+  /**
+   *
+   *
+   * <pre>
+   * Optional. The bucket's hierarchical namespace configuration. If there is no
+   * configuration, the hierarchical namespace feature will be disabled and have
+   * no effect on the bucket.
+   * </pre>
+   *
+   * <code>
+   * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+   * </code>
+   *
+   * @return The hierarchicalNamespace.
+   */
+  com.google.storage.v2.Bucket.HierarchicalNamespace getHierarchicalNamespace();
+  /**
+   *
+   *
+   * <pre>
+   * Optional. The bucket's hierarchical namespace configuration. If there is no
+   * configuration, the hierarchical namespace feature will be disabled and have
+   * no effect on the bucket.
+   * </pre>
+   *
+   * <code>
+   * .google.storage.v2.Bucket.HierarchicalNamespace hierarchical_namespace = 32 [(.google.api.field_behavior) = OPTIONAL];
+   * </code>
+   */
+  com.google.storage.v2.Bucket.HierarchicalNamespaceOrBuilder getHierarchicalNamespaceOrBuilder();
+
   /**
    *
    *
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java
index 043db519..22ec3b58 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java
@@ -540,6 +540,25 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
     return softDeleted_;
   }
 
+  public static final int INCLUDE_FOLDERS_AS_PREFIXES_FIELD_NUMBER = 13;
+  private boolean includeFoldersAsPrefixes_ = false;
+  /**
+   *
+   *
+   * <pre>
+   * Optional. If true, will also include folders and managed folders (besides
+   * objects) in the returned `prefixes`. Requires `delimiter` to be set to '/'.
+   * </pre>
+   *
+   * <code>bool include_folders_as_prefixes = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
+   *
+   * @return The includeFoldersAsPrefixes.
+   */
+  @java.lang.Override
+  public boolean getIncludeFoldersAsPrefixes() {
+    return includeFoldersAsPrefixes_;
+  }
+
   public static final int MATCH_GLOB_FIELD_NUMBER = 14;
 
   @SuppressWarnings("serial")
@@ -644,6 +663,9 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
     if (softDeleted_ != false) {
       output.writeBool(12, softDeleted_);
     }
+    if (includeFoldersAsPrefixes_ != false) {
+      output.writeBool(13, includeFoldersAsPrefixes_);
+    }
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(matchGlob_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 14, matchGlob_);
     }
@@ -689,6 +711,9 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
     if (softDeleted_ != false) {
       size += com.google.protobuf.CodedOutputStream.computeBoolSize(12, softDeleted_);
     }
+    if (includeFoldersAsPrefixes_ != false) {
+      size += com.google.protobuf.CodedOutputStream.computeBoolSize(13, includeFoldersAsPrefixes_);
+    }
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(matchGlob_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, matchGlob_);
     }
@@ -721,6 +746,7 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
     if (!getLexicographicStart().equals(other.getLexicographicStart())) return false;
     if (!getLexicographicEnd().equals(other.getLexicographicEnd())) return false;
     if (getSoftDeleted() != other.getSoftDeleted()) return false;
+    if (getIncludeFoldersAsPrefixes() != other.getIncludeFoldersAsPrefixes()) return false;
     if (!getMatchGlob().equals(other.getMatchGlob())) return false;
     if (!getUnknownFields().equals(other.getUnknownFields())) return false;
     return true;
@@ -757,6 +783,8 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
     hash = (53 * hash) + getLexicographicEnd().hashCode();
     hash = (37 * hash) + SOFT_DELETED_FIELD_NUMBER;
     hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getSoftDeleted());
+    hash = (37 * hash) + INCLUDE_FOLDERS_AS_PREFIXES_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeFoldersAsPrefixes());
     hash = (37 * hash) + MATCH_GLOB_FIELD_NUMBER;
     hash = (53 * hash) + getMatchGlob().hashCode();
     hash = (29 * hash) + getUnknownFields().hashCode();
@@ -922,6 +950,7 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
       lexicographicStart_ = "";
       lexicographicEnd_ = "";
       softDeleted_ = false;
+      includeFoldersAsPrefixes_ = false;
       matchGlob_ = "";
       return this;
     }
@@ -995,6 +1024,9 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
         result.softDeleted_ = softDeleted_;
       }
       if (((from_bitField0_ & 0x00000800) != 0)) {
+        result.includeFoldersAsPrefixes_ = includeFoldersAsPrefixes_;
+      }
+      if (((from_bitField0_ & 0x00001000) != 0)) {
         result.matchGlob_ = matchGlob_;
       }
       result.bitField0_ |= to_bitField0_;
@@ -1090,9 +1122,12 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
       if (other.getSoftDeleted() != false) {
         setSoftDeleted(other.getSoftDeleted());
       }
+      if (other.getIncludeFoldersAsPrefixes() != false) {
+        setIncludeFoldersAsPrefixes(other.getIncludeFoldersAsPrefixes());
+      }
       if (!other.getMatchGlob().isEmpty()) {
         matchGlob_ = other.matchGlob_;
-        bitField0_ |= 0x00000800;
+        bitField0_ |= 0x00001000;
         onChanged();
       }
       this.mergeUnknownFields(other.getUnknownFields());
@@ -1187,10 +1222,16 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
                 bitField0_ |= 0x00000400;
                 break;
               } // case 96
+            case 104:
+              {
+                includeFoldersAsPrefixes_ = input.readBool();
+                bitField0_ |= 0x00000800;
+                break;
+              } // case 104
             case 114:
               {
                 matchGlob_ = input.readStringRequireUtf8();
-                bitField0_ |= 0x00000800;
+                bitField0_ |= 0x00001000;
                 break;
               } // case 114
             default:
@@ -2365,6 +2406,62 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
       return this;
     }
 
+    private boolean includeFoldersAsPrefixes_;
+    /**
+     *
+     *
+     * <pre>
+     * Optional. If true, will also include folders and managed folders (besides
+     * objects) in the returned `prefixes`. Requires `delimiter` to be set to '/'.
+     * </pre>
+     *
+     * <code>bool include_folders_as_prefixes = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @return The includeFoldersAsPrefixes.
+     */
+    @java.lang.Override
+    public boolean getIncludeFoldersAsPrefixes() {
+      return includeFoldersAsPrefixes_;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. If true, will also include folders and managed folders (besides
+     * objects) in the returned `prefixes`. Requires `delimiter` to be set to '/'.
+     * </pre>
+     *
+     * <code>bool include_folders_as_prefixes = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @param value The includeFoldersAsPrefixes to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIncludeFoldersAsPrefixes(boolean value) {
+
+      includeFoldersAsPrefixes_ = value;
+      bitField0_ |= 0x00000800;
+      onChanged();
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. If true, will also include folders and managed folders (besides
+     * objects) in the returned `prefixes`. Requires `delimiter` to be set to '/'.
+     * </pre>
+     *
+     * <code>bool include_folders_as_prefixes = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @return This builder for chaining.
+     */
+    public Builder clearIncludeFoldersAsPrefixes() {
+      bitField0_ = (bitField0_ & ~0x00000800);
+      includeFoldersAsPrefixes_ = false;
+      onChanged();
+      return this;
+    }
+
     private java.lang.Object matchGlob_ = "";
     /**
      *
@@ -2436,7 +2533,7 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
         throw new NullPointerException();
       }
       matchGlob_ = value;
-      bitField0_ |= 0x00000800;
+      bitField0_ |= 0x00001000;
       onChanged();
       return this;
     }
@@ -2456,7 +2553,7 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
      */
     public Builder clearMatchGlob() {
       matchGlob_ = getDefaultInstance().getMatchGlob();
-      bitField0_ = (bitField0_ & ~0x00000800);
+      bitField0_ = (bitField0_ & ~0x00001000);
       onChanged();
       return this;
     }
@@ -2481,7 +2578,7 @@ public final class ListObjectsRequest extends com.google.protobuf.GeneratedMessa
       }
       checkByteStringIsUtf8(value);
       matchGlob_ = value;
-      bitField0_ |= 0x00000800;
+      bitField0_ |= 0x00001000;
       onChanged();
       return this;
     }
diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java
index 34a38165..215d9afc 100644
--- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java
+++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java
@@ -307,6 +307,20 @@ public interface ListObjectsRequestOrBuilder
    */
   boolean getSoftDeleted();
 
+  /**
+   *
+   *
+   * <pre>
+   * Optional. If true, will also include folders and managed folders (besides
+   * objects) in the returned `prefixes`. Requires `delimiter` to be set to '/'.
+   * </pre>
+   *
+   * <code>bool include_folders_as_prefixes = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
+   *
+   * @return The includeFoldersAsPrefixes.
+   */
+  boolean getIncludeFoldersAsPrefixes();
+
   /**
    *
    *
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 7c9d8f22..fab5bd68 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
@@ -276,6 +276,10 @@ public final class StorageProto {
       internal_static_google_storage_v2_Bucket_Autoclass_descriptor;
   static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_storage_v2_Bucket_Autoclass_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+      internal_static_google_storage_v2_Bucket_HierarchicalNamespace_descriptor;
+  static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_storage_v2_Bucket_HierarchicalNamespace_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
       internal_static_google_storage_v2_Bucket_LabelsEntry_descriptor;
   static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
@@ -528,7 +532,7 @@ public final class StorageProto {
           + "\006\n\004data\"r\n\027BidiWriteObjectResponse\022\030\n\016pe"
           + "rsisted_size\030\001 \001(\003H\000\022-\n\010resource\030\002 \001(\0132\031"
           + ".google.storage.v2.ObjectH\000B\016\n\014write_sta"
-          + "tus\"\203\003\n\022ListObjectsRequest\0225\n\006parent\030\001 \001"
+          + "tus\"\255\003\n\022ListObjectsRequest\0225\n\006parent\030\001 \001"
           + "(\tB%\340A\002\372A\037\n\035storage.googleapis.com/Bucke"
           + "t\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t"
           + "\022\021\n\tdelimiter\030\004 \001(\t\022\"\n\032include_trailing_"
@@ -536,411 +540,416 @@ public final class StorageProto {
           + "ons\030\007 \001(\010\0222\n\tread_mask\030\010 \001(\0132\032.google.pr"
           + "otobuf.FieldMaskH\000\210\001\001\022 \n\023lexicographic_s"
           + "tart\030\n \001(\tB\003\340A\001\022\036\n\021lexicographic_end\030\013 \001"
-          + "(\tB\003\340A\001\022\031\n\014soft_deleted\030\014 \001(\010B\003\340A\001\022\027\n\nma"
-          + "tch_glob\030\016 \001(\tB\003\340A\001B\014\n\n_read_mask\"\205\001\n\027Qu"
-          + "eryWriteStatusRequest\022\026\n\tupload_id\030\001 \001(\t"
-          + "B\003\340A\002\022R\n\034common_object_request_params\030\002 "
-          + "\001(\0132,.google.storage.v2.CommonObjectRequ"
-          + "estParams\"s\n\030QueryWriteStatusResponse\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\014write_"
-          + "status\"\250\n\n\024RewriteObjectRequest\022 \n\020desti"
-          + "nation_name\030\030 \001(\tB\006\340A\002\340A\005\022D\n\022destination"
-          + "_bucket\030\031 \001(\tB(\340A\002\340A\005\372A\037\n\035storage.google"
-          + "apis.com/Bucket\022C\n\023destination_kms_key\030\033"
-          + " \001(\tB&\372A#\n!cloudkms.googleapis.com/Crypt"
-          + "oKey\022.\n\013destination\030\001 \001(\0132\031.google.stora"
-          + "ge.v2.Object\022<\n\rsource_bucket\030\002 \001(\tB%\340A\002"
-          + "\372A\037\n\035storage.googleapis.com/Bucket\022\032\n\rso"
-          + "urce_object\030\003 \001(\tB\003\340A\002\022\031\n\021source_generat"
-          + "ion\030\004 \001(\003\022\025\n\rrewrite_token\030\005 \001(\t\022\"\n\032dest"
-          + "ination_predefined_acl\030\034 \001(\t\022 \n\023if_gener"
-          + "ation_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\027if_metageneratio"
-          + "n_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\032if_source_genera"
-          + "tion_match\030\013 \001(\003H\004\210\001\001\022+\n\036if_source_gener"
-          + "ation_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_so"
-          + "urce_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_encryption_key_bytes\030\025 \001"
-          + "(\014\022/\n\'copy_source_encryption_key_sha256_"
-          + "bytes\030\026 \001(\014\022R\n\034common_object_request_par"
-          + "ams\030\023 \001(\0132,.google.storage.v2.CommonObje"
-          + "ctRequestParams\022<\n\020object_checksums\030\035 \001("
-          + "\0132\".google.storage.v2.ObjectChecksumsB\026\n"
-          + "\024_if_generation_matchB\032\n\030_if_generation_"
-          + "not_matchB\032\n\030_if_metageneration_matchB\036\n"
-          + "\034_if_metageneration_not_matchB\035\n\033_if_sou"
-          + "rce_generation_matchB!\n\037_if_source_gener"
-          + "ation_not_matchB!\n\037_if_source_metagenera"
-          + "tion_matchB%\n#_if_source_metageneration_"
-          + "not_match\"\227\001\n\017RewriteResponse\022\035\n\025total_b"
-          + "ytes_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.Obj"
-          + "ect\"\362\001\n\032StartResumableWriteRequest\022B\n\021wr"
-          + "ite_object_spec\030\001 \001(\0132\".google.storage.v"
-          + "2.WriteObjectSpecB\003\340A\002\022R\n\034common_object_"
-          + "request_params\030\003 \001(\0132,.google.storage.v2"
-          + ".CommonObjectRequestParams\022<\n\020object_che"
-          + "cksums\030\005 \001(\0132\".google.storage.v2.ObjectC"
-          + "hecksums\"0\n\033StartResumableWriteResponse\022"
-          + "\021\n\tupload_id\030\001 \001(\t\"\357\003\n\023UpdateObjectReque"
-          + "st\022.\n\006object\030\001 \001(\0132\031.google.storage.v2.O"
-          + "bjectB\003\340A\002\022 \n\023if_generation_match\030\002 \001(\003H"
-          + "\000\210\001\001\022$\n\027if_generation_not_match\030\003 \001(\003H\001\210"
-          + "\001\001\022$\n\027if_metageneration_match\030\004 \001(\003H\002\210\001\001"
-          + "\022(\n\033if_metageneration_not_match\030\005 \001(\003H\003\210"
-          + "\001\001\022\026\n\016predefined_acl\030\n \001(\t\0224\n\013update_mas"
-          + "k\030\007 \001(\0132\032.google.protobuf.FieldMaskB\003\340A\002"
-          + "\022R\n\034common_object_request_params\030\010 \001(\0132,"
-          + ".google.storage.v2.CommonObjectRequestPa"
-          + "ramsB\026\n\024_if_generation_matchB\032\n\030_if_gene"
-          + "ration_not_matchB\032\n\030_if_metageneration_m"
-          + "atchB\036\n\034_if_metageneration_not_match\"`\n\030"
-          + "GetServiceAccountRequest\022D\n\007project\030\001 \001("
-          + "\tB3\340A\002\372A-\n+cloudresourcemanager.googleap"
-          + "is.com/Project\"\200\001\n\024CreateHmacKeyRequest\022"
-          + "D\n\007project\030\001 \001(\tB3\340A\002\372A-\n+cloudresourcem"
-          + "anager.googleapis.com/Project\022\"\n\025service"
-          + "_account_email\030\002 \001(\tB\003\340A\002\"g\n\025CreateHmacK"
-          + "eyResponse\0224\n\010metadata\030\001 \001(\0132\".google.st"
-          + "orage.v2.HmacKeyMetadata\022\030\n\020secret_key_b"
-          + "ytes\030\003 \001(\014\"t\n\024DeleteHmacKeyRequest\022\026\n\tac"
-          + "cess_id\030\001 \001(\tB\003\340A\002\022D\n\007project\030\002 \001(\tB3\340A\002"
-          + "\372A-\n+cloudresourcemanager.googleapis.com"
-          + "/Project\"q\n\021GetHmacKeyRequest\022\026\n\taccess_"
-          + "id\030\001 \001(\tB\003\340A\002\022D\n\007project\030\002 \001(\tB3\340A\002\372A-\n+"
-          + "cloudresourcemanager.googleapis.com/Proj"
-          + "ect\"\274\001\n\023ListHmacKeysRequest\022D\n\007project\030\001"
-          + " \001(\tB3\340A\002\372A-\n+cloudresourcemanager.googl"
-          + "eapis.com/Project\022\021\n\tpage_size\030\002 \001(\005\022\022\n\n"
-          + "page_token\030\003 \001(\t\022\035\n\025service_account_emai"
-          + "l\030\004 \001(\t\022\031\n\021show_deleted_keys\030\005 \001(\010\"f\n\024Li"
-          + "stHmacKeysResponse\0225\n\thmac_keys\030\001 \003(\0132\"."
-          + "google.storage.v2.HmacKeyMetadata\022\027\n\017nex"
-          + "t_page_token\030\002 \001(\t\"\202\001\n\024UpdateHmacKeyRequ"
-          + "est\0229\n\010hmac_key\030\001 \001(\0132\".google.storage.v"
-          + "2.HmacKeyMetadataB\003\340A\002\022/\n\013update_mask\030\003 "
-          + "\001(\0132\032.google.protobuf.FieldMask\"|\n\031Commo"
-          + "nObjectRequestParams\022\034\n\024encryption_algor"
-          + "ithm\030\001 \001(\t\022\034\n\024encryption_key_bytes\030\004 \001(\014"
-          + "\022#\n\033encryption_key_sha256_bytes\030\005 \001(\014\"\312\005"
-          + "\n\020ServiceConstants\"\265\005\n\006Values\022\026\n\022VALUES_"
-          + "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\022MAX_"
-          + "OBJECT_SIZE_MB\020\200\200\300\002\022)\n$MAX_CUSTOM_METADA"
-          + "TA_FIELD_NAME_BYTES\020\200\010\022*\n%MAX_CUSTOM_MET"
-          + "ADATA_FIELD_VALUE_BYTES\020\200 \022)\n$MAX_CUSTOM"
-          + "_METADATA_TOTAL_SIZE_BYTES\020\200@\022*\n$MAX_BUC"
-          + "KET_METADATA_TOTAL_SIZE_BYTES\020\200\240\001\022\'\n#MAX"
-          + "_NOTIFICATION_CONFIGS_PER_BUCKET\020d\022\"\n\036MA"
-          + "X_LIFECYCLE_RULES_PER_BUCKET\020d\022&\n\"MAX_NO"
-          + "TIFICATION_CUSTOM_ATTRIBUTES\020\005\0221\n,MAX_NO"
-          + "TIFICATION_CUSTOM_ATTRIBUTE_KEY_LENGTH\020\200"
-          + "\002\0223\n.MAX_NOTIFICATION_CUSTOM_ATTRIBUTE_V"
-          + "ALUE_LENGTH\020\200\010\022\034\n\030MAX_LABELS_ENTRIES_COU"
-          + "NT\020@\022\037\n\033MAX_LABELS_KEY_VALUE_LENGTH\020?\022\037\n"
-          + "\032MAX_LABELS_KEY_VALUE_BYTES\020\200\001\022.\n)MAX_OB"
-          + "JECT_IDS_PER_DELETE_OBJECTS_REQUEST\020\350\007\022\036"
-          + "\n\032SPLIT_TOKEN_MAX_VALID_DAYS\020\016\032\002\020\001\"\215\033\n\006B"
-          + "ucket\022\021\n\004name\030\001 \001(\tB\003\340A\005\022\026\n\tbucket_id\030\002 "
-          + "\001(\tB\003\340A\003\022\014\n\004etag\030\035 \001(\t\022D\n\007project\030\003 \001(\tB"
-          + "3\340A\005\372A-\n+cloudresourcemanager.googleapis"
-          + ".com/Project\022\033\n\016metageneration\030\004 \001(\003B\003\340A"
-          + "\003\022\025\n\010location\030\005 \001(\tB\003\340A\005\022\032\n\rlocation_typ"
-          + "e\030\006 \001(\tB\003\340A\003\022\025\n\rstorage_class\030\007 \001(\t\022\013\n\003r"
-          + "po\030\033 \001(\t\0223\n\003acl\030\010 \003(\0132&.google.storage.v"
-          + "2.BucketAccessControl\022B\n\022default_object_"
-          + "acl\030\t \003(\0132&.google.storage.v2.ObjectAcce"
-          + "ssControl\0226\n\tlifecycle\030\n \001(\0132#.google.st"
-          + "orage.v2.Bucket.Lifecycle\0224\n\013create_time"
-          + "\030\013 \001(\0132\032.google.protobuf.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.prot"
-          + "obuf.TimestampB\003\340A\003\022 \n\030default_event_bas"
-          + "ed_hold\030\016 \001(\010\0225\n\006labels\030\017 \003(\0132%.google.s"
-          + "torage.v2.Bucket.LabelsEntry\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\007logging\030\022 \001(\0132!.go"
-          + "ogle.storage.v2.Bucket.Logging\022,\n\005owner\030"
-          + "\023 \001(\0132\030.google.storage.v2.OwnerB\003\340A\003\0228\n\n"
-          + "encryption\030\024 \001(\0132$.google.storage.v2.Buc"
-          + "ket.Encryption\0222\n\007billing\030\025 \001(\0132!.google"
-          + ".storage.v2.Bucket.Billing\022C\n\020retention_"
-          + "policy\030\026 \001(\0132).google.storage.v2.Bucket."
-          + "RetentionPolicy\0227\n\niam_config\030\027 \001(\0132#.go"
-          + "ogle.storage.v2.Bucket.IamConfig\022\025\n\rsati"
-          + "sfies_pzs\030\031 \001(\010\022P\n\027custom_placement_conf"
-          + "ig\030\032 \001(\0132/.google.storage.v2.Bucket.Cust"
-          + "omPlacementConfig\0226\n\tautoclass\030\034 \001(\0132#.g"
-          + "oogle.storage.v2.Bucket.Autoclass\022K\n\022sof"
-          + "t_delete_policy\030\037 \001(\0132*.google.storage.v"
-          + "2.Bucket.SoftDeletePolicyB\003\340A\001\032!\n\007Billin"
-          + "g\022\026\n\016requester_pays\030\001 \001(\010\032X\n\004Cors\022\016\n\006ori"
-          + "gin\030\001 \003(\t\022\016\n\006method\030\002 \003(\t\022\027\n\017response_he"
-          + "ader\030\003 \003(\t\022\027\n\017max_age_seconds\030\004 \001(\005\032M\n\nE"
-          + "ncryption\022?\n\017default_kms_key\030\001 \001(\tB&\372A#\n"
-          + "!cloudkms.googleapis.com/CryptoKey\032\354\001\n\tI"
-          + "amConfig\022a\n\033uniform_bucket_level_access\030"
-          + "\001 \001(\0132<.google.storage.v2.Bucket.IamConf"
-          + "ig.UniformBucketLevelAccess\022 \n\030public_ac"
-          + "cess_prevention\030\003 \001(\t\032Z\n\030UniformBucketLe"
-          + "velAccess\022\017\n\007enabled\030\001 \001(\010\022-\n\tlock_time\030"
-          + "\002 \001(\0132\032.google.protobuf.Timestamp\032\363\005\n\tLi"
-          + "fecycle\0226\n\004rule\030\001 \003(\0132(.google.storage.v"
-          + "2.Bucket.Lifecycle.Rule\032\255\005\n\004Rule\022?\n\006acti"
-          + "on\030\001 \001(\0132/.google.storage.v2.Bucket.Life"
-          + "cycle.Rule.Action\022E\n\tcondition\030\002 \001(\01322.g"
-          + "oogle.storage.v2.Bucket.Lifecycle.Rule.C"
-          + "ondition\032-\n\006Action\022\014\n\004type\030\001 \001(\t\022\025\n\rstor"
-          + "age_class\030\002 \001(\t\032\355\003\n\tCondition\022\025\n\010age_day"
-          + "s\030\001 \001(\005H\000\210\001\001\022)\n\016created_before\030\002 \001(\0132\021.g"
-          + "oogle.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\025matche"
-          + "s_storage_class\030\005 \003(\t\022#\n\026days_since_cust"
-          + "om_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.Date\022\026\n"
-          + "\016matches_prefix\030\013 \003(\t\022\026\n\016matches_suffix\030"
-          + "\014 \003(\tB\013\n\t_age_daysB\n\n\010_is_liveB\025\n\023_num_n"
-          + "ewer_versionsB\031\n\027_days_since_custom_time"
-          + "B\035\n\033_days_since_noncurrent_time\0328\n\007Loggi"
-          + "ng\022\022\n\nlog_bucket\030\001 \001(\t\022\031\n\021log_object_pre"
-          + "fix\030\002 \001(\t\032\217\001\n\017RetentionPolicy\0222\n\016effecti"
-          + "ve_time\030\001 \001(\0132\032.google.protobuf.Timestam"
-          + "p\022\021\n\tis_locked\030\002 \001(\010\0225\n\022retention_durati"
-          + "on\030\004 \001(\0132\031.google.protobuf.Duration\032\261\001\n\020"
-          + "SoftDeletePolicy\022:\n\022retention_duration\030\001"
-          + " \001(\0132\031.google.protobuf.DurationH\000\210\001\001\0227\n\016"
-          + "effective_time\030\002 \001(\0132\032.google.protobuf.T"
-          + "imestampH\001\210\001\001B\025\n\023_retention_durationB\021\n\017"
-          + "_effective_time\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\025CustomPla"
-          + "cementConfig\022\026\n\016data_locations\030\001 \003(\t\032\213\002\n"
-          + "\tAutoclass\022\017\n\007enabled\030\001 \001(\010\0224\n\013toggle_ti"
-          + "me\030\002 \001(\0132\032.google.protobuf.TimestampB\003\340A"
-          + "\003\022#\n\026terminal_storage_class\030\003 \001(\tH\000\210\001\001\022P"
-          + "\n\"terminal_storage_class_update_time\030\004 \001"
-          + "(\0132\032.google.protobuf.TimestampB\003\340A\003H\001\210\001\001"
-          + "B\031\n\027_terminal_storage_classB%\n#_terminal"
-          + "_storage_class_update_time\032-\n\013LabelsEntr"
-          + "y\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:G\352AD\n\035"
-          + "storage.googleapis.com/Bucket\022#projects/"
-          + "{project}/buckets/{bucket}\"\316\001\n\023BucketAcc"
-          + "essControl\022\014\n\004role\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\016\n\006"
-          + "entity\030\003 \001(\t\022\027\n\nentity_alt\030\t \001(\tB\003\340A\003\022\021\n"
-          + "\tentity_id\030\004 \001(\t\022\014\n\004etag\030\010 \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\"I\n\017C"
-          + "hecksummedData\022\026\n\007content\030\001 \001(\014B\005\010\001\340A\001\022\023"
-          + "\n\006crc32c\030\002 \001(\007H\000\210\001\001B\t\n\007_crc32c\"C\n\017Object"
-          + "Checksums\022\023\n\006crc32c\030\001 \001(\007H\000\210\001\001\022\020\n\010md5_ha"
-          + "sh\030\002 \001(\014B\t\n\007_crc32c\"\255\002\n\017HmacKeyMetadata\022"
-          + "\017\n\002id\030\001 \001(\tB\003\340A\005\022\026\n\taccess_id\030\002 \001(\tB\003\340A\005"
-          + "\022D\n\007project\030\003 \001(\tB3\340A\005\372A-\n+cloudresource"
-          + "manager.googleapis.com/Project\022\"\n\025servic"
-          + "e_account_email\030\004 \001(\tB\003\340A\003\022\r\n\005state\030\005 \001("
-          + "\t\0224\n\013create_time\030\006 \001(\0132\032.google.protobuf"
-          + ".TimestampB\003\340A\003\0224\n\013update_time\030\007 \001(\0132\032.g",
-      "oogle.protobuf.TimestampB\003\340A\003\022\014\n\004etag\030\010 "
-          + "\001(\t\"\247\003\n\022NotificationConfig\022\021\n\004name\030\001 \001(\t"
-          + "B\003\340A\002\022\022\n\005topic\030\002 \001(\tB\003\340A\002\022\014\n\004etag\030\007 \001(\t\022"
-          + "\023\n\013event_types\030\003 \003(\t\022V\n\021custom_attribute"
-          + "s\030\004 \003(\0132;.google.storage.v2.Notification"
-          + "Config.CustomAttributesEntry\022\032\n\022object_n"
-          + "ame_prefix\030\005 \001(\t\022\033\n\016payload_format\030\006 \001(\t"
-          + "B\003\340A\002\0327\n\025CustomAttributesEntry\022\013\n\003key\030\001 "
-          + "\001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:}\352Az\n)storage.goo"
-          + "gleapis.com/NotificationConfig\022Mprojects"
-          + "/{project}/buckets/{bucket}/notification"
-          + "Configs/{notification_config}\"L\n\022Custome"
-          + "rEncryption\022\034\n\024encryption_algorithm\030\001 \001("
-          + "\t\022\030\n\020key_sha256_bytes\030\003 \001(\014\"\254\n\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/Bucket\022\014\n\004etag"
-          + "\030\033 \001(\t\022\027\n\ngeneration\030\003 \001(\003B\003\340A\005\022\033\n\016metag"
-          + "eneration\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_encodi"
-          + "ng\030\007 \001(\t\022\033\n\023content_disposition\030\010 \001(\t\022\025\n"
-          + "\rcache_control\030\t \001(\t\0223\n\003acl\030\n \003(\0132&.goog"
-          + "le.storage.v2.ObjectAccessControl\022\030\n\020con"
-          + "tent_language\030\013 \001(\t\0224\n\013delete_time\030\014 \001(\013"
-          + "2\032.google.protobuf.TimestampB\003\340A\003\022\024\n\014con"
-          + "tent_type\030\r \001(\t\0224\n\013create_time\030\016 \001(\0132\032.g"
-          + "oogle.protobuf.TimestampB\003\340A\003\022\034\n\017compone"
-          + "nt_count\030\017 \001(\005B\003\340A\003\022:\n\tchecksums\030\020 \001(\0132\""
-          + ".google.storage.v2.ObjectChecksumsB\003\340A\003\022"
-          + "4\n\013update_time\030\021 \001(\0132\032.google.protobuf.T"
-          + "imestampB\003\340A\003\0227\n\007kms_key\030\022 \001(\tB&\372A#\n!clo"
-          + "udkms.googleapis.com/CryptoKey\022B\n\031update"
-          + "_storage_class_time\030\023 \001(\0132\032.google.proto"
-          + "buf.TimestampB\003\340A\003\022\026\n\016temporary_hold\030\024 \001"
-          + "(\010\0229\n\025retention_expire_time\030\025 \001(\0132\032.goog"
-          + "le.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"
-          + "\023customer_encryption\030\031 \001(\0132%.google.stor"
-          + "age.v2.CustomerEncryption\022/\n\013custom_time"
-          + "\030\032 \001(\0132\032.google.protobuf.Timestamp\022>\n\020so"
-          + "ft_delete_time\030\034 \001(\0132\032.google.protobuf.T"
-          + "imestampB\003\340A\003H\001\210\001\001\022>\n\020hard_delete_time\030\035"
-          + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003H\002\210"
-          + "\001\001\032/\n\rMetadataEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005valu"
-          + "e\030\002 \001(\t:\0028\001B\023\n\021_event_based_holdB\023\n\021_sof"
-          + "t_delete_timeB\023\n\021_hard_delete_time\"\316\001\n\023O"
-          + "bjectAccessControl\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\027\n\nentity_alt\030\t \001(\t"
-          + "B\003\340A\003\022\021\n\tentity_id\030\004 \001(\t\022\014\n\004etag\030\010 \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.ProjectT"
-          + "eam\"l\n\023ListObjectsResponse\022*\n\007objects\030\001 "
-          + "\003(\0132\031.google.storage.v2.Object\022\020\n\010prefix"
-          + "es\030\002 \003(\t\022\027\n\017next_page_token\030\003 \001(\t\"3\n\013Pro"
-          + "jectTeam\022\026\n\016project_number\030\001 \001(\t\022\014\n\004team"
-          + "\030\002 \001(\t\"\'\n\016ServiceAccount\022\025\n\remail_addres"
-          + "s\030\001 \001(\t\"*\n\005Owner\022\016\n\006entity\030\001 \001(\t\022\021\n\tenti"
-          + "ty_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"
-          + "2\252\'\n\007Storage\022r\n\014DeleteBucket\022&.google.st"
-          + "orage.v2.DeleteBucketRequest\032\026.google.pr"
-          + "otobuf.Empty\"\"\332A\004name\212\323\344\223\002\025\022\023\n\004name\022\013{bu"
-          + "cket=**}\022o\n\tGetBucket\022#.google.storage.v"
-          + "2.GetBucketRequest\032\031.google.storage.v2.B"
-          + "ucket\"\"\332A\004name\212\323\344\223\002\025\022\023\n\004name\022\013{bucket=**"
-          + "}\022\253\001\n\014CreateBucket\022&.google.storage.v2.C"
-          + "reateBucketRequest\032\031.google.storage.v2.B"
-          + "ucket\"X\332A\027parent,bucket,bucket_id\212\323\344\223\0028\022"
-          + "\026\n\006parent\022\014{project=**}\022\036\n\016bucket.projec"
-          + "t\022\014{project=**}\022\205\001\n\013ListBuckets\022%.google"
-          + ".storage.v2.ListBucketsRequest\032&.google."
-          + "storage.v2.ListBucketsResponse\"\'\332A\006paren"
-          + "t\212\323\344\223\002\030\022\026\n\006parent\022\014{project=**}\022\223\001\n\031Lock"
-          + "BucketRetentionPolicy\0223.google.storage.v"
-          + "2.LockBucketRetentionPolicyRequest\032\031.goo"
-          + "gle.storage.v2.Bucket\"&\332A\006bucket\212\323\344\223\002\027\022\025"
-          + "\n\006bucket\022\013{bucket=**}\022u\n\014GetIamPolicy\022\"."
-          + "google.iam.v1.GetIamPolicyRequest\032\025.goog"
-          + "le.iam.v1.Policy\"*\332A\010resource\212\323\344\223\002\031\022\027\n\010r"
-          + "esource\022\013{bucket=**}\022|\n\014SetIamPolicy\022\".g"
-          + "oogle.iam.v1.SetIamPolicyRequest\032\025.googl"
-          + "e.iam.v1.Policy\"1\332A\017resource,policy\212\323\344\223\002"
-          + "\031\022\027\n\010resource\022\013{bucket=**}\022\327\001\n\022TestIamPe"
-          + "rmissions\022(.google.iam.v1.TestIamPermiss"
-          + "ionsRequest\032).google.iam.v1.TestIamPermi"
-          + "ssionsResponse\"l\332A\024resource,permissions\212"
-          + "\323\344\223\002O\022\027\n\010resource\022\013{bucket=**}\0224\n\010resour"
-          + "ce\022({bucket=projects/*/buckets/*}/object"
-          + "s/**\022\212\001\n\014UpdateBucket\022&.google.storage.v"
-          + "2.UpdateBucketRequest\032\031.google.storage.v"
-          + "2.Bucket\"7\332A\022bucket,update_mask\212\323\344\223\002\034\022\032\n"
-          + "\013bucket.name\022\013{bucket=**}\022\237\001\n\030DeleteNoti"
-          + "ficationConfig\0222.google.storage.v2.Delet"
-          + "eNotificationConfigRequest\032\026.google.prot"
-          + "obuf.Empty\"7\332A\004name\212\323\344\223\002*\022(\n\004name\022 {buck"
-          + "et=projects/*/buckets/*}/**\022\250\001\n\025GetNotif"
-          + "icationConfig\022/.google.storage.v2.GetNot"
-          + "ificationConfigRequest\032%.google.storage."
-          + "v2.NotificationConfig\"7\332A\004name\212\323\344\223\002*\022(\n\004"
-          + "name\022 {bucket=projects/*/buckets/*}/**\022\261"
-          + "\001\n\030CreateNotificationConfig\0222.google.sto"
-          + "rage.v2.CreateNotificationConfigRequest\032"
-          + "%.google.storage.v2.NotificationConfig\":"
-          + "\332A\032parent,notification_config\212\323\344\223\002\027\022\025\n\006p"
-          + "arent\022\013{bucket=**}\022\250\001\n\027ListNotificationC"
-          + "onfigs\0221.google.storage.v2.ListNotificat"
-          + "ionConfigsRequest\0322.google.storage.v2.Li"
-          + "stNotificationConfigsResponse\"&\332A\006parent"
-          + "\212\323\344\223\002\027\022\025\n\006parent\022\013{bucket=**}\022~\n\rCompose"
-          + "Object\022\'.google.storage.v2.ComposeObject"
-          + "Request\032\031.google.storage.v2.Object\")\212\323\344\223"
-          + "\002#\022!\n\022destination.bucket\022\013{bucket=**}\022\230\001"
-          + "\n\014DeleteObject\022&.google.storage.v2.Delet"
-          + "eObjectRequest\032\026.google.protobuf.Empty\"H"
-          + "\332A\rbucket,object\332A\030bucket,object,generat"
-          + "ion\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket=**}\022\215\001\n\rRes"
-          + "toreObject\022\'.google.storage.v2.RestoreOb"
-          + "jectRequest\032\031.google.storage.v2.Object\"8"
-          + "\332A\030bucket,object,generation\212\323\344\223\002\027\022\025\n\006buc"
-          + "ket\022\013{bucket=**}\022\272\001\n\024CancelResumableWrit"
-          + "e\022..google.storage.v2.CancelResumableWri"
-          + "teRequest\032/.google.storage.v2.CancelResu"
-          + "mableWriteResponse\"A\332A\tupload_id\212\323\344\223\002/\022-"
-          + "\n\tupload_id\022 {bucket=projects/*/buckets/"
-          + "*}/**\022\225\001\n\tGetObject\022#.google.storage.v2."
-          + "GetObjectRequest\032\031.google.storage.v2.Obj"
-          + "ect\"H\332A\rbucket,object\332A\030bucket,object,ge"
-          + "neration\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket=**}\022\245\001"
-          + "\n\nReadObject\022$.google.storage.v2.ReadObj"
-          + "ectRequest\032%.google.storage.v2.ReadObjec"
-          + "tResponse\"H\332A\rbucket,object\332A\030bucket,obj"
-          + "ect,generation\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket="
-          + "**}0\001\022\214\001\n\014UpdateObject\022&.google.storage."
-          + "v2.UpdateObjectRequest\032\031.google.storage."
-          + "v2.Object\"9\332A\022object,update_mask\212\323\344\223\002\036\022\034"
-          + "\n\robject.bucket\022\013{bucket=**}\022`\n\013WriteObj"
-          + "ect\022%.google.storage.v2.WriteObjectReque"
-          + "st\032&.google.storage.v2.WriteObjectRespon"
-          + "se\"\000(\001\022n\n\017BidiWriteObject\022).google.stora"
-          + "ge.v2.BidiWriteObjectRequest\032*.google.st"
-          + "orage.v2.BidiWriteObjectResponse\"\000(\0010\001\022\204"
-          + "\001\n\013ListObjects\022%.google.storage.v2.ListO"
-          + "bjectsRequest\032&.google.storage.v2.ListOb"
-          + "jectsResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n\006parent"
-          + "\022\013{bucket=**}\022\230\001\n\rRewriteObject\022\'.google"
-          + ".storage.v2.RewriteObjectRequest\032\".googl"
-          + "e.storage.v2.RewriteResponse\":\212\323\344\223\0024\022\017\n\r"
-          + "source_bucket\022!\n\022destination_bucket\022\013{bu"
-          + "cket=**}\022\256\001\n\023StartResumableWrite\022-.googl"
-          + "e.storage.v2.StartResumableWriteRequest\032"
-          + "..google.storage.v2.StartResumableWriteR"
-          + "esponse\"8\212\323\344\223\0022\0220\n!write_object_spec.res"
-          + "ource.bucket\022\013{bucket=**}\022\256\001\n\020QueryWrite"
-          + "Status\022*.google.storage.v2.QueryWriteSta"
-          + "tusRequest\032+.google.storage.v2.QueryWrit"
-          + "eStatusResponse\"A\332A\tupload_id\212\323\344\223\002/\022-\n\tu"
-          + "pload_id\022 {bucket=projects/*/buckets/*}/"
-          + "**\022\200\001\n\021GetServiceAccount\022+.google.storag"
-          + "e.v2.GetServiceAccountRequest\032!.google.s"
-          + "torage.v2.ServiceAccount\"\033\332A\007project\212\323\344\223"
-          + "\002\013\022\t\n\007project\022\225\001\n\rCreateHmacKey\022\'.google"
-          + ".storage.v2.CreateHmacKeyRequest\032(.googl"
-          + "e.storage.v2.CreateHmacKeyResponse\"1\332A\035p"
-          + "roject,service_account_email\212\323\344\223\002\013\022\t\n\007pr"
-          + "oject\022w\n\rDeleteHmacKey\022\'.google.storage."
-          + "v2.DeleteHmacKeyRequest\032\026.google.protobu"
-          + "f.Empty\"%\332A\021access_id,project\212\323\344\223\002\013\022\t\n\007p"
-          + "roject\022}\n\nGetHmacKey\022$.google.storage.v2"
-          + ".GetHmacKeyRequest\032\".google.storage.v2.H"
-          + "macKeyMetadata\"%\332A\021access_id,project\212\323\344\223"
-          + "\002\013\022\t\n\007project\022|\n\014ListHmacKeys\022&.google.s"
-          + "torage.v2.ListHmacKeysRequest\032\'.google.s"
-          + "torage.v2.ListHmacKeysResponse\"\033\332A\007proje"
-          + "ct\212\323\344\223\002\013\022\t\n\007project\022\235\001\n\rUpdateHmacKey\022\'."
-          + "google.storage.v2.UpdateHmacKeyRequest\032\""
-          + ".google.storage.v2.HmacKeyMetadata\"?\332A\024h"
-          + "mac_key,update_mask\212\323\344\223\002\"\022 \n\020hmac_key.pr"
-          + "oject\022\014{project=**}\032\247\002\312A\026storage.googlea"
-          + "pis.com\322A\212\002https://www.googleapis.com/au"
-          + "th/cloud-platform,https://www.googleapis"
-          + ".com/auth/cloud-platform.read-only,https"
-          + "://www.googleapis.com/auth/devstorage.fu"
-          + "ll_control,https://www.googleapis.com/au"
-          + "th/devstorage.read_only,https://www.goog"
-          + "leapis.com/auth/devstorage.read_writeB\342\001"
-          + "\n\025com.google.storage.v2B\014StorageProtoP\001Z"
-          + ">cloud.google.com/go/storage/internal/ap"
-          + "iv2/storagepb;storagepb\352Ax\n!cloudkms.goo"
-          + "gleapis.com/CryptoKey\022Sprojects/{project"
-          + "}/locations/{location}/keyRings/{key_rin"
-          + "g}/cryptoKeys/{crypto_key}b\006proto3"
+          + "(\tB\003\340A\001\022\031\n\014soft_deleted\030\014 \001(\010B\003\340A\001\022(\n\033in"
+          + "clude_folders_as_prefixes\030\r \001(\010B\003\340A\001\022\027\n\n"
+          + "match_glob\030\016 \001(\tB\003\340A\001B\014\n\n_read_mask\"\205\001\n\027"
+          + "QueryWriteStatusRequest\022\026\n\tupload_id\030\001 \001"
+          + "(\tB\003\340A\002\022R\n\034common_object_request_params\030"
+          + "\002 \001(\0132,.google.storage.v2.CommonObjectRe"
+          + "questParams\"s\n\030QueryWriteStatusResponse\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\014writ"
+          + "e_status\"\250\n\n\024RewriteObjectRequest\022 \n\020des"
+          + "tination_name\030\030 \001(\tB\006\340A\002\340A\005\022D\n\022destinati"
+          + "on_bucket\030\031 \001(\tB(\340A\002\340A\005\372A\037\n\035storage.goog"
+          + "leapis.com/Bucket\022C\n\023destination_kms_key"
+          + "\030\033 \001(\tB&\372A#\n!cloudkms.googleapis.com/Cry"
+          + "ptoKey\022.\n\013destination\030\001 \001(\0132\031.google.sto"
+          + "rage.v2.Object\022<\n\rsource_bucket\030\002 \001(\tB%\340"
+          + "A\002\372A\037\n\035storage.googleapis.com/Bucket\022\032\n\r"
+          + "source_object\030\003 \001(\tB\003\340A\002\022\031\n\021source_gener"
+          + "ation\030\004 \001(\003\022\025\n\rrewrite_token\030\005 \001(\t\022\"\n\032de"
+          + "stination_predefined_acl\030\034 \001(\t\022 \n\023if_gen"
+          + "eration_match\030\007 \001(\003H\000\210\001\001\022$\n\027if_generatio"
+          + "n_not_match\030\010 \001(\003H\001\210\001\001\022$\n\027if_metagenerat"
+          + "ion_match\030\t \001(\003H\002\210\001\001\022(\n\033if_metageneratio"
+          + "n_not_match\030\n \001(\003H\003\210\001\001\022\'\n\032if_source_gene"
+          + "ration_match\030\013 \001(\003H\004\210\001\001\022+\n\036if_source_gen"
+          + "eration_not_match\030\014 \001(\003H\005\210\001\001\022+\n\036if_sourc"
+          + "e_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_encryption_key_bytes\030\025"
+          + " \001(\014\022/\n\'copy_source_encryption_key_sha25"
+          + "6_bytes\030\026 \001(\014\022R\n\034common_object_request_p"
+          + "arams\030\023 \001(\0132,.google.storage.v2.CommonOb"
+          + "jectRequestParams\022<\n\020object_checksums\030\035 "
+          + "\001(\0132\".google.storage.v2.ObjectChecksumsB"
+          + "\026\n\024_if_generation_matchB\032\n\030_if_generatio"
+          + "n_not_matchB\032\n\030_if_metageneration_matchB"
+          + "\036\n\034_if_metageneration_not_matchB\035\n\033_if_s"
+          + "ource_generation_matchB!\n\037_if_source_gen"
+          + "eration_not_matchB!\n\037_if_source_metagene"
+          + "ration_matchB%\n#_if_source_metageneratio"
+          + "n_not_match\"\227\001\n\017RewriteResponse\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.O"
+          + "bject\"\362\001\n\032StartResumableWriteRequest\022B\n\021"
+          + "write_object_spec\030\001 \001(\0132\".google.storage"
+          + ".v2.WriteObjectSpecB\003\340A\002\022R\n\034common_objec"
+          + "t_request_params\030\003 \001(\0132,.google.storage."
+          + "v2.CommonObjectRequestParams\022<\n\020object_c"
+          + "hecksums\030\005 \001(\0132\".google.storage.v2.Objec"
+          + "tChecksums\"0\n\033StartResumableWriteRespons"
+          + "e\022\021\n\tupload_id\030\001 \001(\t\"\357\003\n\023UpdateObjectReq"
+          + "uest\022.\n\006object\030\001 \001(\0132\031.google.storage.v2"
+          + ".ObjectB\003\340A\002\022 \n\023if_generation_match\030\002 \001("
+          + "\003H\000\210\001\001\022$\n\027if_generation_not_match\030\003 \001(\003H"
+          + "\001\210\001\001\022$\n\027if_metageneration_match\030\004 \001(\003H\002\210"
+          + "\001\001\022(\n\033if_metageneration_not_match\030\005 \001(\003H"
+          + "\003\210\001\001\022\026\n\016predefined_acl\030\n \001(\t\0224\n\013update_m"
+          + "ask\030\007 \001(\0132\032.google.protobuf.FieldMaskB\003\340"
+          + "A\002\022R\n\034common_object_request_params\030\010 \001(\013"
+          + "2,.google.storage.v2.CommonObjectRequest"
+          + "ParamsB\026\n\024_if_generation_matchB\032\n\030_if_ge"
+          + "neration_not_matchB\032\n\030_if_metageneration"
+          + "_matchB\036\n\034_if_metageneration_not_match\"`"
+          + "\n\030GetServiceAccountRequest\022D\n\007project\030\001 "
+          + "\001(\tB3\340A\002\372A-\n+cloudresourcemanager.google"
+          + "apis.com/Project\"\200\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\"g\n\025CreateHma"
+          + "cKeyResponse\0224\n\010metadata\030\001 \001(\0132\".google."
+          + "storage.v2.HmacKeyMetadata\022\030\n\020secret_key"
+          + "_bytes\030\003 \001(\014\"t\n\024DeleteHmacKeyRequest\022\026\n\t"
+          + "access_id\030\001 \001(\tB\003\340A\002\022D\n\007project\030\002 \001(\tB3\340"
+          + "A\002\372A-\n+cloudresourcemanager.googleapis.c"
+          + "om/Project\"q\n\021GetHmacKeyRequest\022\026\n\tacces"
+          + "s_id\030\001 \001(\tB\003\340A\002\022D\n\007project\030\002 \001(\tB3\340A\002\372A-"
+          + "\n+cloudresourcemanager.googleapis.com/Pr"
+          + "oject\"\274\001\n\023ListHmacKeysRequest\022D\n\007project"
+          + "\030\001 \001(\tB3\340A\002\372A-\n+cloudresourcemanager.goo"
+          + "gleapis.com/Project\022\021\n\tpage_size\030\002 \001(\005\022\022"
+          + "\n\npage_token\030\003 \001(\t\022\035\n\025service_account_em"
+          + "ail\030\004 \001(\t\022\031\n\021show_deleted_keys\030\005 \001(\010\"f\n\024"
+          + "ListHmacKeysResponse\0225\n\thmac_keys\030\001 \003(\0132"
+          + "\".google.storage.v2.HmacKeyMetadata\022\027\n\017n"
+          + "ext_page_token\030\002 \001(\t\"\202\001\n\024UpdateHmacKeyRe"
+          + "quest\0229\n\010hmac_key\030\001 \001(\0132\".google.storage"
+          + ".v2.HmacKeyMetadataB\003\340A\002\022/\n\013update_mask\030"
+          + "\003 \001(\0132\032.google.protobuf.FieldMask\"|\n\031Com"
+          + "monObjectRequestParams\022\034\n\024encryption_alg"
+          + "orithm\030\001 \001(\t\022\034\n\024encryption_key_bytes\030\004 \001"
+          + "(\014\022#\n\033encryption_key_sha256_bytes\030\005 \001(\014\""
+          + "\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\"\222\034\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\022\014\n\004etag\030\035 \001(\t\022D\n\007project\030\003 \001("
+          + "\tB3\340A\005\372A-\n+cloudresourcemanager.googleap"
+          + "is.com/Project\022\033\n\016metageneration\030\004 \001(\003B\003"
+          + "\340A\003\022\025\n\010location\030\005 \001(\tB\003\340A\005\022\032\n\rlocation_t"
+          + "ype\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_objec"
+          + "t_acl\030\t \003(\0132&.google.storage.v2.ObjectAc"
+          + "cessControl\0226\n\tlifecycle\030\n \001(\0132#.google."
+          + "storage.v2.Bucket.Lifecycle\0224\n\013create_ti"
+          + "me\030\013 \001(\0132\032.google.protobuf.TimestampB\003\340A"
+          + "\003\022,\n\004cors\030\014 \003(\0132\036.google.storage.v2.Buck"
+          + "et.Cors\0224\n\013update_time\030\r \001(\0132\032.google.pr"
+          + "otobuf.TimestampB\003\340A\003\022 \n\030default_event_b"
+          + "ased_hold\030\016 \001(\010\0225\n\006labels\030\017 \003(\0132%.google"
+          + ".storage.v2.Bucket.LabelsEntry\0222\n\007websit"
+          + "e\030\020 \001(\0132!.google.storage.v2.Bucket.Websi"
+          + "te\0228\n\nversioning\030\021 \001(\0132$.google.storage."
+          + "v2.Bucket.Versioning\0222\n\007logging\030\022 \001(\0132!."
+          + "google.storage.v2.Bucket.Logging\022,\n\005owne"
+          + "r\030\023 \001(\0132\030.google.storage.v2.OwnerB\003\340A\003\0228"
+          + "\n\nencryption\030\024 \001(\0132$.google.storage.v2.B"
+          + "ucket.Encryption\0222\n\007billing\030\025 \001(\0132!.goog"
+          + "le.storage.v2.Bucket.Billing\022C\n\020retentio"
+          + "n_policy\030\026 \001(\0132).google.storage.v2.Bucke"
+          + "t.RetentionPolicy\0227\n\niam_config\030\027 \001(\0132#."
+          + "google.storage.v2.Bucket.IamConfig\022\025\n\rsa"
+          + "tisfies_pzs\030\031 \001(\010\022P\n\027custom_placement_co"
+          + "nfig\030\032 \001(\0132/.google.storage.v2.Bucket.Cu"
+          + "stomPlacementConfig\0226\n\tautoclass\030\034 \001(\0132#"
+          + ".google.storage.v2.Bucket.Autoclass\022T\n\026h"
+          + "ierarchical_namespace\030  \001(\0132/.google.sto"
+          + "rage.v2.Bucket.HierarchicalNamespaceB\003\340A"
+          + "\001\022K\n\022soft_delete_policy\030\037 \001(\0132*.google.s"
+          + "torage.v2.Bucket.SoftDeletePolicyB\003\340A\001\032!"
+          + "\n\007Billing\022\026\n\016requester_pays\030\001 \001(\010\032X\n\004Cor"
+          + "s\022\016\n\006origin\030\001 \003(\t\022\016\n\006method\030\002 \003(\t\022\027\n\017res"
+          + "ponse_header\030\003 \003(\t\022\027\n\017max_age_seconds\030\004 "
+          + "\001(\005\032M\n\nEncryption\022?\n\017default_kms_key\030\001 \001"
+          + "(\tB&\372A#\n!cloudkms.googleapis.com/CryptoK"
+          + "ey\032\354\001\n\tIamConfig\022a\n\033uniform_bucket_level"
+          + "_access\030\001 \001(\0132<.google.storage.v2.Bucket"
+          + ".IamConfig.UniformBucketLevelAccess\022 \n\030p"
+          + "ublic_access_prevention\030\003 \001(\t\032Z\n\030Uniform"
+          + "BucketLevelAccess\022\017\n\007enabled\030\001 \001(\010\022-\n\tlo"
+          + "ck_time\030\002 \001(\0132\032.google.protobuf.Timestam"
+          + "p\032\363\005\n\tLifecycle\0226\n\004rule\030\001 \003(\0132(.google.s"
+          + "torage.v2.Bucket.Lifecycle.Rule\032\255\005\n\004Rule"
+          + "\022?\n\006action\030\001 \001(\0132/.google.storage.v2.Buc"
+          + "ket.Lifecycle.Rule.Action\022E\n\tcondition\030\002"
+          + " \001(\01322.google.storage.v2.Bucket.Lifecycl"
+          + "e.Rule.Condition\032-\n\006Action\022\014\n\004type\030\001 \001(\t"
+          + "\022\025\n\rstorage_class\030\002 \001(\t\032\355\003\n\tCondition\022\025\n"
+          + "\010age_days\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(\010"
+          + "H\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\026days_si"
+          + "nce_custom_time\030\007 \001(\005H\003\210\001\001\022-\n\022custom_tim"
+          + "e_before\030\010 \001(\0132\021.google.type.Date\022\'\n\032day"
+          + "s_since_noncurrent_time\030\t \001(\005H\004\210\001\001\0221\n\026no"
+          + "ncurrent_time_before\030\n \001(\0132\021.google.type"
+          + ".Date\022\026\n\016matches_prefix\030\013 \003(\t\022\026\n\016matches"
+          + "_suffix\030\014 \003(\tB\013\n\t_age_daysB\n\n\010_is_liveB\025"
+          + "\n\023_num_newer_versionsB\031\n\027_days_since_cus"
+          + "tom_timeB\035\n\033_days_since_noncurrent_time\032"
+          + "8\n\007Logging\022\022\n\nlog_bucket\030\001 \001(\t\022\031\n\021log_ob"
+          + "ject_prefix\030\002 \001(\t\032\217\001\n\017RetentionPolicy\0222\n"
+          + "\016effective_time\030\001 \001(\0132\032.google.protobuf."
+          + "Timestamp\022\021\n\tis_locked\030\002 \001(\010\0225\n\022retentio"
+          + "n_duration\030\004 \001(\0132\031.google.protobuf.Durat"
+          + "ion\032\261\001\n\020SoftDeletePolicy\022:\n\022retention_du"
+          + "ration\030\001 \001(\0132\031.google.protobuf.DurationH"
+          + "\000\210\001\001\0227\n\016effective_time\030\002 \001(\0132\032.google.pr"
+          + "otobuf.TimestampH\001\210\001\001B\025\n\023_retention_dura"
+          + "tionB\021\n\017_effective_time\032\035\n\nVersioning\022\017\n"
+          + "\007enabled\030\001 \001(\010\032;\n\007Website\022\030\n\020main_page_s"
+          + "uffix\030\001 \001(\t\022\026\n\016not_found_page\030\002 \001(\t\032/\n\025C"
+          + "ustomPlacementConfig\022\026\n\016data_locations\030\001"
+          + " \003(\t\032\213\002\n\tAutoclass\022\017\n\007enabled\030\001 \001(\010\0224\n\013t"
+          + "oggle_time\030\002 \001(\0132\032.google.protobuf.Times"
+          + "tampB\003\340A\003\022#\n\026terminal_storage_class\030\003 \001("
+          + "\tH\000\210\001\001\022P\n\"terminal_storage_class_update_"
+          + "time\030\004 \001(\0132\032.google.protobuf.TimestampB\003"
+          + "\340A\003H\001\210\001\001B\031\n\027_terminal_storage_classB%\n#_"
+          + "terminal_storage_class_update_time\032-\n\025Hi"
+          + "erarchicalNamespace\022\024\n\007enabled\030\001 \001(\010B\003\340A"
+          + "\001\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002"
+          + " \001(\t:\0028\001:G\352AD\n\035storage.googleapis.com/Bu"
+          + "cket\022#projects/{project}/buckets/{bucket"
+          + "}\"\316\001\n\023BucketAccessControl\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\027\n\nentity_al"
+          + "t\030\t \001(\tB\003\340A\003\022\021\n\tentity_id\030\004 \001(\t\022\014\n\004etag\030"
+          + "\010 \001(\t\022\r\n\005email\030\005 \001(\t\022\016\n\006domain\030\006 \001(\t\0224\n\014"
+          + "project_team\030\007 \001(\0132\036.google.storage.v2.P"
+          + "rojectTeam\"I\n\017ChecksummedData\022\026\n\007content"
+          + "\030\001 \001(\014B\005\010\001\340A\001\022\023\n\006crc32c\030\002 \001(\007H\000\210\001\001B\t\n\007_c"
+          + "rc32c\"C\n\017ObjectChecksums\022\023\n\006crc32c\030\001 \001(\007"
+          + "H\000\210\001\001\022\020\n\010md5_hash\030\002 \001(\014B\t\n\007_crc32c\"\255\002\n\017H"
+          + "macKeyMetadata\022\017\n\002id\030\001 \001(\tB\003\340A\005\022\026\n\tacces"
+          + "s_id\030\002 \001(\tB\003\340A\005\022D\n\007project\030\003 \001(\tB3\340A\005\372A-",
+      "\n+cloudresourcemanager.googleapis.com/Pr"
+          + "oject\022\"\n\025service_account_email\030\004 \001(\tB\003\340A"
+          + "\003\022\r\n\005state\030\005 \001(\t\0224\n\013create_time\030\006 \001(\0132\032."
+          + "google.protobuf.TimestampB\003\340A\003\0224\n\013update"
+          + "_time\030\007 \001(\0132\032.google.protobuf.TimestampB"
+          + "\003\340A\003\022\014\n\004etag\030\010 \001(\t\"\247\003\n\022NotificationConfi"
+          + "g\022\021\n\004name\030\001 \001(\tB\003\340A\002\022\022\n\005topic\030\002 \001(\tB\003\340A\002"
+          + "\022\014\n\004etag\030\007 \001(\t\022\023\n\013event_types\030\003 \003(\t\022V\n\021c"
+          + "ustom_attributes\030\004 \003(\0132;.google.storage."
+          + "v2.NotificationConfig.CustomAttributesEn"
+          + "try\022\032\n\022object_name_prefix\030\005 \001(\t\022\033\n\016paylo"
+          + "ad_format\030\006 \001(\tB\003\340A\002\0327\n\025CustomAttributes"
+          + "Entry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:}\352"
+          + "Az\n)storage.googleapis.com/NotificationC"
+          + "onfig\022Mprojects/{project}/buckets/{bucke"
+          + "t}/notificationConfigs/{notification_con"
+          + "fig}\"L\n\022CustomerEncryption\022\034\n\024encryption"
+          + "_algorithm\030\001 \001(\t\022\030\n\020key_sha256_bytes\030\003 \001"
+          + "(\014\"\254\n\n\006Object\022\021\n\004name\030\001 \001(\tB\003\340A\005\0225\n\006buck"
+          + "et\030\002 \001(\tB%\340A\005\372A\037\n\035storage.googleapis.com"
+          + "/Bucket\022\014\n\004etag\030\033 \001(\t\022\027\n\ngeneration\030\003 \001("
+          + "\003B\003\340A\005\022\033\n\016metageneration\030\004 \001(\003B\003\340A\003\022\025\n\rs"
+          + "torage_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_dispo"
+          + "sition\030\010 \001(\t\022\025\n\rcache_control\030\t \001(\t\0223\n\003a"
+          + "cl\030\n \003(\0132&.google.storage.v2.ObjectAcces"
+          + "sControl\022\030\n\020content_language\030\013 \001(\t\0224\n\013de"
+          + "lete_time\030\014 \001(\0132\032.google.protobuf.Timest"
+          + "ampB\003\340A\003\022\024\n\014content_type\030\r \001(\t\0224\n\013create"
+          + "_time\030\016 \001(\0132\032.google.protobuf.TimestampB"
+          + "\003\340A\003\022\034\n\017component_count\030\017 \001(\005B\003\340A\003\022:\n\tch"
+          + "ecksums\030\020 \001(\0132\".google.storage.v2.Object"
+          + "ChecksumsB\003\340A\003\0224\n\013update_time\030\021 \001(\0132\032.go"
+          + "ogle.protobuf.TimestampB\003\340A\003\0227\n\007kms_key\030"
+          + "\022 \001(\tB&\372A#\n!cloudkms.googleapis.com/Cryp"
+          + "toKey\022B\n\031update_storage_class_time\030\023 \001(\013"
+          + "2\032.google.protobuf.TimestampB\003\340A\003\022\026\n\016tem"
+          + "porary_hold\030\024 \001(\010\0229\n\025retention_expire_ti"
+          + "me\030\025 \001(\0132\032.google.protobuf.Timestamp\0229\n\010"
+          + "metadata\030\026 \003(\0132\'.google.storage.v2.Objec"
+          + "t.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.v"
+          + "2.OwnerB\003\340A\003\022B\n\023customer_encryption\030\031 \001("
+          + "\0132%.google.storage.v2.CustomerEncryption"
+          + "\022/\n\013custom_time\030\032 \001(\0132\032.google.protobuf."
+          + "Timestamp\022>\n\020soft_delete_time\030\034 \001(\0132\032.go"
+          + "ogle.protobuf.TimestampB\003\340A\003H\001\210\001\001\022>\n\020har"
+          + "d_delete_time\030\035 \001(\0132\032.google.protobuf.Ti"
+          + "mestampB\003\340A\003H\002\210\001\001\032/\n\rMetadataEntry\022\013\n\003ke"
+          + "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B\023\n\021_event_bas"
+          + "ed_holdB\023\n\021_soft_delete_timeB\023\n\021_hard_de"
+          + "lete_time\"\316\001\n\023ObjectAccessControl\022\014\n\004rol"
+          + "e\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\016\n\006entity\030\003 \001(\t\022\027\n\ne"
+          + "ntity_alt\030\t \001(\tB\003\340A\003\022\021\n\tentity_id\030\004 \001(\t\022"
+          + "\014\n\004etag\030\010 \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.stor"
+          + "age.v2.ProjectTeam\"l\n\023ListObjectsRespons"
+          + "e\022*\n\007objects\030\001 \003(\0132\031.google.storage.v2.O"
+          + "bject\022\020\n\010prefixes\030\002 \003(\t\022\027\n\017next_page_tok"
+          + "en\030\003 \001(\t\"3\n\013ProjectTeam\022\026\n\016project_numbe"
+          + "r\030\001 \001(\t\022\014\n\004team\030\002 \001(\t\"\'\n\016ServiceAccount\022"
+          + "\025\n\remail_address\030\001 \001(\t\"*\n\005Owner\022\016\n\006entit"
+          + "y\030\001 \001(\t\022\021\n\tentity_id\030\002 \001(\t\"C\n\014ContentRan"
+          + "ge\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\027\n\017comple"
+          + "te_length\030\003 \001(\0032\252\'\n\007Storage\022r\n\014DeleteBuc"
+          + "ket\022&.google.storage.v2.DeleteBucketRequ"
+          + "est\032\026.google.protobuf.Empty\"\"\332A\004name\212\323\344\223"
+          + "\002\025\022\023\n\004name\022\013{bucket=**}\022o\n\tGetBucket\022#.g"
+          + "oogle.storage.v2.GetBucketRequest\032\031.goog"
+          + "le.storage.v2.Bucket\"\"\332A\004name\212\323\344\223\002\025\022\023\n\004n"
+          + "ame\022\013{bucket=**}\022\253\001\n\014CreateBucket\022&.goog"
+          + "le.storage.v2.CreateBucketRequest\032\031.goog"
+          + "le.storage.v2.Bucket\"X\332A\027parent,bucket,b"
+          + "ucket_id\212\323\344\223\0028\022\026\n\006parent\022\014{project=**}\022\036"
+          + "\n\016bucket.project\022\014{project=**}\022\205\001\n\013ListB"
+          + "uckets\022%.google.storage.v2.ListBucketsRe"
+          + "quest\032&.google.storage.v2.ListBucketsRes"
+          + "ponse\"\'\332A\006parent\212\323\344\223\002\030\022\026\n\006parent\022\014{proje"
+          + "ct=**}\022\223\001\n\031LockBucketRetentionPolicy\0223.g"
+          + "oogle.storage.v2.LockBucketRetentionPoli"
+          + "cyRequest\032\031.google.storage.v2.Bucket\"&\332A"
+          + "\006bucket\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket=**}\022u\n\014"
+          + "GetIamPolicy\022\".google.iam.v1.GetIamPolic"
+          + "yRequest\032\025.google.iam.v1.Policy\"*\332A\010reso"
+          + "urce\212\323\344\223\002\031\022\027\n\010resource\022\013{bucket=**}\022|\n\014S"
+          + "etIamPolicy\022\".google.iam.v1.SetIamPolicy"
+          + "Request\032\025.google.iam.v1.Policy\"1\332A\017resou"
+          + "rce,policy\212\323\344\223\002\031\022\027\n\010resource\022\013{bucket=**"
+          + "}\022\327\001\n\022TestIamPermissions\022(.google.iam.v1"
+          + ".TestIamPermissionsRequest\032).google.iam."
+          + "v1.TestIamPermissionsResponse\"l\332A\024resour"
+          + "ce,permissions\212\323\344\223\002O\022\027\n\010resource\022\013{bucke"
+          + "t=**}\0224\n\010resource\022({bucket=projects/*/bu"
+          + "ckets/*}/objects/**\022\212\001\n\014UpdateBucket\022&.g"
+          + "oogle.storage.v2.UpdateBucketRequest\032\031.g"
+          + "oogle.storage.v2.Bucket\"7\332A\022bucket,updat"
+          + "e_mask\212\323\344\223\002\034\022\032\n\013bucket.name\022\013{bucket=**}"
+          + "\022\237\001\n\030DeleteNotificationConfig\0222.google.s"
+          + "torage.v2.DeleteNotificationConfigReques"
+          + "t\032\026.google.protobuf.Empty\"7\332A\004name\212\323\344\223\002*"
+          + "\022(\n\004name\022 {bucket=projects/*/buckets/*}/"
+          + "**\022\250\001\n\025GetNotificationConfig\022/.google.st"
+          + "orage.v2.GetNotificationConfigRequest\032%."
+          + "google.storage.v2.NotificationConfig\"7\332A"
+          + "\004name\212\323\344\223\002*\022(\n\004name\022 {bucket=projects/*/"
+          + "buckets/*}/**\022\261\001\n\030CreateNotificationConf"
+          + "ig\0222.google.storage.v2.CreateNotificatio"
+          + "nConfigRequest\032%.google.storage.v2.Notif"
+          + "icationConfig\":\332A\032parent,notification_co"
+          + "nfig\212\323\344\223\002\027\022\025\n\006parent\022\013{bucket=**}\022\250\001\n\027Li"
+          + "stNotificationConfigs\0221.google.storage.v"
+          + "2.ListNotificationConfigsRequest\0322.googl"
+          + "e.storage.v2.ListNotificationConfigsResp"
+          + "onse\"&\332A\006parent\212\323\344\223\002\027\022\025\n\006parent\022\013{bucket"
+          + "=**}\022~\n\rComposeObject\022\'.google.storage.v"
+          + "2.ComposeObjectRequest\032\031.google.storage."
+          + "v2.Object\")\212\323\344\223\002#\022!\n\022destination.bucket\022"
+          + "\013{bucket=**}\022\230\001\n\014DeleteObject\022&.google.s"
+          + "torage.v2.DeleteObjectRequest\032\026.google.p"
+          + "rotobuf.Empty\"H\332A\rbucket,object\332A\030bucket"
+          + ",object,generation\212\323\344\223\002\027\022\025\n\006bucket\022\013{buc"
+          + "ket=**}\022\215\001\n\rRestoreObject\022\'.google.stora"
+          + "ge.v2.RestoreObjectRequest\032\031.google.stor"
+          + "age.v2.Object\"8\332A\030bucket,object,generati"
+          + "on\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket=**}\022\272\001\n\024Canc"
+          + "elResumableWrite\022..google.storage.v2.Can"
+          + "celResumableWriteRequest\032/.google.storag"
+          + "e.v2.CancelResumableWriteResponse\"A\332A\tup"
+          + "load_id\212\323\344\223\002/\022-\n\tupload_id\022 {bucket=proj"
+          + "ects/*/buckets/*}/**\022\225\001\n\tGetObject\022#.goo"
+          + "gle.storage.v2.GetObjectRequest\032\031.google"
+          + ".storage.v2.Object\"H\332A\rbucket,object\332A\030b"
+          + "ucket,object,generation\212\323\344\223\002\027\022\025\n\006bucket\022"
+          + "\013{bucket=**}\022\245\001\n\nReadObject\022$.google.sto"
+          + "rage.v2.ReadObjectRequest\032%.google.stora"
+          + "ge.v2.ReadObjectResponse\"H\332A\rbucket,obje"
+          + "ct\332A\030bucket,object,generation\212\323\344\223\002\027\022\025\n\006b"
+          + "ucket\022\013{bucket=**}0\001\022\214\001\n\014UpdateObject\022&."
+          + "google.storage.v2.UpdateObjectRequest\032\031."
+          + "google.storage.v2.Object\"9\332A\022object,upda"
+          + "te_mask\212\323\344\223\002\036\022\034\n\robject.bucket\022\013{bucket="
+          + "**}\022`\n\013WriteObject\022%.google.storage.v2.W"
+          + "riteObjectRequest\032&.google.storage.v2.Wr"
+          + "iteObjectResponse\"\000(\001\022n\n\017BidiWriteObject"
+          + "\022).google.storage.v2.BidiWriteObjectRequ"
+          + "est\032*.google.storage.v2.BidiWriteObjectR"
+          + "esponse\"\000(\0010\001\022\204\001\n\013ListObjects\022%.google.s"
+          + "torage.v2.ListObjectsRequest\032&.google.st"
+          + "orage.v2.ListObjectsResponse\"&\332A\006parent\212"
+          + "\323\344\223\002\027\022\025\n\006parent\022\013{bucket=**}\022\230\001\n\rRewrite"
+          + "Object\022\'.google.storage.v2.RewriteObject"
+          + "Request\032\".google.storage.v2.RewriteRespo"
+          + "nse\":\212\323\344\223\0024\022\017\n\rsource_bucket\022!\n\022destinat"
+          + "ion_bucket\022\013{bucket=**}\022\256\001\n\023StartResumab"
+          + "leWrite\022-.google.storage.v2.StartResumab"
+          + "leWriteRequest\032..google.storage.v2.Start"
+          + "ResumableWriteResponse\"8\212\323\344\223\0022\0220\n!write_"
+          + "object_spec.resource.bucket\022\013{bucket=**}"
+          + "\022\256\001\n\020QueryWriteStatus\022*.google.storage.v"
+          + "2.QueryWriteStatusRequest\032+.google.stora"
+          + "ge.v2.QueryWriteStatusResponse\"A\332A\tuploa"
+          + "d_id\212\323\344\223\002/\022-\n\tupload_id\022 {bucket=project"
+          + "s/*/buckets/*}/**\022\200\001\n\021GetServiceAccount\022"
+          + "+.google.storage.v2.GetServiceAccountReq"
+          + "uest\032!.google.storage.v2.ServiceAccount\""
+          + "\033\332A\007project\212\323\344\223\002\013\022\t\n\007project\022\225\001\n\rCreateH"
+          + "macKey\022\'.google.storage.v2.CreateHmacKey"
+          + "Request\032(.google.storage.v2.CreateHmacKe"
+          + "yResponse\"1\332A\035project,service_account_em"
+          + "ail\212\323\344\223\002\013\022\t\n\007project\022w\n\rDeleteHmacKey\022\'."
+          + "google.storage.v2.DeleteHmacKeyRequest\032\026"
+          + ".google.protobuf.Empty\"%\332A\021access_id,pro"
+          + "ject\212\323\344\223\002\013\022\t\n\007project\022}\n\nGetHmacKey\022$.go"
+          + "ogle.storage.v2.GetHmacKeyRequest\032\".goog"
+          + "le.storage.v2.HmacKeyMetadata\"%\332A\021access"
+          + "_id,project\212\323\344\223\002\013\022\t\n\007project\022|\n\014ListHmac"
+          + "Keys\022&.google.storage.v2.ListHmacKeysReq"
+          + "uest\032\'.google.storage.v2.ListHmacKeysRes"
+          + "ponse\"\033\332A\007project\212\323\344\223\002\013\022\t\n\007project\022\235\001\n\rU"
+          + "pdateHmacKey\022\'.google.storage.v2.UpdateH"
+          + "macKeyRequest\032\".google.storage.v2.HmacKe"
+          + "yMetadata\"?\332A\024hmac_key,update_mask\212\323\344\223\002\""
+          + "\022 \n\020hmac_key.project\022\014{project=**}\032\247\002\312A\026"
+          + "storage.googleapis.com\322A\212\002https://www.go"
+          + "ogleapis.com/auth/cloud-platform,https:/"
+          + "/www.googleapis.com/auth/cloud-platform."
+          + "read-only,https://www.googleapis.com/aut"
+          + "h/devstorage.full_control,https://www.go"
+          + "ogleapis.com/auth/devstorage.read_only,h"
+          + "ttps://www.googleapis.com/auth/devstorag"
+          + "e.read_writeB\342\001\n\025com.google.storage.v2B\014"
+          + "StorageProtoP\001Z>cloud.google.com/go/stor"
+          + "age/internal/apiv2/storagepb;storagepb\352A"
+          + "x\n!cloudkms.googleapis.com/CryptoKey\022Spr"
+          + "ojects/{project}/locations/{location}/ke"
+          + "yRings/{key_ring}/cryptoKeys/{crypto_key"
+          + "}b\006proto3"
     };
     descriptor =
         com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -1261,6 +1270,7 @@ public final class StorageProto {
               "LexicographicStart",
               "LexicographicEnd",
               "SoftDeleted",
+              "IncludeFoldersAsPrefixes",
               "MatchGlob",
             });
     internal_static_google_storage_v2_QueryWriteStatusRequest_descriptor =
@@ -1459,6 +1469,7 @@ public final class StorageProto {
               "SatisfiesPzs",
               "CustomPlacementConfig",
               "Autoclass",
+              "HierarchicalNamespace",
               "SoftDeletePolicy",
             });
     internal_static_google_storage_v2_Bucket_Billing_descriptor =
@@ -1599,8 +1610,16 @@ public final class StorageProto {
             new java.lang.String[] {
               "Enabled", "ToggleTime", "TerminalStorageClass", "TerminalStorageClassUpdateTime",
             });
-    internal_static_google_storage_v2_Bucket_LabelsEntry_descriptor =
+    internal_static_google_storage_v2_Bucket_HierarchicalNamespace_descriptor =
         internal_static_google_storage_v2_Bucket_descriptor.getNestedTypes().get(12);
+    internal_static_google_storage_v2_Bucket_HierarchicalNamespace_fieldAccessorTable =
+        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+            internal_static_google_storage_v2_Bucket_HierarchicalNamespace_descriptor,
+            new java.lang.String[] {
+              "Enabled",
+            });
+    internal_static_google_storage_v2_Bucket_LabelsEntry_descriptor =
+        internal_static_google_storage_v2_Bucket_descriptor.getNestedTypes().get(13);
     internal_static_google_storage_v2_Bucket_LabelsEntry_fieldAccessorTable =
         new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
             internal_static_google_storage_v2_Bucket_LabelsEntry_descriptor,
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 a8516a58..62922ead 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
@@ -1248,6 +1248,11 @@ message ListObjectsRequest {
   // Soft delete policy is required to set this option.
   bool soft_deleted = 12 [(google.api.field_behavior) = OPTIONAL];
 
+  // Optional. If true, will also include folders and managed folders (besides
+  // objects) in the returned `prefixes`. Requires `delimiter` to be set to '/'.
+  bool include_folders_as_prefixes = 13
+      [(google.api.field_behavior) = OPTIONAL];
+
   // Optional. Filter results to objects and prefixes that match this glob
   // pattern. See [List Objects Using
   // Glob](https://cloud.google.com/storage/docs/json_api/v1/objects/list#list-objects-and-prefixes-using-glob)
@@ -1988,6 +1993,12 @@ message Bucket {
         [(google.api.field_behavior) = OUTPUT_ONLY];
   }
 
+  // Configuration for a bucket's hierarchical namespace feature.
+  message HierarchicalNamespace {
+    // Optional. Enables the hierarchical namespace feature.
+    bool enabled = 1 [(google.api.field_behavior) = OPTIONAL];
+  }
+
   // Immutable. The name of the bucket.
   // Format: `projects/{project}/buckets/{bucket}`
   string name = 1 [(google.api.field_behavior) = IMMUTABLE];
@@ -2136,6 +2147,12 @@ message Bucket {
   // Autoclass feature will be disabled and have no effect on the bucket.
   Autoclass autoclass = 28;
 
+  // Optional. The bucket's hierarchical namespace configuration. If there is no
+  // configuration, the hierarchical namespace feature will be disabled and have
+  // no effect on the bucket.
+  HierarchicalNamespace hierarchical_namespace = 32
+      [(google.api.field_behavior) = OPTIONAL];
+
   // Optional. The bucket's soft delete policy. The soft delete policy prevents
   // soft-deleted objects from being permanently deleted.
   SoftDeletePolicy soft_delete_policy = 31
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 4603242f..2f8aca59 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -61,7 +61,7 @@
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-pubsub</artifactId>
-      <version>1.127.1</version>
+      <version>1.127.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml
index 9272f0fe..2f4f14a4 100644
--- a/samples/native-image-sample/pom.xml
+++ b/samples/native-image-sample/pom.xml
@@ -29,7 +29,7 @@
       <dependency>
         <groupId>com.google.cloud</groupId>
         <artifactId>libraries-bom</artifactId>
-        <version>26.33.0</version>
+        <version>26.34.0</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
@@ -61,7 +61,7 @@
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-pubsub</artifactId>
-      <version>1.127.1</version>
+      <version>1.127.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index d875f8e6..6211bd42 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -52,7 +52,7 @@
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-pubsub</artifactId>
-      <version>1.127.1</version>
+      <version>1.127.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 765abc80..b9c0b93c 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -31,7 +31,7 @@
       <dependency>
         <groupId>com.google.cloud</groupId>
         <artifactId>libraries-bom</artifactId>
-        <version>26.33.0</version>
+        <version>26.34.0</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
@@ -72,7 +72,7 @@
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-pubsub</artifactId>
-      <version>1.127.1</version>
+      <version>1.127.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>


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 82a4c7b9..0e97f7bb 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
@@ -202,6 +202,7 @@ public class StorageClientTest {
             .setSatisfiesPzs(true)
             .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build())
             .setAutoclass(Bucket.Autoclass.newBuilder().build())
+            .setHierarchicalNamespace(Bucket.HierarchicalNamespace.newBuilder().build())
             .setSoftDeletePolicy(Bucket.SoftDeletePolicy.newBuilder().build())
             .build();
     mockStorage.addResponse(expectedResponse);
@@ -268,6 +269,7 @@ public class StorageClientTest {
             .setSatisfiesPzs(true)
             .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build())
             .setAutoclass(Bucket.Autoclass.newBuilder().build())
+            .setHierarchicalNamespace(Bucket.HierarchicalNamespace.newBuilder().build())
             .setSoftDeletePolicy(Bucket.SoftDeletePolicy.newBuilder().build())
             .build();
     mockStorage.addResponse(expectedResponse);
@@ -334,6 +336,7 @@ public class StorageClientTest {
             .setSatisfiesPzs(true)
             .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build())
             .setAutoclass(Bucket.Autoclass.newBuilder().build())
+            .setHierarchicalNamespace(Bucket.HierarchicalNamespace.newBuilder().build())
             .setSoftDeletePolicy(Bucket.SoftDeletePolicy.newBuilder().build())
             .build();
     mockStorage.addResponse(expectedResponse);
@@ -406,6 +409,7 @@ public class StorageClientTest {
             .setSatisfiesPzs(true)
             .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build())
             .setAutoclass(Bucket.Autoclass.newBuilder().build())
+            .setHierarchicalNamespace(Bucket.HierarchicalNamespace.newBuilder().build())
             .setSoftDeletePolicy(Bucket.SoftDeletePolicy.newBuilder().build())
             .build();
     mockStorage.addResponse(expectedResponse);
@@ -566,6 +570,7 @@ public class StorageClientTest {
             .setSatisfiesPzs(true)
             .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build())
             .setAutoclass(Bucket.Autoclass.newBuilder().build())
+            .setHierarchicalNamespace(Bucket.HierarchicalNamespace.newBuilder().build())
             .setSoftDeletePolicy(Bucket.SoftDeletePolicy.newBuilder().build())
             .build();
     mockStorage.addResponse(expectedResponse);
@@ -633,6 +638,7 @@ public class StorageClientTest {
             .setSatisfiesPzs(true)
             .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build())
             .setAutoclass(Bucket.Autoclass.newBuilder().build())
+            .setHierarchicalNamespace(Bucket.HierarchicalNamespace.newBuilder().build())
             .setSoftDeletePolicy(Bucket.SoftDeletePolicy.newBuilder().build())
             .build();
     mockStorage.addResponse(expectedResponse);
@@ -954,6 +960,7 @@ public class StorageClientTest {
             .setSatisfiesPzs(true)
             .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build())
             .setAutoclass(Bucket.Autoclass.newBuilder().build())
+            .setHierarchicalNamespace(Bucket.HierarchicalNamespace.newBuilder().build())
             .setSoftDeletePolicy(Bucket.SoftDeletePolicy.newBuilder().build())
             .build();
     mockStorage.addResponse(expectedResponse);
diff --git a/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile b/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile
index 3d168312..2c621ade 100644
--- a/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile
+++ b/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile
@@ -1,1 +1,1 @@
-FROM gcr.io/cloud-devrel-public-resources/storage-testbench:v0.41.0
+FROM gcr.io/cloud-devrel-public-resources/storage-testbench:v0.42.0