diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicy.java b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicy.java
index 3c5a9a8f58cc..82a2ff6b8ac9 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicy.java
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicy.java
@@ -95,12 +95,11 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -112,12 +111,11 @@ public com.google.protobuf.ProtocolStringList getAllowedPersistenceRegionsList()
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -129,12 +127,11 @@ public int getAllowedPersistenceRegionsCount() {
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -146,12 +143,11 @@ public java.lang.String getAllowedPersistenceRegions(int index) {
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -504,12 +500,11 @@ private void ensureAllowedPersistenceRegionsIsMutable() {
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -521,12 +516,11 @@ public com.google.protobuf.ProtocolStringList getAllowedPersistenceRegionsList()
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -538,12 +532,11 @@ public int getAllowedPersistenceRegionsCount() {
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -555,12 +548,11 @@ public java.lang.String getAllowedPersistenceRegions(int index) {
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -572,12 +564,11 @@ public com.google.protobuf.ByteString getAllowedPersistenceRegionsBytes(int inde
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -595,12 +586,11 @@ public Builder setAllowedPersistenceRegions(int index, java.lang.String value) {
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -618,12 +608,11 @@ public Builder addAllowedPersistenceRegions(java.lang.String value) {
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -638,12 +627,11 @@ public Builder addAllAllowedPersistenceRegions(java.lang.Iterable<java.lang.Stri
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -658,12 +646,11 @@ public Builder clearAllowedPersistenceRegions() {
      *
      *
      * <pre>
-     * The list of GCP region IDs where messages that are published to the topic
+     * A list of IDs of GCP regions where messages that are published to the topic
      * may be persisted in storage. Messages published by publishers running in
      * non-allowed GCP regions (or running outside of GCP altogether) will be
-     * routed for storage in one of the allowed regions. An empty list indicates a
-     * misconfiguration at the project or organization level, which will result in
-     * all Publish operations failing.
+     * routed for storage in one of the allowed regions. An empty list means that
+     * no regions are allowed, and is not a valid configuration.
      * </pre>
      *
      * <code>repeated string allowed_persistence_regions = 1;</code>
diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicyOrBuilder.java b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicyOrBuilder.java
index ebc0d1454b41..5810070c1669 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicyOrBuilder.java
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/MessageStoragePolicyOrBuilder.java
@@ -12,12 +12,11 @@ public interface MessageStoragePolicyOrBuilder
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -27,12 +26,11 @@ public interface MessageStoragePolicyOrBuilder
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -42,12 +40,11 @@ public interface MessageStoragePolicyOrBuilder
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
@@ -57,12 +54,11 @@ public interface MessageStoragePolicyOrBuilder
    *
    *
    * <pre>
-   * The list of GCP region IDs where messages that are published to the topic
+   * A list of IDs of GCP regions where messages that are published to the topic
    * may be persisted in storage. Messages published by publishers running in
    * non-allowed GCP regions (or running outside of GCP altogether) will be
-   * routed for storage in one of the allowed regions. An empty list indicates a
-   * misconfiguration at the project or organization level, which will result in
-   * all Publish operations failing.
+   * routed for storage in one of the allowed regions. An empty list means that
+   * no regions are allowed, and is not a valid configuration.
    * </pre>
    *
    * <code>repeated string allowed_persistence_regions = 1;</code>
diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java
index fa9dbb52c7c9..398ed83c1b57 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java
@@ -207,204 +207,210 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
     java.lang.String[] descriptorData = {
       "\n\035google/pubsub/v1/pubsub.proto\022\020google."
           + "pubsub.v1\032\034google/api/annotations.proto\032"
-          + "\031google/api/resource.proto\032\036google/proto"
-          + "buf/duration.proto\032\033google/protobuf/empt"
-          + "y.proto\032 google/protobuf/field_mask.prot"
-          + "o\032\037google/protobuf/timestamp.proto\";\n\024Me"
-          + "ssageStoragePolicy\022#\n\033allowed_persistenc"
-          + "e_regions\030\001 \003(\t\"\327\001\n\005Topic\022\014\n\004name\030\001 \001(\t\022"
-          + "3\n\006labels\030\002 \003(\0132#.google.pubsub.v1.Topic"
-          + ".LabelsEntry\022F\n\026message_storage_policy\030\003"
-          + " \001(\0132&.google.pubsub.v1.MessageStoragePo"
-          + "licy\022\024\n\014kms_key_name\030\005 \001(\t\032-\n\013LabelsEntr"
-          + "y\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\361\001\n\rPu"
-          + "bsubMessage\022\014\n\004data\030\001 \001(\014\022C\n\nattributes\030"
-          + "\002 \003(\0132/.google.pubsub.v1.PubsubMessage.A"
-          + "ttributesEntry\022\022\n\nmessage_id\030\003 \001(\t\0220\n\014pu"
-          + "blish_time\030\004 \001(\0132\032.google.protobuf.Times"
-          + "tamp\022\024\n\014ordering_key\030\005 \001(\t\0321\n\017Attributes"
-          + "Entry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\" \n"
-          + "\017GetTopicRequest\022\r\n\005topic\030\001 \001(\t\"m\n\022Updat"
-          + "eTopicRequest\022&\n\005topic\030\001 \001(\0132\027.google.pu"
-          + "bsub.v1.Topic\022/\n\013update_mask\030\002 \001(\0132\032.goo"
-          + "gle.protobuf.FieldMask\"R\n\016PublishRequest"
-          + "\022\r\n\005topic\030\001 \001(\t\0221\n\010messages\030\002 \003(\0132\037.goog"
-          + "le.pubsub.v1.PubsubMessage\"&\n\017PublishRes"
-          + "ponse\022\023\n\013message_ids\030\001 \003(\t\"K\n\021ListTopics"
-          + "Request\022\017\n\007project\030\001 \001(\t\022\021\n\tpage_size\030\002 "
-          + "\001(\005\022\022\n\npage_token\030\003 \001(\t\"V\n\022ListTopicsRes"
-          + "ponse\022\'\n\006topics\030\001 \003(\0132\027.google.pubsub.v1"
-          + ".Topic\022\027\n\017next_page_token\030\002 \001(\t\"U\n\035ListT"
-          + "opicSubscriptionsRequest\022\r\n\005topic\030\001 \001(\t\022"
-          + "\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t\"P"
-          + "\n\036ListTopicSubscriptionsResponse\022\025\n\rsubs"
-          + "criptions\030\001 \003(\t\022\027\n\017next_page_token\030\002 \001(\t"
-          + "\"Q\n\031ListTopicSnapshotsRequest\022\r\n\005topic\030\001"
-          + " \001(\t\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 "
-          + "\001(\t\"H\n\032ListTopicSnapshotsResponse\022\021\n\tsna"
-          + "pshots\030\001 \003(\t\022\027\n\017next_page_token\030\002 \001(\t\"#\n"
-          + "\022DeleteTopicRequest\022\r\n\005topic\030\001 \001(\t\"\245\003\n\014S"
-          + "ubscription\022\014\n\004name\030\001 \001(\t\022\r\n\005topic\030\002 \001(\t"
-          + "\0221\n\013push_config\030\004 \001(\0132\034.google.pubsub.v1"
-          + ".PushConfig\022\034\n\024ack_deadline_seconds\030\005 \001("
-          + "\005\022\035\n\025retain_acked_messages\030\007 \001(\010\022=\n\032mess"
-          + "age_retention_duration\030\010 \001(\0132\031.google.pr"
-          + "otobuf.Duration\022:\n\006labels\030\t \003(\0132*.google"
-          + ".pubsub.v1.Subscription.LabelsEntry\022\037\n\027e"
-          + "nable_message_ordering\030\n \001(\010\022=\n\021expirati"
-          + "on_policy\030\013 \001(\0132\".google.pubsub.v1.Expir"
-          + "ationPolicy\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022"
-          + "\r\n\005value\030\002 \001(\t:\0028\001\":\n\020ExpirationPolicy\022&"
-          + "\n\003ttl\030\001 \001(\0132\031.google.protobuf.Duration\"\255"
-          + "\002\n\nPushConfig\022\025\n\rpush_endpoint\030\001 \001(\t\022@\n\n"
-          + "attributes\030\002 \003(\0132,.google.pubsub.v1.Push"
-          + "Config.AttributesEntry\022<\n\noidc_token\030\003 \001"
-          + "(\0132&.google.pubsub.v1.PushConfig.OidcTok"
-          + "enH\000\032<\n\tOidcToken\022\035\n\025service_account_ema"
-          + "il\030\001 \001(\t\022\020\n\010audience\030\002 \001(\t\0321\n\017Attributes"
-          + "Entry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B\027\n"
-          + "\025authentication_method\"S\n\017ReceivedMessag"
-          + "e\022\016\n\006ack_id\030\001 \001(\t\0220\n\007message\030\002 \001(\0132\037.goo"
-          + "gle.pubsub.v1.PubsubMessage\".\n\026GetSubscr"
-          + "iptionRequest\022\024\n\014subscription\030\001 \001(\t\"\202\001\n\031"
-          + "UpdateSubscriptionRequest\0224\n\014subscriptio"
-          + "n\030\001 \001(\0132\036.google.pubsub.v1.Subscription\022"
-          + "/\n\013update_mask\030\002 \001(\0132\032.google.protobuf.F"
-          + "ieldMask\"R\n\030ListSubscriptionsRequest\022\017\n\007"
-          + "project\030\001 \001(\t\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage"
-          + "_token\030\003 \001(\t\"k\n\031ListSubscriptionsRespons"
-          + "e\0225\n\rsubscriptions\030\001 \003(\0132\036.google.pubsub"
-          + ".v1.Subscription\022\027\n\017next_page_token\030\002 \001("
-          + "\t\"1\n\031DeleteSubscriptionRequest\022\024\n\014subscr"
-          + "iption\030\001 \001(\t\"b\n\027ModifyPushConfigRequest\022"
-          + "\024\n\014subscription\030\001 \001(\t\0221\n\013push_config\030\002 \001"
-          + "(\0132\034.google.pubsub.v1.PushConfig\"U\n\013Pull"
-          + "Request\022\024\n\014subscription\030\001 \001(\t\022\032\n\022return_"
-          + "immediately\030\002 \001(\010\022\024\n\014max_messages\030\003 \001(\005\""
-          + "L\n\014PullResponse\022<\n\021received_messages\030\001 \003"
-          + "(\0132!.google.pubsub.v1.ReceivedMessage\"_\n"
-          + "\030ModifyAckDeadlineRequest\022\024\n\014subscriptio"
-          + "n\030\001 \001(\t\022\017\n\007ack_ids\030\004 \003(\t\022\034\n\024ack_deadline"
-          + "_seconds\030\003 \001(\005\";\n\022AcknowledgeRequest\022\024\n\014"
-          + "subscription\030\001 \001(\t\022\017\n\007ack_ids\030\002 \003(\t\"\244\001\n\024"
-          + "StreamingPullRequest\022\024\n\014subscription\030\001 \001"
-          + "(\t\022\017\n\007ack_ids\030\002 \003(\t\022\037\n\027modify_deadline_s"
-          + "econds\030\003 \003(\005\022\037\n\027modify_deadline_ack_ids\030"
-          + "\004 \003(\t\022#\n\033stream_ack_deadline_seconds\030\005 \001"
-          + "(\005\"U\n\025StreamingPullResponse\022<\n\021received_"
-          + "messages\030\001 \003(\0132!.google.pubsub.v1.Receiv"
-          + "edMessage\"\257\001\n\025CreateSnapshotRequest\022\014\n\004n"
-          + "ame\030\001 \001(\t\022\024\n\014subscription\030\002 \001(\t\022C\n\006label"
-          + "s\030\003 \003(\01323.google.pubsub.v1.CreateSnapsho"
-          + "tRequest.LabelsEntry\032-\n\013LabelsEntry\022\013\n\003k"
-          + "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"v\n\025UpdateSna"
-          + "pshotRequest\022,\n\010snapshot\030\001 \001(\0132\032.google."
-          + "pubsub.v1.Snapshot\022/\n\013update_mask\030\002 \001(\0132"
-          + "\032.google.protobuf.FieldMask\"\277\001\n\010Snapshot"
-          + "\022\014\n\004name\030\001 \001(\t\022\r\n\005topic\030\002 \001(\t\022/\n\013expire_"
-          + "time\030\003 \001(\0132\032.google.protobuf.Timestamp\0226"
-          + "\n\006labels\030\004 \003(\0132&.google.pubsub.v1.Snapsh"
-          + "ot.LabelsEntry\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001"
-          + "(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"&\n\022GetSnapshotRequ"
-          + "est\022\020\n\010snapshot\030\001 \001(\t\"N\n\024ListSnapshotsRe"
+          + "\027google/api/client.proto\032\036google/protobu"
+          + "f/duration.proto\032\033google/protobuf/empty."
+          + "proto\032 google/protobuf/field_mask.proto\032"
+          + "\037google/protobuf/timestamp.proto\";\n\024Mess"
+          + "ageStoragePolicy\022#\n\033allowed_persistence_"
+          + "regions\030\001 \003(\t\"\327\001\n\005Topic\022\014\n\004name\030\001 \001(\t\0223\n"
+          + "\006labels\030\002 \003(\0132#.google.pubsub.v1.Topic.L"
+          + "abelsEntry\022F\n\026message_storage_policy\030\003 \001"
+          + "(\0132&.google.pubsub.v1.MessageStoragePoli"
+          + "cy\022\024\n\014kms_key_name\030\005 \001(\t\032-\n\013LabelsEntry\022"
+          + "\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\361\001\n\rPubs"
+          + "ubMessage\022\014\n\004data\030\001 \001(\014\022C\n\nattributes\030\002 "
+          + "\003(\0132/.google.pubsub.v1.PubsubMessage.Att"
+          + "ributesEntry\022\022\n\nmessage_id\030\003 \001(\t\0220\n\014publ"
+          + "ish_time\030\004 \001(\0132\032.google.protobuf.Timesta"
+          + "mp\022\024\n\014ordering_key\030\005 \001(\t\0321\n\017AttributesEn"
+          + "try\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\" \n\017G"
+          + "etTopicRequest\022\r\n\005topic\030\001 \001(\t\"m\n\022UpdateT"
+          + "opicRequest\022&\n\005topic\030\001 \001(\0132\027.google.pubs"
+          + "ub.v1.Topic\022/\n\013update_mask\030\002 \001(\0132\032.googl"
+          + "e.protobuf.FieldMask\"R\n\016PublishRequest\022\r"
+          + "\n\005topic\030\001 \001(\t\0221\n\010messages\030\002 \003(\0132\037.google"
+          + ".pubsub.v1.PubsubMessage\"&\n\017PublishRespo"
+          + "nse\022\023\n\013message_ids\030\001 \003(\t\"K\n\021ListTopicsRe"
           + "quest\022\017\n\007project\030\001 \001(\t\022\021\n\tpage_size\030\002 \001("
-          + "\005\022\022\n\npage_token\030\003 \001(\t\"_\n\025ListSnapshotsRe"
-          + "sponse\022-\n\tsnapshots\030\001 \003(\0132\032.google.pubsu"
-          + "b.v1.Snapshot\022\027\n\017next_page_token\030\002 \001(\t\")"
-          + "\n\025DeleteSnapshotRequest\022\020\n\010snapshot\030\001 \001("
-          + "\t\"m\n\013SeekRequest\022\024\n\014subscription\030\001 \001(\t\022*"
-          + "\n\004time\030\002 \001(\0132\032.google.protobuf.Timestamp"
-          + "H\000\022\022\n\010snapshot\030\003 \001(\tH\000B\010\n\006target\"\016\n\014Seek"
-          + "Response2\277\010\n\tPublisher\022j\n\013CreateTopic\022\027."
-          + "google.pubsub.v1.Topic\032\027.google.pubsub.v"
-          + "1.Topic\")\202\323\344\223\002#\032\036/v1/{name=projects/*/to"
-          + "pics/*}:\001*\022}\n\013UpdateTopic\022$.google.pubsu"
-          + "b.v1.UpdateTopicRequest\032\027.google.pubsub."
-          + "v1.Topic\"/\202\323\344\223\002)2$/v1/{topic.name=projec"
-          + "ts/*/topics/*}:\001*\022\202\001\n\007Publish\022 .google.p"
-          + "ubsub.v1.PublishRequest\032!.google.pubsub."
-          + "v1.PublishResponse\"2\202\323\344\223\002,\"\'/v1/{topic=p"
-          + "rojects/*/topics/*}:publish:\001*\022o\n\010GetTop"
-          + "ic\022!.google.pubsub.v1.GetTopicRequest\032\027."
-          + "google.pubsub.v1.Topic\"\'\202\323\344\223\002!\022\037/v1/{top"
-          + "ic=projects/*/topics/*}\022\200\001\n\nListTopics\022#"
-          + ".google.pubsub.v1.ListTopicsRequest\032$.go"
-          + "ogle.pubsub.v1.ListTopicsResponse\"\'\202\323\344\223\002"
-          + "!\022\037/v1/{project=projects/*}/topics\022\262\001\n\026L"
-          + "istTopicSubscriptions\022/.google.pubsub.v1"
-          + ".ListTopicSubscriptionsRequest\0320.google."
-          + "pubsub.v1.ListTopicSubscriptionsResponse"
-          + "\"5\202\323\344\223\002/\022-/v1/{topic=projects/*/topics/*"
-          + "}/subscriptions\022\242\001\n\022ListTopicSnapshots\022+"
-          + ".google.pubsub.v1.ListTopicSnapshotsRequ"
-          + "est\032,.google.pubsub.v1.ListTopicSnapshot"
-          + "sResponse\"1\202\323\344\223\002+\022)/v1/{topic=projects/*"
-          + "/topics/*}/snapshots\022t\n\013DeleteTopic\022$.go"
-          + "ogle.pubsub.v1.DeleteTopicRequest\032\026.goog"
-          + "le.protobuf.Empty\"\'\202\323\344\223\002!*\037/v1/{topic=pr"
-          + "ojects/*/topics/*}2\371\021\n\nSubscriber\022\206\001\n\022Cr"
-          + "eateSubscription\022\036.google.pubsub.v1.Subs"
-          + "cription\032\036.google.pubsub.v1.Subscription"
-          + "\"0\202\323\344\223\002*\032%/v1/{name=projects/*/subscript"
-          + "ions/*}:\001*\022\222\001\n\017GetSubscription\022(.google."
-          + "pubsub.v1.GetSubscriptionRequest\032\036.googl"
-          + "e.pubsub.v1.Subscription\"5\202\323\344\223\002/\022-/v1/{s"
-          + "ubscription=projects/*/subscriptions/*}\022"
-          + "\240\001\n\022UpdateSubscription\022+.google.pubsub.v"
-          + "1.UpdateSubscriptionRequest\032\036.google.pub"
-          + "sub.v1.Subscription\"=\202\323\344\223\002722/v1/{subscr"
-          + "iption.name=projects/*/subscriptions/*}:"
-          + "\001*\022\234\001\n\021ListSubscriptions\022*.google.pubsub"
-          + ".v1.ListSubscriptionsRequest\032+.google.pu"
-          + "bsub.v1.ListSubscriptionsResponse\".\202\323\344\223\002"
-          + "(\022&/v1/{project=projects/*}/subscription"
-          + "s\022\220\001\n\022DeleteSubscription\022+.google.pubsub"
-          + ".v1.DeleteSubscriptionRequest\032\026.google.p"
-          + "rotobuf.Empty\"5\202\323\344\223\002/*-/v1/{subscription"
-          + "=projects/*/subscriptions/*}\022\243\001\n\021ModifyA"
-          + "ckDeadline\022*.google.pubsub.v1.ModifyAckD"
-          + "eadlineRequest\032\026.google.protobuf.Empty\"J"
-          + "\202\323\344\223\002D\"?/v1/{subscription=projects/*/sub"
-          + "scriptions/*}:modifyAckDeadline:\001*\022\221\001\n\013A"
-          + "cknowledge\022$.google.pubsub.v1.Acknowledg"
-          + "eRequest\032\026.google.protobuf.Empty\"D\202\323\344\223\002>"
-          + "\"9/v1/{subscription=projects/*/subscript"
-          + "ions/*}:acknowledge:\001*\022\204\001\n\004Pull\022\035.google"
-          + ".pubsub.v1.PullRequest\032\036.google.pubsub.v"
-          + "1.PullResponse\"=\202\323\344\223\0027\"2/v1/{subscriptio"
-          + "n=projects/*/subscriptions/*}:pull:\001*\022f\n"
-          + "\rStreamingPull\022&.google.pubsub.v1.Stream"
-          + "ingPullRequest\032\'.google.pubsub.v1.Stream"
-          + "ingPullResponse\"\000(\0010\001\022\240\001\n\020ModifyPushConf"
-          + "ig\022).google.pubsub.v1.ModifyPushConfigRe"
-          + "quest\032\026.google.protobuf.Empty\"I\202\323\344\223\002C\">/"
-          + "v1/{subscription=projects/*/subscription"
-          + "s/*}:modifyPushConfig:\001*\022~\n\013GetSnapshot\022"
-          + "$.google.pubsub.v1.GetSnapshotRequest\032\032."
-          + "google.pubsub.v1.Snapshot\"-\202\323\344\223\002\'\022%/v1/{"
-          + "snapshot=projects/*/snapshots/*}\022\214\001\n\rLis"
-          + "tSnapshots\022&.google.pubsub.v1.ListSnapsh"
-          + "otsRequest\032\'.google.pubsub.v1.ListSnapsh"
-          + "otsResponse\"*\202\323\344\223\002$\022\"/v1/{project=projec"
-          + "ts/*}/snapshots\022\203\001\n\016CreateSnapshot\022\'.goo"
-          + "gle.pubsub.v1.CreateSnapshotRequest\032\032.go"
-          + "ogle.pubsub.v1.Snapshot\",\202\323\344\223\002&\032!/v1/{na"
-          + "me=projects/*/snapshots/*}:\001*\022\214\001\n\016Update"
-          + "Snapshot\022\'.google.pubsub.v1.UpdateSnapsh"
-          + "otRequest\032\032.google.pubsub.v1.Snapshot\"5\202"
-          + "\323\344\223\002/2*/v1/{snapshot.name=projects/*/sna"
-          + "pshots/*}:\001*\022\200\001\n\016DeleteSnapshot\022\'.google"
-          + ".pubsub.v1.DeleteSnapshotRequest\032\026.googl"
-          + "e.protobuf.Empty\"-\202\323\344\223\002\'*%/v1/{snapshot="
-          + "projects/*/snapshots/*}\022\204\001\n\004Seek\022\035.googl"
-          + "e.pubsub.v1.SeekRequest\032\036.google.pubsub."
-          + "v1.SeekResponse\"=\202\323\344\223\0027\"2/v1/{subscripti"
-          + "on=projects/*/subscriptions/*}:seek:\001*B\256"
-          + "\001\n\024com.google.pubsub.v1B\013PubsubProtoP\001Z6"
-          + "google.golang.org/genproto/googleapis/pu"
-          + "bsub/v1;pubsub\370\001\001\252\002\026Google.Cloud.PubSub."
-          + "V1\312\002\026Google\\Cloud\\PubSub\\V1\352\002\031Google::Cl"
-          + "oud::PubSub::V1b\006proto3"
+          + "\005\022\022\n\npage_token\030\003 \001(\t\"V\n\022ListTopicsRespo"
+          + "nse\022\'\n\006topics\030\001 \003(\0132\027.google.pubsub.v1.T"
+          + "opic\022\027\n\017next_page_token\030\002 \001(\t\"U\n\035ListTop"
+          + "icSubscriptionsRequest\022\r\n\005topic\030\001 \001(\t\022\021\n"
+          + "\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t\"P\n\036"
+          + "ListTopicSubscriptionsResponse\022\025\n\rsubscr"
+          + "iptions\030\001 \003(\t\022\027\n\017next_page_token\030\002 \001(\t\"Q"
+          + "\n\031ListTopicSnapshotsRequest\022\r\n\005topic\030\001 \001"
+          + "(\t\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 \001("
+          + "\t\"H\n\032ListTopicSnapshotsResponse\022\021\n\tsnaps"
+          + "hots\030\001 \003(\t\022\027\n\017next_page_token\030\002 \001(\t\"#\n\022D"
+          + "eleteTopicRequest\022\r\n\005topic\030\001 \001(\t\"\245\003\n\014Sub"
+          + "scription\022\014\n\004name\030\001 \001(\t\022\r\n\005topic\030\002 \001(\t\0221"
+          + "\n\013push_config\030\004 \001(\0132\034.google.pubsub.v1.P"
+          + "ushConfig\022\034\n\024ack_deadline_seconds\030\005 \001(\005\022"
+          + "\035\n\025retain_acked_messages\030\007 \001(\010\022=\n\032messag"
+          + "e_retention_duration\030\010 \001(\0132\031.google.prot"
+          + "obuf.Duration\022:\n\006labels\030\t \003(\0132*.google.p"
+          + "ubsub.v1.Subscription.LabelsEntry\022\037\n\027ena"
+          + "ble_message_ordering\030\n \001(\010\022=\n\021expiration"
+          + "_policy\030\013 \001(\0132\".google.pubsub.v1.Expirat"
+          + "ionPolicy\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n"
+          + "\005value\030\002 \001(\t:\0028\001\":\n\020ExpirationPolicy\022&\n\003"
+          + "ttl\030\001 \001(\0132\031.google.protobuf.Duration\"\255\002\n"
+          + "\nPushConfig\022\025\n\rpush_endpoint\030\001 \001(\t\022@\n\nat"
+          + "tributes\030\002 \003(\0132,.google.pubsub.v1.PushCo"
+          + "nfig.AttributesEntry\022<\n\noidc_token\030\003 \001(\013"
+          + "2&.google.pubsub.v1.PushConfig.OidcToken"
+          + "H\000\032<\n\tOidcToken\022\035\n\025service_account_email"
+          + "\030\001 \001(\t\022\020\n\010audience\030\002 \001(\t\0321\n\017AttributesEn"
+          + "try\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B\027\n\025a"
+          + "uthentication_method\"S\n\017ReceivedMessage\022"
+          + "\016\n\006ack_id\030\001 \001(\t\0220\n\007message\030\002 \001(\0132\037.googl"
+          + "e.pubsub.v1.PubsubMessage\".\n\026GetSubscrip"
+          + "tionRequest\022\024\n\014subscription\030\001 \001(\t\"\202\001\n\031Up"
+          + "dateSubscriptionRequest\0224\n\014subscription\030"
+          + "\001 \001(\0132\036.google.pubsub.v1.Subscription\022/\n"
+          + "\013update_mask\030\002 \001(\0132\032.google.protobuf.Fie"
+          + "ldMask\"R\n\030ListSubscriptionsRequest\022\017\n\007pr"
+          + "oject\030\001 \001(\t\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_t"
+          + "oken\030\003 \001(\t\"k\n\031ListSubscriptionsResponse\022"
+          + "5\n\rsubscriptions\030\001 \003(\0132\036.google.pubsub.v"
+          + "1.Subscription\022\027\n\017next_page_token\030\002 \001(\t\""
+          + "1\n\031DeleteSubscriptionRequest\022\024\n\014subscrip"
+          + "tion\030\001 \001(\t\"b\n\027ModifyPushConfigRequest\022\024\n"
+          + "\014subscription\030\001 \001(\t\0221\n\013push_config\030\002 \001(\013"
+          + "2\034.google.pubsub.v1.PushConfig\"U\n\013PullRe"
+          + "quest\022\024\n\014subscription\030\001 \001(\t\022\032\n\022return_im"
+          + "mediately\030\002 \001(\010\022\024\n\014max_messages\030\003 \001(\005\"L\n"
+          + "\014PullResponse\022<\n\021received_messages\030\001 \003(\013"
+          + "2!.google.pubsub.v1.ReceivedMessage\"_\n\030M"
+          + "odifyAckDeadlineRequest\022\024\n\014subscription\030"
+          + "\001 \001(\t\022\017\n\007ack_ids\030\004 \003(\t\022\034\n\024ack_deadline_s"
+          + "econds\030\003 \001(\005\";\n\022AcknowledgeRequest\022\024\n\014su"
+          + "bscription\030\001 \001(\t\022\017\n\007ack_ids\030\002 \003(\t\"\244\001\n\024St"
+          + "reamingPullRequest\022\024\n\014subscription\030\001 \001(\t"
+          + "\022\017\n\007ack_ids\030\002 \003(\t\022\037\n\027modify_deadline_sec"
+          + "onds\030\003 \003(\005\022\037\n\027modify_deadline_ack_ids\030\004 "
+          + "\003(\t\022#\n\033stream_ack_deadline_seconds\030\005 \001(\005"
+          + "\"U\n\025StreamingPullResponse\022<\n\021received_me"
+          + "ssages\030\001 \003(\0132!.google.pubsub.v1.Received"
+          + "Message\"\257\001\n\025CreateSnapshotRequest\022\014\n\004nam"
+          + "e\030\001 \001(\t\022\024\n\014subscription\030\002 \001(\t\022C\n\006labels\030"
+          + "\003 \003(\01323.google.pubsub.v1.CreateSnapshotR"
+          + "equest.LabelsEntry\032-\n\013LabelsEntry\022\013\n\003key"
+          + "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"v\n\025UpdateSnaps"
+          + "hotRequest\022,\n\010snapshot\030\001 \001(\0132\032.google.pu"
+          + "bsub.v1.Snapshot\022/\n\013update_mask\030\002 \001(\0132\032."
+          + "google.protobuf.FieldMask\"\277\001\n\010Snapshot\022\014"
+          + "\n\004name\030\001 \001(\t\022\r\n\005topic\030\002 \001(\t\022/\n\013expire_ti"
+          + "me\030\003 \001(\0132\032.google.protobuf.Timestamp\0226\n\006"
+          + "labels\030\004 \003(\0132&.google.pubsub.v1.Snapshot"
+          + ".LabelsEntry\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t"
+          + "\022\r\n\005value\030\002 \001(\t:\0028\001\"&\n\022GetSnapshotReques"
+          + "t\022\020\n\010snapshot\030\001 \001(\t\"N\n\024ListSnapshotsRequ"
+          + "est\022\017\n\007project\030\001 \001(\t\022\021\n\tpage_size\030\002 \001(\005\022"
+          + "\022\n\npage_token\030\003 \001(\t\"_\n\025ListSnapshotsResp"
+          + "onse\022-\n\tsnapshots\030\001 \003(\0132\032.google.pubsub."
+          + "v1.Snapshot\022\027\n\017next_page_token\030\002 \001(\t\")\n\025"
+          + "DeleteSnapshotRequest\022\020\n\010snapshot\030\001 \001(\t\""
+          + "m\n\013SeekRequest\022\024\n\014subscription\030\001 \001(\t\022*\n\004"
+          + "time\030\002 \001(\0132\032.google.protobuf.TimestampH\000"
+          + "\022\022\n\010snapshot\030\003 \001(\tH\000B\010\n\006target\"\016\n\014SeekRe"
+          + "sponse2\261\t\n\tPublisher\022j\n\013CreateTopic\022\027.go"
+          + "ogle.pubsub.v1.Topic\032\027.google.pubsub.v1."
+          + "Topic\")\202\323\344\223\002#\032\036/v1/{name=projects/*/topi"
+          + "cs/*}:\001*\022}\n\013UpdateTopic\022$.google.pubsub."
+          + "v1.UpdateTopicRequest\032\027.google.pubsub.v1"
+          + ".Topic\"/\202\323\344\223\002)2$/v1/{topic.name=projects"
+          + "/*/topics/*}:\001*\022\202\001\n\007Publish\022 .google.pub"
+          + "sub.v1.PublishRequest\032!.google.pubsub.v1"
+          + ".PublishResponse\"2\202\323\344\223\002,\"\'/v1/{topic=pro"
+          + "jects/*/topics/*}:publish:\001*\022o\n\010GetTopic"
+          + "\022!.google.pubsub.v1.GetTopicRequest\032\027.go"
+          + "ogle.pubsub.v1.Topic\"\'\202\323\344\223\002!\022\037/v1/{topic"
+          + "=projects/*/topics/*}\022\200\001\n\nListTopics\022#.g"
+          + "oogle.pubsub.v1.ListTopicsRequest\032$.goog"
+          + "le.pubsub.v1.ListTopicsResponse\"\'\202\323\344\223\002!\022"
+          + "\037/v1/{project=projects/*}/topics\022\262\001\n\026Lis"
+          + "tTopicSubscriptions\022/.google.pubsub.v1.L"
+          + "istTopicSubscriptionsRequest\0320.google.pu"
+          + "bsub.v1.ListTopicSubscriptionsResponse\"5"
+          + "\202\323\344\223\002/\022-/v1/{topic=projects/*/topics/*}/"
+          + "subscriptions\022\242\001\n\022ListTopicSnapshots\022+.g"
+          + "oogle.pubsub.v1.ListTopicSnapshotsReques"
+          + "t\032,.google.pubsub.v1.ListTopicSnapshotsR"
+          + "esponse\"1\202\323\344\223\002+\022)/v1/{topic=projects/*/t"
+          + "opics/*}/snapshots\022t\n\013DeleteTopic\022$.goog"
+          + "le.pubsub.v1.DeleteTopicRequest\032\026.google"
+          + ".protobuf.Empty\"\'\202\323\344\223\002!*\037/v1/{topic=proj"
+          + "ects/*/topics/*}\032p\312A\025pubsub.googleapis.c"
+          + "om\322AUhttps://www.googleapis.com/auth/clo"
+          + "ud-platform,https://www.googleapis.com/a"
+          + "uth/pubsub2\353\022\n\nSubscriber\022\206\001\n\022CreateSubs"
+          + "cription\022\036.google.pubsub.v1.Subscription"
+          + "\032\036.google.pubsub.v1.Subscription\"0\202\323\344\223\002*"
+          + "\032%/v1/{name=projects/*/subscriptions/*}:"
+          + "\001*\022\222\001\n\017GetSubscription\022(.google.pubsub.v"
+          + "1.GetSubscriptionRequest\032\036.google.pubsub"
+          + ".v1.Subscription\"5\202\323\344\223\002/\022-/v1/{subscript"
+          + "ion=projects/*/subscriptions/*}\022\240\001\n\022Upda"
+          + "teSubscription\022+.google.pubsub.v1.Update"
+          + "SubscriptionRequest\032\036.google.pubsub.v1.S"
+          + "ubscription\"=\202\323\344\223\002722/v1/{subscription.n"
+          + "ame=projects/*/subscriptions/*}:\001*\022\234\001\n\021L"
+          + "istSubscriptions\022*.google.pubsub.v1.List"
+          + "SubscriptionsRequest\032+.google.pubsub.v1."
+          + "ListSubscriptionsResponse\".\202\323\344\223\002(\022&/v1/{"
+          + "project=projects/*}/subscriptions\022\220\001\n\022De"
+          + "leteSubscription\022+.google.pubsub.v1.Dele"
+          + "teSubscriptionRequest\032\026.google.protobuf."
+          + "Empty\"5\202\323\344\223\002/*-/v1/{subscription=project"
+          + "s/*/subscriptions/*}\022\243\001\n\021ModifyAckDeadli"
+          + "ne\022*.google.pubsub.v1.ModifyAckDeadlineR"
+          + "equest\032\026.google.protobuf.Empty\"J\202\323\344\223\002D\"?"
+          + "/v1/{subscription=projects/*/subscriptio"
+          + "ns/*}:modifyAckDeadline:\001*\022\221\001\n\013Acknowled"
+          + "ge\022$.google.pubsub.v1.AcknowledgeRequest"
+          + "\032\026.google.protobuf.Empty\"D\202\323\344\223\002>\"9/v1/{s"
+          + "ubscription=projects/*/subscriptions/*}:"
+          + "acknowledge:\001*\022\204\001\n\004Pull\022\035.google.pubsub."
+          + "v1.PullRequest\032\036.google.pubsub.v1.PullRe"
+          + "sponse\"=\202\323\344\223\0027\"2/v1/{subscription=projec"
+          + "ts/*/subscriptions/*}:pull:\001*\022f\n\rStreami"
+          + "ngPull\022&.google.pubsub.v1.StreamingPullR"
+          + "equest\032\'.google.pubsub.v1.StreamingPullR"
+          + "esponse\"\000(\0010\001\022\240\001\n\020ModifyPushConfig\022).goo"
+          + "gle.pubsub.v1.ModifyPushConfigRequest\032\026."
+          + "google.protobuf.Empty\"I\202\323\344\223\002C\">/v1/{subs"
+          + "cription=projects/*/subscriptions/*}:mod"
+          + "ifyPushConfig:\001*\022~\n\013GetSnapshot\022$.google"
+          + ".pubsub.v1.GetSnapshotRequest\032\032.google.p"
+          + "ubsub.v1.Snapshot\"-\202\323\344\223\002\'\022%/v1/{snapshot"
+          + "=projects/*/snapshots/*}\022\214\001\n\rListSnapsho"
+          + "ts\022&.google.pubsub.v1.ListSnapshotsReque"
+          + "st\032\'.google.pubsub.v1.ListSnapshotsRespo"
+          + "nse\"*\202\323\344\223\002$\022\"/v1/{project=projects/*}/sn"
+          + "apshots\022\203\001\n\016CreateSnapshot\022\'.google.pubs"
+          + "ub.v1.CreateSnapshotRequest\032\032.google.pub"
+          + "sub.v1.Snapshot\",\202\323\344\223\002&\032!/v1/{name=proje"
+          + "cts/*/snapshots/*}:\001*\022\214\001\n\016UpdateSnapshot"
+          + "\022\'.google.pubsub.v1.UpdateSnapshotReques"
+          + "t\032\032.google.pubsub.v1.Snapshot\"5\202\323\344\223\002/2*/"
+          + "v1/{snapshot.name=projects/*/snapshots/*"
+          + "}:\001*\022\200\001\n\016DeleteSnapshot\022\'.google.pubsub."
+          + "v1.DeleteSnapshotRequest\032\026.google.protob"
+          + "uf.Empty\"-\202\323\344\223\002\'*%/v1/{snapshot=projects"
+          + "/*/snapshots/*}\022\204\001\n\004Seek\022\035.google.pubsub"
+          + ".v1.SeekRequest\032\036.google.pubsub.v1.SeekR"
+          + "esponse\"=\202\323\344\223\0027\"2/v1/{subscription=proje"
+          + "cts/*/subscriptions/*}:seek:\001*\032p\312A\025pubsu"
+          + "b.googleapis.com\322AUhttps://www.googleapi"
+          + "s.com/auth/cloud-platform,https://www.go"
+          + "ogleapis.com/auth/pubsubB\256\001\n\024com.google."
+          + "pubsub.v1B\013PubsubProtoP\001Z6google.golang."
+          + "org/genproto/googleapis/pubsub/v1;pubsub"
+          + "\370\001\001\252\002\026Google.Cloud.PubSub.V1\312\002\026Google\\Cl"
+          + "oud\\PubSub\\V1\352\002\031Google::Cloud::PubSub::V"
+          + "1b\006proto3"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
         new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -418,7 +424,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors(
         descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
           com.google.api.AnnotationsProto.getDescriptor(),
-          com.google.api.ResourceProto.getDescriptor(),
+          com.google.api.ClientProto.getDescriptor(),
           com.google.protobuf.DurationProto.getDescriptor(),
           com.google.protobuf.EmptyProto.getDescriptor(),
           com.google.protobuf.FieldMaskProto.getDescriptor(),
@@ -803,11 +809,13 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors(
             internal_static_google_pubsub_v1_SeekResponse_descriptor, new java.lang.String[] {});
     com.google.protobuf.ExtensionRegistry registry =
         com.google.protobuf.ExtensionRegistry.newInstance();
+    registry.add(com.google.api.ClientProto.defaultHost);
     registry.add(com.google.api.AnnotationsProto.http);
+    registry.add(com.google.api.ClientProto.oauthScopes);
     com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor(
         descriptor, registry);
     com.google.api.AnnotationsProto.getDescriptor();
-    com.google.api.ResourceProto.getDescriptor();
+    com.google.api.ClientProto.getDescriptor();
     com.google.protobuf.DurationProto.getDescriptor();
     com.google.protobuf.EmptyProto.getDescriptor();
     com.google.protobuf.FieldMaskProto.getDescriptor();
diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfig.java b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfig.java
index eb35bcd1fe94..28ee321bf8d8 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfig.java
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfig.java
@@ -1135,22 +1135,22 @@ public int getAttributesCount() {
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1170,22 +1170,22 @@ public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1197,22 +1197,22 @@ public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1229,22 +1229,22 @@ public java.lang.String getAttributesOrDefault(
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1855,22 +1855,22 @@ public int getAttributesCount() {
      *
      *
      * <pre>
-     * Endpoint configuration attributes.
-     * Every endpoint has a set of API supported attributes that can be used to
-     * control different aspects of the message delivery.
-     * The currently supported attribute is `x-goog-version`, which you can
+     * Endpoint configuration attributes that can be used to control different
+     * aspects of the message delivery.
+     * The only currently supported attribute is `x-goog-version`, which you can
      * use to change the format of the pushed message. This attribute
      * indicates the version of the data expected by the endpoint. This
      * controls the shape of the pushed message (i.e., its fields and metadata).
-     * The endpoint version is based on the version of the Pub/Sub API.
      * If not present during the `CreateSubscription` call, it will default to
-     * the version of the API used to make such call. If not present during a
+     * the version of the Pub/Sub API used to make such call. If not present in a
      * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
      * calls will always return a valid version, even if the subscription was
      * created without this attribute.
-     * The possible values for this attribute are:
+     * The only supported values for the `x-goog-version` attribute are:
      * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
      * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+     * For example:
+     * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
      * </pre>
      *
      * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1890,22 +1890,22 @@ public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
      *
      *
      * <pre>
-     * Endpoint configuration attributes.
-     * Every endpoint has a set of API supported attributes that can be used to
-     * control different aspects of the message delivery.
-     * The currently supported attribute is `x-goog-version`, which you can
+     * Endpoint configuration attributes that can be used to control different
+     * aspects of the message delivery.
+     * The only currently supported attribute is `x-goog-version`, which you can
      * use to change the format of the pushed message. This attribute
      * indicates the version of the data expected by the endpoint. This
      * controls the shape of the pushed message (i.e., its fields and metadata).
-     * The endpoint version is based on the version of the Pub/Sub API.
      * If not present during the `CreateSubscription` call, it will default to
-     * the version of the API used to make such call. If not present during a
+     * the version of the Pub/Sub API used to make such call. If not present in a
      * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
      * calls will always return a valid version, even if the subscription was
      * created without this attribute.
-     * The possible values for this attribute are:
+     * The only supported values for the `x-goog-version` attribute are:
      * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
      * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+     * For example:
+     * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
      * </pre>
      *
      * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1917,22 +1917,22 @@ public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
      *
      *
      * <pre>
-     * Endpoint configuration attributes.
-     * Every endpoint has a set of API supported attributes that can be used to
-     * control different aspects of the message delivery.
-     * The currently supported attribute is `x-goog-version`, which you can
+     * Endpoint configuration attributes that can be used to control different
+     * aspects of the message delivery.
+     * The only currently supported attribute is `x-goog-version`, which you can
      * use to change the format of the pushed message. This attribute
      * indicates the version of the data expected by the endpoint. This
      * controls the shape of the pushed message (i.e., its fields and metadata).
-     * The endpoint version is based on the version of the Pub/Sub API.
      * If not present during the `CreateSubscription` call, it will default to
-     * the version of the API used to make such call. If not present during a
+     * the version of the Pub/Sub API used to make such call. If not present in a
      * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
      * calls will always return a valid version, even if the subscription was
      * created without this attribute.
-     * The possible values for this attribute are:
+     * The only supported values for the `x-goog-version` attribute are:
      * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
      * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+     * For example:
+     * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
      * </pre>
      *
      * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1949,22 +1949,22 @@ public java.lang.String getAttributesOrDefault(
      *
      *
      * <pre>
-     * Endpoint configuration attributes.
-     * Every endpoint has a set of API supported attributes that can be used to
-     * control different aspects of the message delivery.
-     * The currently supported attribute is `x-goog-version`, which you can
+     * Endpoint configuration attributes that can be used to control different
+     * aspects of the message delivery.
+     * The only currently supported attribute is `x-goog-version`, which you can
      * use to change the format of the pushed message. This attribute
      * indicates the version of the data expected by the endpoint. This
      * controls the shape of the pushed message (i.e., its fields and metadata).
-     * The endpoint version is based on the version of the Pub/Sub API.
      * If not present during the `CreateSubscription` call, it will default to
-     * the version of the API used to make such call. If not present during a
+     * the version of the Pub/Sub API used to make such call. If not present in a
      * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
      * calls will always return a valid version, even if the subscription was
      * created without this attribute.
-     * The possible values for this attribute are:
+     * The only supported values for the `x-goog-version` attribute are:
      * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
      * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+     * For example:
+     * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
      * </pre>
      *
      * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -1988,22 +1988,22 @@ public Builder clearAttributes() {
      *
      *
      * <pre>
-     * Endpoint configuration attributes.
-     * Every endpoint has a set of API supported attributes that can be used to
-     * control different aspects of the message delivery.
-     * The currently supported attribute is `x-goog-version`, which you can
+     * Endpoint configuration attributes that can be used to control different
+     * aspects of the message delivery.
+     * The only currently supported attribute is `x-goog-version`, which you can
      * use to change the format of the pushed message. This attribute
      * indicates the version of the data expected by the endpoint. This
      * controls the shape of the pushed message (i.e., its fields and metadata).
-     * The endpoint version is based on the version of the Pub/Sub API.
      * If not present during the `CreateSubscription` call, it will default to
-     * the version of the API used to make such call. If not present during a
+     * the version of the Pub/Sub API used to make such call. If not present in a
      * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
      * calls will always return a valid version, even if the subscription was
      * created without this attribute.
-     * The possible values for this attribute are:
+     * The only supported values for the `x-goog-version` attribute are:
      * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
      * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+     * For example:
+     * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
      * </pre>
      *
      * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -2024,22 +2024,22 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableAttributes()
      *
      *
      * <pre>
-     * Endpoint configuration attributes.
-     * Every endpoint has a set of API supported attributes that can be used to
-     * control different aspects of the message delivery.
-     * The currently supported attribute is `x-goog-version`, which you can
+     * Endpoint configuration attributes that can be used to control different
+     * aspects of the message delivery.
+     * The only currently supported attribute is `x-goog-version`, which you can
      * use to change the format of the pushed message. This attribute
      * indicates the version of the data expected by the endpoint. This
      * controls the shape of the pushed message (i.e., its fields and metadata).
-     * The endpoint version is based on the version of the Pub/Sub API.
      * If not present during the `CreateSubscription` call, it will default to
-     * the version of the API used to make such call. If not present during a
+     * the version of the Pub/Sub API used to make such call. If not present in a
      * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
      * calls will always return a valid version, even if the subscription was
      * created without this attribute.
-     * The possible values for this attribute are:
+     * The only supported values for the `x-goog-version` attribute are:
      * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
      * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+     * For example:
+     * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
      * </pre>
      *
      * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -2058,22 +2058,22 @@ public Builder putAttributes(java.lang.String key, java.lang.String value) {
      *
      *
      * <pre>
-     * Endpoint configuration attributes.
-     * Every endpoint has a set of API supported attributes that can be used to
-     * control different aspects of the message delivery.
-     * The currently supported attribute is `x-goog-version`, which you can
+     * Endpoint configuration attributes that can be used to control different
+     * aspects of the message delivery.
+     * The only currently supported attribute is `x-goog-version`, which you can
      * use to change the format of the pushed message. This attribute
      * indicates the version of the data expected by the endpoint. This
      * controls the shape of the pushed message (i.e., its fields and metadata).
-     * The endpoint version is based on the version of the Pub/Sub API.
      * If not present during the `CreateSubscription` call, it will default to
-     * the version of the API used to make such call. If not present during a
+     * the version of the Pub/Sub API used to make such call. If not present in a
      * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
      * calls will always return a valid version, even if the subscription was
      * created without this attribute.
-     * The possible values for this attribute are:
+     * The only supported values for the `x-goog-version` attribute are:
      * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
      * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+     * For example:
+     * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
      * </pre>
      *
      * <code>map&lt;string, string&gt; attributes = 2;</code>
diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfigOrBuilder.java b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfigOrBuilder.java
index b43de54a3da1..729f217b72d1 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfigOrBuilder.java
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PushConfigOrBuilder.java
@@ -35,22 +35,22 @@ public interface PushConfigOrBuilder
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -60,22 +60,22 @@ public interface PushConfigOrBuilder
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -88,22 +88,22 @@ public interface PushConfigOrBuilder
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -113,22 +113,22 @@ public interface PushConfigOrBuilder
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
@@ -138,22 +138,22 @@ public interface PushConfigOrBuilder
    *
    *
    * <pre>
-   * Endpoint configuration attributes.
-   * Every endpoint has a set of API supported attributes that can be used to
-   * control different aspects of the message delivery.
-   * The currently supported attribute is `x-goog-version`, which you can
+   * Endpoint configuration attributes that can be used to control different
+   * aspects of the message delivery.
+   * The only currently supported attribute is `x-goog-version`, which you can
    * use to change the format of the pushed message. This attribute
    * indicates the version of the data expected by the endpoint. This
    * controls the shape of the pushed message (i.e., its fields and metadata).
-   * The endpoint version is based on the version of the Pub/Sub API.
    * If not present during the `CreateSubscription` call, it will default to
-   * the version of the API used to make such call. If not present during a
+   * the version of the Pub/Sub API used to make such call. If not present in a
    * `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
    * calls will always return a valid version, even if the subscription was
    * created without this attribute.
-   * The possible values for this attribute are:
+   * The only supported values for the `x-goog-version` attribute are:
    * * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
    * * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+   * For example:
+   * &lt;pre&gt;&lt;code&gt;attributes { "x-goog-version": "v1" } &lt;/code&gt;&lt;/pre&gt;
    * </pre>
    *
    * <code>map&lt;string, string&gt; attributes = 2;</code>
diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/Topic.java b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/Topic.java
index 34fa444e9e62..3441012ff078 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/Topic.java
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/Topic.java
@@ -294,12 +294,9 @@ public java.lang.String getLabelsOrThrow(java.lang.String key) {
    *
    *
    * <pre>
-   * Policy constraining how messages published to the topic may be stored. It
-   * is determined when the topic is created based on the policy configured at
-   * the project level. It must not be set by the caller in the request to
-   * CreateTopic or to UpdateTopic. This field will be populated in the
-   * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-   * response, then no constraints are in effect.
+   * Policy constraining the set of Google Cloud Platform regions where messages
+   * published to the topic may be stored. If not present, then no constraints
+   * are in effect.
    * </pre>
    *
    * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -311,12 +308,9 @@ public boolean hasMessageStoragePolicy() {
    *
    *
    * <pre>
-   * Policy constraining how messages published to the topic may be stored. It
-   * is determined when the topic is created based on the policy configured at
-   * the project level. It must not be set by the caller in the request to
-   * CreateTopic or to UpdateTopic. This field will be populated in the
-   * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-   * response, then no constraints are in effect.
+   * Policy constraining the set of Google Cloud Platform regions where messages
+   * published to the topic may be stored. If not present, then no constraints
+   * are in effect.
    * </pre>
    *
    * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -330,12 +324,9 @@ public com.google.pubsub.v1.MessageStoragePolicy getMessageStoragePolicy() {
    *
    *
    * <pre>
-   * Policy constraining how messages published to the topic may be stored. It
-   * is determined when the topic is created based on the policy configured at
-   * the project level. It must not be set by the caller in the request to
-   * CreateTopic or to UpdateTopic. This field will be populated in the
-   * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-   * response, then no constraints are in effect.
+   * Policy constraining the set of Google Cloud Platform regions where messages
+   * published to the topic may be stored. If not present, then no constraints
+   * are in effect.
    * </pre>
    *
    * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -353,9 +344,6 @@ public com.google.pubsub.v1.MessageStoragePolicyOrBuilder getMessageStoragePolic
    * The resource name of the Cloud KMS CryptoKey to be used to protect access
    * to messages published on this topic.
    * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-   * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-   * API might be changed in backward-incompatible ways and is not recommended
-   * for production use. It is not subject to any SLA or deprecation policy.
    * </pre>
    *
    * <code>string kms_key_name = 5;</code>
@@ -378,9 +366,6 @@ public java.lang.String getKmsKeyName() {
    * The resource name of the Cloud KMS CryptoKey to be used to protect access
    * to messages published on this topic.
    * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-   * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-   * API might be changed in backward-incompatible ways and is not recommended
-   * for production use. It is not subject to any SLA or deprecation policy.
    * </pre>
    *
    * <code>string kms_key_name = 5;</code>
@@ -1086,12 +1071,9 @@ public Builder putAllLabels(java.util.Map<java.lang.String, java.lang.String> va
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1103,12 +1085,9 @@ public boolean hasMessageStoragePolicy() {
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1126,12 +1105,9 @@ public com.google.pubsub.v1.MessageStoragePolicy getMessageStoragePolicy() {
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1153,12 +1129,9 @@ public Builder setMessageStoragePolicy(com.google.pubsub.v1.MessageStoragePolicy
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1178,12 +1151,9 @@ public Builder setMessageStoragePolicy(
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1209,12 +1179,9 @@ public Builder mergeMessageStoragePolicy(com.google.pubsub.v1.MessageStoragePoli
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1234,12 +1201,9 @@ public Builder clearMessageStoragePolicy() {
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1253,12 +1217,9 @@ public com.google.pubsub.v1.MessageStoragePolicy.Builder getMessageStoragePolicy
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1276,12 +1237,9 @@ public com.google.pubsub.v1.MessageStoragePolicyOrBuilder getMessageStoragePolic
      *
      *
      * <pre>
-     * Policy constraining how messages published to the topic may be stored. It
-     * is determined when the topic is created based on the policy configured at
-     * the project level. It must not be set by the caller in the request to
-     * CreateTopic or to UpdateTopic. This field will be populated in the
-     * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-     * response, then no constraints are in effect.
+     * Policy constraining the set of Google Cloud Platform regions where messages
+     * published to the topic may be stored. If not present, then no constraints
+     * are in effect.
      * </pre>
      *
      * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -1311,9 +1269,6 @@ public com.google.pubsub.v1.MessageStoragePolicyOrBuilder getMessageStoragePolic
      * The resource name of the Cloud KMS CryptoKey to be used to protect access
      * to messages published on this topic.
      * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-     * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-     * API might be changed in backward-incompatible ways and is not recommended
-     * for production use. It is not subject to any SLA or deprecation policy.
      * </pre>
      *
      * <code>string kms_key_name = 5;</code>
@@ -1336,9 +1291,6 @@ public java.lang.String getKmsKeyName() {
      * The resource name of the Cloud KMS CryptoKey to be used to protect access
      * to messages published on this topic.
      * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-     * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-     * API might be changed in backward-incompatible ways and is not recommended
-     * for production use. It is not subject to any SLA or deprecation policy.
      * </pre>
      *
      * <code>string kms_key_name = 5;</code>
@@ -1361,9 +1313,6 @@ public com.google.protobuf.ByteString getKmsKeyNameBytes() {
      * The resource name of the Cloud KMS CryptoKey to be used to protect access
      * to messages published on this topic.
      * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-     * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-     * API might be changed in backward-incompatible ways and is not recommended
-     * for production use. It is not subject to any SLA or deprecation policy.
      * </pre>
      *
      * <code>string kms_key_name = 5;</code>
@@ -1384,9 +1333,6 @@ public Builder setKmsKeyName(java.lang.String value) {
      * The resource name of the Cloud KMS CryptoKey to be used to protect access
      * to messages published on this topic.
      * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-     * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-     * API might be changed in backward-incompatible ways and is not recommended
-     * for production use. It is not subject to any SLA or deprecation policy.
      * </pre>
      *
      * <code>string kms_key_name = 5;</code>
@@ -1404,9 +1350,6 @@ public Builder clearKmsKeyName() {
      * The resource name of the Cloud KMS CryptoKey to be used to protect access
      * to messages published on this topic.
      * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-     * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-     * API might be changed in backward-incompatible ways and is not recommended
-     * for production use. It is not subject to any SLA or deprecation policy.
      * </pre>
      *
      * <code>string kms_key_name = 5;</code>
diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/TopicOrBuilder.java b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/TopicOrBuilder.java
index f1c27b778a09..67921c8d2b59 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/TopicOrBuilder.java
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/TopicOrBuilder.java
@@ -102,12 +102,9 @@ public interface TopicOrBuilder
    *
    *
    * <pre>
-   * Policy constraining how messages published to the topic may be stored. It
-   * is determined when the topic is created based on the policy configured at
-   * the project level. It must not be set by the caller in the request to
-   * CreateTopic or to UpdateTopic. This field will be populated in the
-   * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-   * response, then no constraints are in effect.
+   * Policy constraining the set of Google Cloud Platform regions where messages
+   * published to the topic may be stored. If not present, then no constraints
+   * are in effect.
    * </pre>
    *
    * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -117,12 +114,9 @@ public interface TopicOrBuilder
    *
    *
    * <pre>
-   * Policy constraining how messages published to the topic may be stored. It
-   * is determined when the topic is created based on the policy configured at
-   * the project level. It must not be set by the caller in the request to
-   * CreateTopic or to UpdateTopic. This field will be populated in the
-   * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-   * response, then no constraints are in effect.
+   * Policy constraining the set of Google Cloud Platform regions where messages
+   * published to the topic may be stored. If not present, then no constraints
+   * are in effect.
    * </pre>
    *
    * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -132,12 +126,9 @@ public interface TopicOrBuilder
    *
    *
    * <pre>
-   * Policy constraining how messages published to the topic may be stored. It
-   * is determined when the topic is created based on the policy configured at
-   * the project level. It must not be set by the caller in the request to
-   * CreateTopic or to UpdateTopic. This field will be populated in the
-   * responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-   * response, then no constraints are in effect.
+   * Policy constraining the set of Google Cloud Platform regions where messages
+   * published to the topic may be stored. If not present, then no constraints
+   * are in effect.
    * </pre>
    *
    * <code>.google.pubsub.v1.MessageStoragePolicy message_storage_policy = 3;</code>
@@ -151,9 +142,6 @@ public interface TopicOrBuilder
    * The resource name of the Cloud KMS CryptoKey to be used to protect access
    * to messages published on this topic.
    * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-   * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-   * API might be changed in backward-incompatible ways and is not recommended
-   * for production use. It is not subject to any SLA or deprecation policy.
    * </pre>
    *
    * <code>string kms_key_name = 5;</code>
@@ -166,9 +154,6 @@ public interface TopicOrBuilder
    * The resource name of the Cloud KMS CryptoKey to be used to protect access
    * to messages published on this topic.
    * The expected format is `projects/&#42;&#47;locations/&#42;&#47;keyRings/&#42;&#47;cryptoKeys/&#42;`.
-   * &lt;b&gt;EXPERIMENTAL:&lt;/b&gt; This feature is part of a closed alpha release. This
-   * API might be changed in backward-incompatible ways and is not recommended
-   * for production use. It is not subject to any SLA or deprecation policy.
    * </pre>
    *
    * <code>string kms_key_name = 5;</code>
diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto
index 7cea47b1e539..ea0d4c7e53e5 100644
--- a/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto
+++ b/google-api-grpc/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto
@@ -18,7 +18,7 @@ syntax = "proto3";
 package google.pubsub.v1;
 
 import "google/api/annotations.proto";
-import "google/api/resource.proto";
+import "google/api/client.proto";
 import "google/protobuf/duration.proto";
 import "google/protobuf/empty.proto";
 import "google/protobuf/field_mask.proto";
@@ -36,6 +36,11 @@ option ruby_package = "Google::Cloud::PubSub::V1";
 // The service that an application uses to manipulate topics, and to send
 // messages to a topic.
 service Publisher {
+  option (google.api.default_host) = "pubsub.googleapis.com";
+  option (google.api.oauth_scopes) =
+      "https://www.googleapis.com/auth/cloud-platform,"
+      "https://www.googleapis.com/auth/pubsub";
+
   // Creates the given topic with the given name. See the
   // <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">
   // resource name rules</a>.
@@ -112,12 +117,11 @@ service Publisher {
 }
 
 message MessageStoragePolicy {
-  // The list of GCP region IDs where messages that are published to the topic
+  // A list of IDs of GCP regions where messages that are published to the topic
   // may be persisted in storage. Messages published by publishers running in
   // non-allowed GCP regions (or running outside of GCP altogether) will be
-  // routed for storage in one of the allowed regions. An empty list indicates a
-  // misconfiguration at the project or organization level, which will result in
-  // all Publish operations failing.
+  // routed for storage in one of the allowed regions. An empty list means that
+  // no regions are allowed, and is not a valid configuration.
   repeated string allowed_persistence_regions = 1;
 }
 
@@ -135,21 +139,15 @@ message Topic {
   // managing labels</a>.
   map<string, string> labels = 2;
 
-  // Policy constraining how messages published to the topic may be stored. It
-  // is determined when the topic is created based on the policy configured at
-  // the project level. It must not be set by the caller in the request to
-  // CreateTopic or to UpdateTopic. This field will be populated in the
-  // responses for GetTopic, CreateTopic, and UpdateTopic: if not present in the
-  // response, then no constraints are in effect.
+  // Policy constraining the set of Google Cloud Platform regions where messages
+  // published to the topic may be stored. If not present, then no constraints
+  // are in effect.
   MessageStoragePolicy message_storage_policy = 3;
 
   // The resource name of the Cloud KMS CryptoKey to be used to protect access
   // to messages published on this topic.
   //
   // The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`.
-  // <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
-  // API might be changed in backward-incompatible ways and is not recommended
-  // for production use. It is not subject to any SLA or deprecation policy.
   string kms_key_name = 5;
 }
 
@@ -316,6 +314,11 @@ message DeleteTopicRequest {
 // consume messages from a subscription via the `Pull` method or by
 // establishing a bi-directional stream using the `StreamingPull` method.
 service Subscriber {
+  option (google.api.default_host) = "pubsub.googleapis.com";
+  option (google.api.oauth_scopes) =
+      "https://www.googleapis.com/auth/cloud-platform,"
+      "https://www.googleapis.com/auth/pubsub";
+
   // Creates a subscription to a given topic. See the
   // <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">
   // resource name rules</a>.
@@ -646,27 +649,27 @@ message PushConfig {
   // For example, a Webhook endpoint might use "https://example.com/push".
   string push_endpoint = 1;
 
-  // Endpoint configuration attributes.
-  //
-  // Every endpoint has a set of API supported attributes that can be used to
-  // control different aspects of the message delivery.
+  // Endpoint configuration attributes that can be used to control different
+  // aspects of the message delivery.
   //
-  // The currently supported attribute is `x-goog-version`, which you can
+  // The only currently supported attribute is `x-goog-version`, which you can
   // use to change the format of the pushed message. This attribute
   // indicates the version of the data expected by the endpoint. This
   // controls the shape of the pushed message (i.e., its fields and metadata).
-  // The endpoint version is based on the version of the Pub/Sub API.
   //
   // If not present during the `CreateSubscription` call, it will default to
-  // the version of the API used to make such call. If not present during a
+  // the version of the Pub/Sub API used to make such call. If not present in a
   // `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
   // calls will always return a valid version, even if the subscription was
   // created without this attribute.
   //
-  // The possible values for this attribute are:
+  // The only supported values for the `x-goog-version` attribute are:
   //
   // * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
   // * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+  //
+  // For example:
+  // <pre><code>attributes { "x-goog-version": "v1" } </code></pre>
   map<string, string> attributes = 2;
 
   // An authentication method used by push endpoints to verify the source of
diff --git a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java
index 323af0694349..b260b66ddc1e 100644
--- a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java
+++ b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java
@@ -218,7 +218,8 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
 
   /** Returns a builder for the default ChannelProvider for this service. */
   public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
-    return InstantiatingGrpcChannelProvider.newBuilder();
+    return InstantiatingGrpcChannelProvider.newBuilder()
+        .setMaxInboundMessageSize(Integer.MAX_VALUE);
   }
 
   public static TransportChannelProvider defaultTransportChannelProvider() {
diff --git a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java
index cd74a1d390bf..fb18f417d4ca 100644
--- a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java
+++ b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java
@@ -268,7 +268,7 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde
 
   /** Returns a builder for the default ChannelProvider for this service. */
   public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
-    return InstantiatingGrpcChannelProvider.newBuilder().setMaxInboundMessageSize(20 << 20); // 20MB
+    return InstantiatingGrpcChannelProvider.newBuilder().setMaxInboundMessageSize(20 << 20);
   }
 
   public static TransportChannelProvider defaultTransportChannelProvider() {
diff --git a/google-cloud-clients/google-cloud-pubsub/synth.metadata b/google-cloud-clients/google-cloud-pubsub/synth.metadata
index dc7606454c9d..e917671778a8 100644
--- a/google-cloud-clients/google-cloud-pubsub/synth.metadata
+++ b/google-cloud-clients/google-cloud-pubsub/synth.metadata
@@ -1,19 +1,19 @@
 {
-  "updateTime": "2019-07-24T07:50:48.185938Z",
+  "updateTime": "2019-08-05T19:09:21.062218Z",
   "sources": [
     {
       "generator": {
         "name": "artman",
-        "version": "0.31.0",
-        "dockerImage": "googleapis/artman@sha256:9aed6bbde54e26d2fcde7aa86d9f64c0278f741e58808c46573e488cbf6098f0"
+        "version": "0.32.1",
+        "dockerImage": "googleapis/artman@sha256:a684d40ba9a4e15946f5f2ca6b4bd9fe301192f522e9de4fff622118775f309b"
       }
     },
     {
       "git": {
         "name": "googleapis",
         "remote": "https://github.com/googleapis/googleapis.git",
-        "sha": "3035bd51e268fcd8d6721ad2e5d081c6ee36c5c3",
-        "internalRef": "259653050"
+        "sha": "f94d89f4b75b4bdf6a254da44eb0f70d34bcca14",
+        "internalRef": "261701508"
       }
     }
   ],
diff --git a/google-cloud-clients/google-cloud-pubsub/synth.py b/google-cloud-clients/google-cloud-pubsub/synth.py
index 0601c96b8bb0..3961bdff1fac 100644
--- a/google-cloud-clients/google-cloud-pubsub/synth.py
+++ b/google-cloud-clients/google-cloud-pubsub/synth.py
@@ -37,8 +37,8 @@
 
   s.replace(
       '**/stub/SubscriberStubSettings.java',
-      r'return InstantiatingGrpcChannelProvider\.newBuilder\(\);',
-      'return InstantiatingGrpcChannelProvider.newBuilder().setMaxInboundMessageSize(20 << 20); // 20MB'
+      r'setMaxInboundMessageSize\(Integer.MAX_VALUE\)',
+      'setMaxInboundMessageSize(20 << 20)'
   )
 
   java.format_code('./src')
