feat(all): auto-regenerate discovery clients (#2658)

diff --git a/analyticshub/v1/analyticshub-api.json b/analyticshub/v1/analyticshub-api.json
index f1cf98e..f861470 100644
--- a/analyticshub/v1/analyticshub-api.json
+++ b/analyticshub/v1/analyticshub-api.json
@@ -1022,9 +1022,24 @@
       }
     }
   },
-  "revision": "20240408",
+  "revision": "20240624",
   "rootUrl": "https://analyticshub.googleapis.com/",
   "schemas": {
+    "AnalyticsHubSubscriptionInfo": {
+      "description": "Information about an associated Analytics Hub subscription (https://cloud.google.com/bigquery/docs/analytics-hub-manage-subscriptions).",
+      "id": "AnalyticsHubSubscriptionInfo",
+      "properties": {
+        "listing": {
+          "description": "Optional. The name of the associated Analytics Hub listing resource. Pattern: \"projects/{project}/locations/{location}/dataExchanges/{data_exchange}/listings/{listing}\"",
+          "type": "string"
+        },
+        "subscription": {
+          "description": "Optional. The name of the associated Analytics Hub subscription resource. Pattern: \"projects/{project}/locations/{location}/subscriptions/{subscription}\"",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "AuditConfig": {
       "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
       "id": "AuditConfig",
@@ -1073,6 +1088,73 @@
       },
       "type": "object"
     },
+    "AvroConfig": {
+      "description": "Configuration for writing message data in Avro format. Message payloads and metadata will be written to files as an Avro binary.",
+      "id": "AvroConfig",
+      "properties": {
+        "useTopicSchema": {
+          "description": "Optional. When true, the output Cloud Storage file will be serialized using the topic schema, if it exists.",
+          "type": "boolean"
+        },
+        "writeMetadata": {
+          "description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key as additional fields in the output. The subscription name, message_id, and publish_time fields are put in their own fields while all other message properties other than data (for example, an ordering_key, if present) are added as entries in the attributes map.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "BigQueryConfig": {
+      "description": "Configuration for a BigQuery subscription.",
+      "id": "BigQueryConfig",
+      "properties": {
+        "dropUnknownFields": {
+          "description": "Optional. When true and use_topic_schema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.",
+          "type": "boolean"
+        },
+        "serviceAccountEmail": {
+          "description": "Optional. The service account to use to write to BigQuery. The subscription creator or updater that specifies this field must have `iam.serviceAccounts.actAs` permission on the service account. If not specified, the Pub/Sub [service agent](https://cloud.google.com/iam/docs/service-agents), service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. An output-only field that indicates whether or not the subscription can receive messages.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "ACTIVE",
+            "PERMISSION_DENIED",
+            "NOT_FOUND",
+            "SCHEMA_MISMATCH",
+            "IN_TRANSIT_LOCATION_RESTRICTION"
+          ],
+          "enumDescriptions": [
+            "Default value. This value is unused.",
+            "The subscription can actively send messages to BigQuery",
+            "Cannot write to the BigQuery table because of permission denied errors. This can happen if - Pub/Sub SA has not been granted the [appropriate BigQuery IAM permissions](https://cloud.google.com/pubsub/docs/create-subscription#assign_bigquery_service_account) - bigquery.googleapis.com API is not enabled for the project ([instructions](https://cloud.google.com/service-usage/docs/enable-disable))",
+            "Cannot write to the BigQuery table because it does not exist.",
+            "Cannot write to the BigQuery table due to a schema mismatch.",
+            "Cannot write to the destination because enforce_in_transit is set to true and the destination locations are not in the allowed regions."
+          ],
+          "readOnly": true,
+          "type": "string"
+        },
+        "table": {
+          "description": "Optional. The name of the table to which to write data, of the form {projectId}.{datasetId}.{tableId}",
+          "type": "string"
+        },
+        "useTableSchema": {
+          "description": "Optional. When true, use the BigQuery table's schema as the columns to write to in BigQuery. `use_table_schema` and `use_topic_schema` cannot be enabled at the same time.",
+          "type": "boolean"
+        },
+        "useTopicSchema": {
+          "description": "Optional. When true, use the topic's schema as the columns to write to in BigQuery, if it exists. `use_topic_schema` and `use_table_schema` cannot be enabled at the same time.",
+          "type": "boolean"
+        },
+        "writeMetadata": {
+          "description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key to additional columns in the table. The subscription name, message_id, and publish_time fields are put in their own columns while all other message properties (other than data) are written to a JSON object in the attributes column.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
     "BigQueryDatasetSource": {
       "description": "A reference to a shared dataset. It is an existing BigQuery dataset with a collection of objects such as tables and views that you want to share with subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a linked dataset in the subscriber's project. A Linked dataset is an opaque, read-only BigQuery dataset that serves as a _symbolic link_ to a shared dataset.",
       "id": "BigQueryDatasetSource",
@@ -1086,7 +1168,7 @@
           "description": "Optional. If set, restricted export policy will be propagated and enforced on the linked dataset."
         },
         "selectedResources": {
-          "description": "Optional. Resources in this dataset that are selectively shared. If this field is empty, then the entire dataset (all resources) are shared. This field is only valid for data clean room exchanges.",
+          "description": "Optional. Resource in this dataset that is selectively shared. This field is required for data clean room exchanges.",
           "items": {
             "$ref": "SelectedResource"
           },
@@ -1117,6 +1199,77 @@
       },
       "type": "object"
     },
+    "CloudStorageConfig": {
+      "description": "Configuration for a Cloud Storage subscription.",
+      "id": "CloudStorageConfig",
+      "properties": {
+        "avroConfig": {
+          "$ref": "AvroConfig",
+          "description": "Optional. If set, message data will be written to Cloud Storage in Avro format."
+        },
+        "bucket": {
+          "description": "Required. User-provided name for the Cloud Storage bucket. The bucket must be created by the user. The bucket name must be without any prefix like \"gs://\". See the [bucket naming requirements] (https://cloud.google.com/storage/docs/buckets#naming).",
+          "type": "string"
+        },
+        "filenameDatetimeFormat": {
+          "description": "Optional. User-provided format string specifying how to represent datetimes in Cloud Storage filenames. See the [datetime format guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).",
+          "type": "string"
+        },
+        "filenamePrefix": {
+          "description": "Optional. User-provided prefix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming).",
+          "type": "string"
+        },
+        "filenameSuffix": {
+          "description": "Optional. User-provided suffix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming). Must not end in \"/\".",
+          "type": "string"
+        },
+        "maxBytes": {
+          "description": "Optional. The maximum bytes that can be written to a Cloud Storage file before a new file is created. Min 1 KB, max 10 GiB. The max_bytes limit may be exceeded in cases where messages are larger than the limit.",
+          "format": "int64",
+          "type": "string"
+        },
+        "maxDuration": {
+          "description": "Optional. The maximum duration that can elapse before a new Cloud Storage file is created. Min 1 minute, max 10 minutes, default 5 minutes. May not exceed the subscription's acknowledgement deadline.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "maxMessages": {
+          "description": "Optional. The maximum number of messages that can be written to a Cloud Storage file before a new file is created. Min 1000 messages.",
+          "format": "int64",
+          "type": "string"
+        },
+        "serviceAccountEmail": {
+          "description": "Optional. The service account to use to write to Cloud Storage. The subscription creator or updater that specifies this field must have `iam.serviceAccounts.actAs` permission on the service account. If not specified, the Pub/Sub [service agent](https://cloud.google.com/iam/docs/service-agents), service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. An output-only field that indicates whether or not the subscription can receive messages.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "ACTIVE",
+            "PERMISSION_DENIED",
+            "NOT_FOUND",
+            "IN_TRANSIT_LOCATION_RESTRICTION",
+            "SCHEMA_MISMATCH"
+          ],
+          "enumDescriptions": [
+            "Default value. This value is unused.",
+            "The subscription can actively send messages to Cloud Storage.",
+            "Cannot write to the Cloud Storage bucket because of permission denied errors.",
+            "Cannot write to the Cloud Storage bucket because it does not exist.",
+            "Cannot write to the destination because enforce_in_transit is set to true and the destination locations are not in the allowed regions.",
+            "Cannot write to the Cloud Storage bucket due to an incompatibility between the topic schema and subscription settings."
+          ],
+          "readOnly": true,
+          "type": "string"
+        },
+        "textConfig": {
+          "$ref": "TextConfig",
+          "description": "Optional. If set, message data will be written to Cloud Storage in text format."
+        }
+      },
+      "type": "object"
+    },
     "DataExchange": {
       "description": "A data exchange is a container that lets you share data. Along with the descriptive information about the data exchange, it contains listings that reference shared datasets.",
       "id": "DataExchange",
@@ -1125,6 +1278,20 @@
           "description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
           "type": "string"
         },
+        "discoveryType": {
+          "description": "Optional. Type of discovery on the discovery page for all the listings under this exchange. Updating this field also updates (overwrites) the discovery_type field for all the listings under this exchange.",
+          "enum": [
+            "DISCOVERY_TYPE_UNSPECIFIED",
+            "DISCOVERY_TYPE_PRIVATE",
+            "DISCOVERY_TYPE_PUBLIC"
+          ],
+          "enumDescriptions": [
+            "Unspecified. Defaults to DISCOVERY_TYPE_PRIVATE.",
+            "The Data exchange/listing can be discovered in the 'Private' results list.",
+            "The Data exchange/listing can be discovered in the 'Public' results list."
+          ],
+          "type": "string"
+        },
         "displayName": {
           "description": "Required. Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (\u0026) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
           "type": "string"
@@ -1192,6 +1359,22 @@
       },
       "type": "object"
     },
+    "DeadLetterPolicy": {
+      "description": "Dead lettering is done on a best effort basis. The same message might be dead lettered multiple times. If validation on any of the fields fails at subscription creation/updation, the create/update subscription request will fail.",
+      "id": "DeadLetterPolicy",
+      "properties": {
+        "deadLetterTopic": {
+          "description": "Optional. The name of the topic to which dead letter messages should be published. Format is `projects/{project}/topics/{topic}`.The Pub/Sub service account associated with the enclosing subscription's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Publish() to this topic. The operation will fail if the topic does not exist. Users should ensure that there is a subscription attached to this topic since messages published to a topic with no subscriptions are lost.",
+          "type": "string"
+        },
+        "maxDeliveryAttempts": {
+          "description": "Optional. The maximum number of delivery attempts for any message. The value must be between 5 and 100. The number of delivery attempts is defined as 1 + (the sum of number of NACKs and number of times the acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0 deadline. Note that client libraries may automatically extend ack_deadlines. This field will be honored on a best effort basis. If this parameter is 0, a default value of 5 is used.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "DefaultExchangeConfig": {
       "description": "Default Analytics Hub data exchange, used for secured data sharing.",
       "id": "DefaultExchangeConfig",
@@ -1243,12 +1426,35 @@
       },
       "type": "object"
     },
+    "DestinationPubSubSubscription": {
+      "description": "Defines the destination Pub/Sub subscription.",
+      "id": "DestinationPubSubSubscription",
+      "properties": {
+        "pubsubSubscription": {
+          "$ref": "GooglePubsubV1Subscription",
+          "description": "Required. Destination Pub/Sub subscription resource."
+        }
+      },
+      "type": "object"
+    },
     "Empty": {
       "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
       "id": "Empty",
       "properties": {},
       "type": "object"
     },
+    "ExpirationPolicy": {
+      "description": "A policy that specifies the conditions for resource expiration (i.e., automatic resource deletion).",
+      "id": "ExpirationPolicy",
+      "properties": {
+        "ttl": {
+          "description": "Optional. Specifies the \"time-to-live\" duration for an associated resource. The resource expires if it is not active for a period of `ttl`. The definition of \"activity\" depends on the type of the associated resource. The minimum and maximum allowed values for `ttl` depend on the type of the associated resource, as well. If `ttl` is not set, the associated resource never expires.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Expr": {
       "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() \u003c 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' \u0026\u0026 document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
       "id": "Expr",
@@ -1295,6 +1501,104 @@
       },
       "type": "object"
     },
+    "GooglePubsubV1Subscription": {
+      "description": "A subscription resource. If none of `push_config`, `bigquery_config`, or `cloud_storage_config` is set, then the subscriber will pull and ack messages using API methods. At most one of these fields may be set.",
+      "id": "GooglePubsubV1Subscription",
+      "properties": {
+        "ackDeadlineSeconds": {
+          "description": "Optional. The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be _outstanding_. During that time period, the message will not be redelivered (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using non-streaming pull or send the `ack_id` in a `StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used. For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "analyticsHubSubscriptionInfo": {
+          "$ref": "AnalyticsHubSubscriptionInfo",
+          "description": "Output only. Information about the associated Analytics Hub subscription. Only set if the subscritpion is created by Analytics Hub.",
+          "readOnly": true
+        },
+        "bigqueryConfig": {
+          "$ref": "BigQueryConfig",
+          "description": "Optional. If delivery to BigQuery is used with this subscription, this field is used to configure it."
+        },
+        "cloudStorageConfig": {
+          "$ref": "CloudStorageConfig",
+          "description": "Optional. If delivery to Google Cloud Storage is used with this subscription, this field is used to configure it."
+        },
+        "deadLetterPolicy": {
+          "$ref": "DeadLetterPolicy",
+          "description": "Optional. A policy that specifies the conditions for dead lettering messages in this subscription. If dead_letter_policy is not set, dead lettering is disabled. The Pub/Sub service account associated with this subscriptions's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Acknowledge() messages on this subscription."
+        },
+        "detached": {
+          "description": "Optional. Indicates whether the subscription is detached from its topic. Detached subscriptions don't receive messages from their topic and don't retain any backlog. `Pull` and `StreamingPull` requests will return FAILED_PRECONDITION. If the subscription is a push subscription, pushes to the endpoint will not be made.",
+          "type": "boolean"
+        },
+        "enableExactlyOnceDelivery": {
+          "description": "Optional. If true, Pub/Sub provides the following guarantees for the delivery of a message with a given value of `message_id` on this subscription: * The message sent to a subscriber is guaranteed not to be resent before the message's acknowledgement deadline expires. * An acknowledged message will not be resent to a subscriber. Note that subscribers may still receive multiple copies of a message when `enable_exactly_once_delivery` is true if the message was published multiple times by a publisher client. These copies are considered distinct by Pub/Sub and have distinct `message_id` values.",
+          "type": "boolean"
+        },
+        "enableMessageOrdering": {
+          "description": "Optional. If true, messages published with the same `ordering_key` in `PubsubMessage` will be delivered to the subscribers in the order in which they are received by the Pub/Sub system. Otherwise, they may be delivered in any order.",
+          "type": "boolean"
+        },
+        "expirationPolicy": {
+          "$ref": "ExpirationPolicy",
+          "description": "Optional. A policy that specifies the conditions for this subscription's expiration. A subscription is considered active as long as any connected subscriber is successfully consuming messages from the subscription or is issuing operations on the subscription. If `expiration_policy` is not set, a *default policy* with `ttl` of 31 days will be used. The minimum allowed value for `expiration_policy.ttl` is 1 day. If `expiration_policy` is set, but `expiration_policy.ttl` is not set, the subscription never expires."
+        },
+        "filter": {
+          "description": "Optional. An expression written in the Pub/Sub [filter language](https://cloud.google.com/pubsub/docs/filtering). If non-empty, then only `PubsubMessage`s whose `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are filtered out.",
+          "type": "string"
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Optional. See [Creating and managing labels](https://cloud.google.com/pubsub/docs/labels).",
+          "type": "object"
+        },
+        "messageRetentionDuration": {
+          "description": "Optional. How long to retain unacknowledged messages in the subscription's backlog, from the moment a message is published. If `retain_acked_messages` is true, then this also configures the retention of acknowledged messages, and thus configures how far back in time a `Seek` can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10 minutes.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "name": {
+          "description": "Required. Name of the subscription. Format is `projects/{project}/subscriptions/{sub}`.",
+          "type": "string"
+        },
+        "pushConfig": {
+          "$ref": "PushConfig",
+          "description": "Optional. If push delivery is used with this subscription, this field is used to configure it."
+        },
+        "retainAckedMessages": {
+          "description": "Optional. Indicates whether to retain acknowledged messages. If true, then messages are not expunged from the subscription's backlog, even if they are acknowledged, until they fall out of the `message_retention_duration` window. This must be true if you would like to [`Seek` to a timestamp] (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) in the past to replay previously-acknowledged messages.",
+          "type": "boolean"
+        },
+        "retryPolicy": {
+          "$ref": "RetryPolicy",
+          "description": "Optional. A policy that specifies how Pub/Sub retries message delivery for this subscription. If not set, the default retry policy is applied. This generally implies that messages will be retried as soon as possible for healthy subscribers. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message."
+        },
+        "state": {
+          "description": "Output only. An output-only field indicating whether or not the subscription can receive messages.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "ACTIVE",
+            "RESOURCE_ERROR"
+          ],
+          "enumDescriptions": [
+            "Default value. This value is unused.",
+            "The subscription can actively receive messages",
+            "The subscription cannot receive messages because of an error with the resource to which it pushes messages. See the more detailed error state in the corresponding configuration."
+          ],
+          "readOnly": true,
+          "type": "string"
+        },
+        "topicMessageRetentionDuration": {
+          "description": "Output only. Indicates the minimum duration for which a message is retained after it is published to the subscription's topic. If this field is set, messages published to the subscription's topic in the last `topic_message_retention_duration` are always available to subscribers. See the `message_retention_duration` field in `Topic`. This field is set only in responses from the server; it is ignored if it is set in any requests.",
+          "format": "google-duration",
+          "readOnly": true,
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "LinkedResource": {
       "description": "Reference to a linked resource tracked by this Subscription.",
       "id": "LinkedResource",
@@ -1303,6 +1607,16 @@
           "description": "Output only. Name of the linked dataset, e.g. projects/subscriberproject/datasets/linked_dataset",
           "readOnly": true,
           "type": "string"
+        },
+        "linkedPubsubSubscription": {
+          "description": "Output only. Name of the Pub/Sub subscription, e.g. projects/subscriberproject/subscriptions/subscriptions/sub_id",
+          "readOnly": true,
+          "type": "string"
+        },
+        "listing": {
+          "description": "Output only. Listing for which linked resource is created.",
+          "readOnly": true,
+          "type": "string"
         }
       },
       "type": "object"
@@ -1464,6 +1778,20 @@
           "description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
           "type": "string"
         },
+        "discoveryType": {
+          "description": "Optional. Type of discovery of the listing on the discovery page.",
+          "enum": [
+            "DISCOVERY_TYPE_UNSPECIFIED",
+            "DISCOVERY_TYPE_PRIVATE",
+            "DISCOVERY_TYPE_PUBLIC"
+          ],
+          "enumDescriptions": [
+            "Unspecified. Defaults to DISCOVERY_TYPE_PRIVATE.",
+            "The Data exchange/listing can be discovered in the 'Private' results list.",
+            "The Data exchange/listing can be discovered in the 'Public' results list."
+          ],
+          "type": "string"
+        },
         "displayName": {
           "description": "Required. Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (\u0026) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
           "type": "string"
@@ -1490,10 +1818,29 @@
           "$ref": "Publisher",
           "description": "Optional. Details of the publisher who owns the listing and who can share the source data."
         },
+        "pubsubTopic": {
+          "$ref": "PubSubTopicSource",
+          "description": "Required. Pub/Sub topic source."
+        },
         "requestAccess": {
           "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes.",
           "type": "string"
         },
+        "resourceType": {
+          "description": "Output only. Listing shared asset type.",
+          "enum": [
+            "SHARED_RESOURCE_TYPE_UNSPECIFIED",
+            "BIGQUERY_DATASET",
+            "PUBSUB_TOPIC"
+          ],
+          "enumDescriptions": [
+            "Not specified.",
+            "BigQuery Dataset Asset.",
+            "Pub/Sub Topic Asset."
+          ],
+          "readOnly": true,
+          "type": "string"
+        },
         "restrictedExportConfig": {
           "$ref": "RestrictedExportConfig",
           "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
@@ -1514,6 +1861,32 @@
       },
       "type": "object"
     },
+    "NoWrapper": {
+      "description": "Sets the `data` field as the HTTP body for delivery.",
+      "id": "NoWrapper",
+      "properties": {
+        "writeMetadata": {
+          "description": "Optional. When true, writes the Pub/Sub message metadata to `x-goog-pubsub-:` headers of the HTTP request. Writes the Pub/Sub message attributes to `:` headers of the HTTP request.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "OidcToken": {
+      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect).",
+      "id": "OidcToken",
+      "properties": {
+        "audience": {
+          "description": "Optional. Audience to be used when generating OIDC token. The audience claim identifies the recipients that the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values (array) for the audience field is not supported. More info about the OIDC JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the Push endpoint URL will be used.",
+          "type": "string"
+        },
+        "serviceAccountEmail": {
+          "description": "Optional. [Service account email](https://cloud.google.com/iam/docs/service-accounts) used for generating the OIDC token. For more information on setting up authentication, see [Push subscriptions](https://cloud.google.com/pubsub/docs/push).",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Operation": {
       "description": "This resource represents a long-running operation that is the result of a network API call.",
       "id": "Operation",
@@ -1624,6 +1997,24 @@
       },
       "type": "object"
     },
+    "PubSubTopicSource": {
+      "description": "Pub/Sub topic source.",
+      "id": "PubSubTopicSource",
+      "properties": {
+        "dataAffinityRegions": {
+          "description": "Optional. Region hint on where the data might be published. Data affinity regions are modifiable. See go/regions for full listing of possible Cloud regions.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "topic": {
+          "description": "Required. Resource name of the Pub/Sub topic source for this listing. e.g. projects/myproject/topics/topicId",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Publisher": {
       "description": "Contains details of the listing publisher.",
       "id": "Publisher",
@@ -1639,6 +2030,42 @@
       },
       "type": "object"
     },
+    "PubsubWrapper": {
+      "description": "The payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage).",
+      "id": "PubsubWrapper",
+      "properties": {},
+      "type": "object"
+    },
+    "PushConfig": {
+      "description": "Configuration for a push delivery endpoint.",
+      "id": "PushConfig",
+      "properties": {
+        "attributes": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Optional. 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). If not present during the `CreateSubscription` call, it will default to 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 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: `attributes { \"x-goog-version\": \"v1\" }`",
+          "type": "object"
+        },
+        "noWrapper": {
+          "$ref": "NoWrapper",
+          "description": "Optional. When set, the payload to the push endpoint is not wrapped."
+        },
+        "oidcToken": {
+          "$ref": "OidcToken",
+          "description": "Optional. If specified, Pub/Sub will generate and attach an OIDC JWT token as an `Authorization` header in the HTTP request for every pushed message."
+        },
+        "pubsubWrapper": {
+          "$ref": "PubsubWrapper",
+          "description": "Optional. When set, the payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage)."
+        },
+        "pushEndpoint": {
+          "description": "Optional. A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use `https://example.com/push`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "RefreshSubscriptionRequest": {
       "description": "Message for refreshing a subscription.",
       "id": "RefreshSubscriptionRequest",
@@ -1695,6 +2122,23 @@
       },
       "type": "object"
     },
+    "RetryPolicy": {
+      "description": "A policy that specifies how Pub/Sub retries message delivery. Retry delay will be exponential based on provided minimum and maximum backoffs. https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message. Retry Policy is implemented on a best effort basis. At times, the delay between consecutive deliveries may not match the configuration. That is, delay can be more or less than configured backoff.",
+      "id": "RetryPolicy",
+      "properties": {
+        "maximumBackoff": {
+          "description": "Optional. The maximum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 600 seconds.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "minimumBackoff": {
+          "description": "Optional. The minimum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 10 seconds.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "RevokeSubscriptionRequest": {
       "description": "Message for revoking a subscription.",
       "id": "RevokeSubscriptionRequest",
@@ -1708,7 +2152,7 @@
       "type": "object"
     },
     "SelectedResource": {
-      "description": "Resource in this dataset that are selectively shared.",
+      "description": "Resource in this dataset that is selectively shared.",
       "id": "SelectedResource",
       "properties": {
         "table": {
@@ -1813,6 +2257,10 @@
         "destinationDataset": {
           "$ref": "DestinationDataset",
           "description": "Input only. BigQuery destination dataset to create for the subscriber."
+        },
+        "destinationPubsubSubscription": {
+          "$ref": "DestinationPubSubSubscription",
+          "description": "Required. Input only. Destination Pub/Sub subscription to create for the subscriber."
         }
       },
       "type": "object"
@@ -1857,6 +2305,14 @@
           "readOnly": true,
           "type": "object"
         },
+        "linkedResources": {
+          "description": "Output only. Linked resources created in the subscription. Only contains values if state = STATE_ACTIVE.",
+          "items": {
+            "$ref": "LinkedResource"
+          },
+          "readOnly": true,
+          "type": "array"
+        },
         "listing": {
           "description": "Output only. Resource name of the source Listing. e.g. projects/123/locations/US/dataExchanges/456/listings/789",
           "readOnly": true,
@@ -1877,6 +2333,21 @@
           "readOnly": true,
           "type": "string"
         },
+        "resourceType": {
+          "description": "Output only. Listing shared asset type.",
+          "enum": [
+            "SHARED_RESOURCE_TYPE_UNSPECIFIED",
+            "BIGQUERY_DATASET",
+            "PUBSUB_TOPIC"
+          ],
+          "enumDescriptions": [
+            "Not specified.",
+            "BigQuery Dataset Asset.",
+            "Pub/Sub Topic Asset."
+          ],
+          "readOnly": true,
+          "type": "string"
+        },
         "state": {
           "description": "Output only. Current state of the subscription.",
           "enum": [
@@ -1929,6 +2400,12 @@
         }
       },
       "type": "object"
+    },
+    "TextConfig": {
+      "description": "Configuration for writing message data in text format. Message payloads will be written to files as raw text, separated by a newline.",
+      "id": "TextConfig",
+      "properties": {},
+      "type": "object"
     }
   },
   "servicePath": "",
diff --git a/analyticshub/v1/analyticshub-gen.go b/analyticshub/v1/analyticshub-gen.go
index 88e5991..11c1e9d 100644
--- a/analyticshub/v1/analyticshub-gen.go
+++ b/analyticshub/v1/analyticshub-gen.go
@@ -257,6 +257,37 @@
 	s *Service
 }
 
+// AnalyticsHubSubscriptionInfo: Information about an associated Analytics Hub
+// subscription
+// (https://cloud.google.com/bigquery/docs/analytics-hub-manage-subscriptions).
+type AnalyticsHubSubscriptionInfo struct {
+	// Listing: Optional. The name of the associated Analytics Hub listing
+	// resource. Pattern:
+	// "projects/{project}/locations/{location}/dataExchanges/{data_exchange}/listin
+	// gs/{listing}"
+	Listing string `json:"listing,omitempty"`
+	// Subscription: Optional. The name of the associated Analytics Hub
+	// subscription resource. Pattern:
+	// "projects/{project}/locations/{location}/subscriptions/{subscription}"
+	Subscription string `json:"subscription,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Listing") to unconditionally
+	// include in API requests. By default, fields with empty or default values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Listing") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *AnalyticsHubSubscriptionInfo) MarshalJSON() ([]byte, error) {
+	type NoMethod AnalyticsHubSubscriptionInfo
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // AuditConfig: Specifies the audit configuration for a service. The
 // configuration determines which permission types are logged, and what
 // identities, if any, are exempted from logging. An AuditConfig must have one
@@ -333,6 +364,108 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// AvroConfig: Configuration for writing message data in Avro format. Message
+// payloads and metadata will be written to files as an Avro binary.
+type AvroConfig struct {
+	// UseTopicSchema: Optional. When true, the output Cloud Storage file will be
+	// serialized using the topic schema, if it exists.
+	UseTopicSchema bool `json:"useTopicSchema,omitempty"`
+	// WriteMetadata: Optional. When true, write the subscription name, message_id,
+	// publish_time, attributes, and ordering_key as additional fields in the
+	// output. The subscription name, message_id, and publish_time fields are put
+	// in their own fields while all other message properties other than data (for
+	// example, an ordering_key, if present) are added as entries in the attributes
+	// map.
+	WriteMetadata bool `json:"writeMetadata,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "UseTopicSchema") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "UseTopicSchema") to include in
+	// API requests with the JSON null value. By default, fields with empty values
+	// are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *AvroConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod AvroConfig
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
+// BigQueryConfig: Configuration for a BigQuery subscription.
+type BigQueryConfig struct {
+	// DropUnknownFields: Optional. When true and use_topic_schema is true, any
+	// fields that are a part of the topic schema that are not part of the BigQuery
+	// table schema are dropped when writing to BigQuery. Otherwise, the schemas
+	// must be kept in sync and any messages with extra fields are not written and
+	// remain in the subscription's backlog.
+	DropUnknownFields bool `json:"dropUnknownFields,omitempty"`
+	// ServiceAccountEmail: Optional. The service account to use to write to
+	// BigQuery. The subscription creator or updater that specifies this field must
+	// have `iam.serviceAccounts.actAs` permission on the service account. If not
+	// specified, the Pub/Sub service agent
+	// (https://cloud.google.com/iam/docs/service-agents),
+	// service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.
+	ServiceAccountEmail string `json:"serviceAccountEmail,omitempty"`
+	// State: Output only. An output-only field that indicates whether or not the
+	// subscription can receive messages.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Default value. This value is unused.
+	//   "ACTIVE" - The subscription can actively send messages to BigQuery
+	//   "PERMISSION_DENIED" - Cannot write to the BigQuery table because of
+	// permission denied errors. This can happen if - Pub/Sub SA has not been
+	// granted the [appropriate BigQuery IAM
+	// permissions](https://cloud.google.com/pubsub/docs/create-subscription#assign_
+	// bigquery_service_account) - bigquery.googleapis.com API is not enabled for
+	// the project
+	// ([instructions](https://cloud.google.com/service-usage/docs/enable-disable))
+	//   "NOT_FOUND" - Cannot write to the BigQuery table because it does not
+	// exist.
+	//   "SCHEMA_MISMATCH" - Cannot write to the BigQuery table due to a schema
+	// mismatch.
+	//   "IN_TRANSIT_LOCATION_RESTRICTION" - Cannot write to the destination
+	// because enforce_in_transit is set to true and the destination locations are
+	// not in the allowed regions.
+	State string `json:"state,omitempty"`
+	// Table: Optional. The name of the table to which to write data, of the form
+	// {projectId}.{datasetId}.{tableId}
+	Table string `json:"table,omitempty"`
+	// UseTableSchema: Optional. When true, use the BigQuery table's schema as the
+	// columns to write to in BigQuery. `use_table_schema` and `use_topic_schema`
+	// cannot be enabled at the same time.
+	UseTableSchema bool `json:"useTableSchema,omitempty"`
+	// UseTopicSchema: Optional. When true, use the topic's schema as the columns
+	// to write to in BigQuery, if it exists. `use_topic_schema` and
+	// `use_table_schema` cannot be enabled at the same time.
+	UseTopicSchema bool `json:"useTopicSchema,omitempty"`
+	// WriteMetadata: Optional. When true, write the subscription name, message_id,
+	// publish_time, attributes, and ordering_key to additional columns in the
+	// table. The subscription name, message_id, and publish_time fields are put in
+	// their own columns while all other message properties (other than data) are
+	// written to a JSON object in the attributes column.
+	WriteMetadata bool `json:"writeMetadata,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "DropUnknownFields") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "DropUnknownFields") to include in
+	// API requests with the JSON null value. By default, fields with empty values
+	// are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *BigQueryConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod BigQueryConfig
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // BigQueryDatasetSource: A reference to a shared dataset. It is an existing
 // BigQuery dataset with a collection of objects such as tables and views that
 // you want to share with subscribers. When subscriber's subscribe to a
@@ -346,9 +479,8 @@
 	// RestrictedExportPolicy: Optional. If set, restricted export policy will be
 	// propagated and enforced on the linked dataset.
 	RestrictedExportPolicy *RestrictedExportPolicy `json:"restrictedExportPolicy,omitempty"`
-	// SelectedResources: Optional. Resources in this dataset that are selectively
-	// shared. If this field is empty, then the entire dataset (all resources) are
-	// shared. This field is only valid for data clean room exchanges.
+	// SelectedResources: Optional. Resource in this dataset that is selectively
+	// shared. This field is required for data clean room exchanges.
 	SelectedResources []*SelectedResource `json:"selectedResources,omitempty"`
 	// ForceSendFields is a list of field names (e.g. "Dataset") to unconditionally
 	// include in API requests. By default, fields with empty or default values are
@@ -467,6 +599,84 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// CloudStorageConfig: Configuration for a Cloud Storage subscription.
+type CloudStorageConfig struct {
+	// AvroConfig: Optional. If set, message data will be written to Cloud Storage
+	// in Avro format.
+	AvroConfig *AvroConfig `json:"avroConfig,omitempty"`
+	// Bucket: Required. User-provided name for the Cloud Storage bucket. The
+	// bucket must be created by the user. The bucket name must be without any
+	// prefix like "gs://". See the [bucket naming requirements]
+	// (https://cloud.google.com/storage/docs/buckets#naming).
+	Bucket string `json:"bucket,omitempty"`
+	// FilenameDatetimeFormat: Optional. User-provided format string specifying how
+	// to represent datetimes in Cloud Storage filenames. See the datetime format
+	// guidance
+	// (https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+	FilenameDatetimeFormat string `json:"filenameDatetimeFormat,omitempty"`
+	// FilenamePrefix: Optional. User-provided prefix for Cloud Storage filename.
+	// See the object naming requirements
+	// (https://cloud.google.com/storage/docs/objects#naming).
+	FilenamePrefix string `json:"filenamePrefix,omitempty"`
+	// FilenameSuffix: Optional. User-provided suffix for Cloud Storage filename.
+	// See the object naming requirements
+	// (https://cloud.google.com/storage/docs/objects#naming). Must not end in "/".
+	FilenameSuffix string `json:"filenameSuffix,omitempty"`
+	// MaxBytes: Optional. The maximum bytes that can be written to a Cloud Storage
+	// file before a new file is created. Min 1 KB, max 10 GiB. The max_bytes limit
+	// may be exceeded in cases where messages are larger than the limit.
+	MaxBytes int64 `json:"maxBytes,omitempty,string"`
+	// MaxDuration: Optional. The maximum duration that can elapse before a new
+	// Cloud Storage file is created. Min 1 minute, max 10 minutes, default 5
+	// minutes. May not exceed the subscription's acknowledgement deadline.
+	MaxDuration string `json:"maxDuration,omitempty"`
+	// MaxMessages: Optional. The maximum number of messages that can be written to
+	// a Cloud Storage file before a new file is created. Min 1000 messages.
+	MaxMessages int64 `json:"maxMessages,omitempty,string"`
+	// ServiceAccountEmail: Optional. The service account to use to write to Cloud
+	// Storage. The subscription creator or updater that specifies this field must
+	// have `iam.serviceAccounts.actAs` permission on the service account. If not
+	// specified, the Pub/Sub service agent
+	// (https://cloud.google.com/iam/docs/service-agents),
+	// service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.
+	ServiceAccountEmail string `json:"serviceAccountEmail,omitempty"`
+	// State: Output only. An output-only field that indicates whether or not the
+	// subscription can receive messages.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Default value. This value is unused.
+	//   "ACTIVE" - The subscription can actively send messages to Cloud Storage.
+	//   "PERMISSION_DENIED" - Cannot write to the Cloud Storage bucket because of
+	// permission denied errors.
+	//   "NOT_FOUND" - Cannot write to the Cloud Storage bucket because it does not
+	// exist.
+	//   "IN_TRANSIT_LOCATION_RESTRICTION" - Cannot write to the destination
+	// because enforce_in_transit is set to true and the destination locations are
+	// not in the allowed regions.
+	//   "SCHEMA_MISMATCH" - Cannot write to the Cloud Storage bucket due to an
+	// incompatibility between the topic schema and subscription settings.
+	State string `json:"state,omitempty"`
+	// TextConfig: Optional. If set, message data will be written to Cloud Storage
+	// in text format.
+	TextConfig *TextConfig `json:"textConfig,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "AvroConfig") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "AvroConfig") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *CloudStorageConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod CloudStorageConfig
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // DataExchange: A data exchange is a container that lets you share data. Along
 // with the descriptive information about the data exchange, it contains
 // listings that reference shared datasets.
@@ -476,6 +686,18 @@
 	// except tabs (HT), new lines (LF), carriage returns (CR), and page breaks
 	// (FF). Default value is an empty string. Max length: 2000 bytes.
 	Description string `json:"description,omitempty"`
+	// DiscoveryType: Optional. Type of discovery on the discovery page for all the
+	// listings under this exchange. Updating this field also updates (overwrites)
+	// the discovery_type field for all the listings under this exchange.
+	//
+	// Possible values:
+	//   "DISCOVERY_TYPE_UNSPECIFIED" - Unspecified. Defaults to
+	// DISCOVERY_TYPE_PRIVATE.
+	//   "DISCOVERY_TYPE_PRIVATE" - The Data exchange/listing can be discovered in
+	// the 'Private' results list.
+	//   "DISCOVERY_TYPE_PUBLIC" - The Data exchange/listing can be discovered in
+	// the 'Public' results list.
+	DiscoveryType string `json:"discoveryType,omitempty"`
 	// DisplayName: Required. Human-readable display name of the data exchange. The
 	// display name must contain only Unicode letters, numbers (0-9), underscores
 	// (_), dashes (-), spaces ( ), ampersands (&) and must not start or end with
@@ -583,6 +805,47 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// DeadLetterPolicy: Dead lettering is done on a best effort basis. The same
+// message might be dead lettered multiple times. If validation on any of the
+// fields fails at subscription creation/updation, the create/update
+// subscription request will fail.
+type DeadLetterPolicy struct {
+	// DeadLetterTopic: Optional. The name of the topic to which dead letter
+	// messages should be published. Format is
+	// `projects/{project}/topics/{topic}`.The Pub/Sub service account associated
+	// with the enclosing subscription's parent project (i.e.,
+	// service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
+	// permission to Publish() to this topic. The operation will fail if the topic
+	// does not exist. Users should ensure that there is a subscription attached to
+	// this topic since messages published to a topic with no subscriptions are
+	// lost.
+	DeadLetterTopic string `json:"deadLetterTopic,omitempty"`
+	// MaxDeliveryAttempts: Optional. The maximum number of delivery attempts for
+	// any message. The value must be between 5 and 100. The number of delivery
+	// attempts is defined as 1 + (the sum of number of NACKs and number of times
+	// the acknowledgement deadline has been exceeded for the message). A NACK is
+	// any call to ModifyAckDeadline with a 0 deadline. Note that client libraries
+	// may automatically extend ack_deadlines. This field will be honored on a best
+	// effort basis. If this parameter is 0, a default value of 5 is used.
+	MaxDeliveryAttempts int64 `json:"maxDeliveryAttempts,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "DeadLetterTopic") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "DeadLetterTopic") to include in
+	// API requests with the JSON null value. By default, fields with empty values
+	// are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *DeadLetterPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod DeadLetterPolicy
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // DefaultExchangeConfig: Default Analytics Hub data exchange, used for secured
 // data sharing.
 type DefaultExchangeConfig struct {
@@ -652,6 +915,28 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// DestinationPubSubSubscription: Defines the destination Pub/Sub subscription.
+type DestinationPubSubSubscription struct {
+	// PubsubSubscription: Required. Destination Pub/Sub subscription resource.
+	PubsubSubscription *GooglePubsubV1Subscription `json:"pubsubSubscription,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "PubsubSubscription") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "PubsubSubscription") to include
+	// in API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *DestinationPubSubSubscription) MarshalJSON() ([]byte, error) {
+	type NoMethod DestinationPubSubSubscription
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // Empty: A generic empty message that you can re-use to avoid defining
 // duplicated empty messages in your APIs. A typical example is to use it as
 // the request or the response type of an API method. For instance: service Foo
@@ -661,6 +946,34 @@
 	googleapi.ServerResponse `json:"-"`
 }
 
+// ExpirationPolicy: A policy that specifies the conditions for resource
+// expiration (i.e., automatic resource deletion).
+type ExpirationPolicy struct {
+	// Ttl: Optional. Specifies the "time-to-live" duration for an associated
+	// resource. The resource expires if it is not active for a period of `ttl`.
+	// The definition of "activity" depends on the type of the associated resource.
+	// The minimum and maximum allowed values for `ttl` depend on the type of the
+	// associated resource, as well. If `ttl` is not set, the associated resource
+	// never expires.
+	Ttl string `json:"ttl,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Ttl") to unconditionally
+	// include in API requests. By default, fields with empty or default values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Ttl") to include in API requests
+	// with the JSON null value. By default, fields with empty values are omitted
+	// from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *ExpirationPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod ExpirationPolicy
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // Expr: Represents a textual expression in the Common Expression Language
 // (CEL) syntax. CEL is a C-like expression language. The syntax and semantics
 // of CEL are documented at https://github.com/google/cel-spec. Example
@@ -764,11 +1077,155 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// GooglePubsubV1Subscription: A subscription resource. If none of
+// `push_config`, `bigquery_config`, or `cloud_storage_config` is set, then the
+// subscriber will pull and ack messages using API methods. At most one of
+// these fields may be set.
+type GooglePubsubV1Subscription struct {
+	// AckDeadlineSeconds: Optional. The approximate amount of time (on a
+	// best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt
+	// before resending the message. In the interval after the message is delivered
+	// and before it is acknowledged, it is considered to be _outstanding_. During
+	// that time period, the message will not be redelivered (on a best-effort
+	// basis). For pull subscriptions, this value is used as the initial value for
+	// the ack deadline. To override this value for a given message, call
+	// `ModifyAckDeadline` with the corresponding `ack_id` if using non-streaming
+	// pull or send the `ack_id` in a `StreamingModifyAckDeadlineRequest` if using
+	// streaming pull. The minimum custom deadline you can specify is 10 seconds.
+	// The maximum custom deadline you can specify is 600 seconds (10 minutes). If
+	// this parameter is 0, a default value of 10 seconds is used. For push
+	// delivery, this value is also used to set the request timeout for the call to
+	// the push endpoint. If the subscriber never acknowledges the message, the
+	// Pub/Sub system will eventually redeliver the message.
+	AckDeadlineSeconds int64 `json:"ackDeadlineSeconds,omitempty"`
+	// AnalyticsHubSubscriptionInfo: Output only. Information about the associated
+	// Analytics Hub subscription. Only set if the subscritpion is created by
+	// Analytics Hub.
+	AnalyticsHubSubscriptionInfo *AnalyticsHubSubscriptionInfo `json:"analyticsHubSubscriptionInfo,omitempty"`
+	// BigqueryConfig: Optional. If delivery to BigQuery is used with this
+	// subscription, this field is used to configure it.
+	BigqueryConfig *BigQueryConfig `json:"bigqueryConfig,omitempty"`
+	// CloudStorageConfig: Optional. If delivery to Google Cloud Storage is used
+	// with this subscription, this field is used to configure it.
+	CloudStorageConfig *CloudStorageConfig `json:"cloudStorageConfig,omitempty"`
+	// DeadLetterPolicy: Optional. A policy that specifies the conditions for dead
+	// lettering messages in this subscription. If dead_letter_policy is not set,
+	// dead lettering is disabled. The Pub/Sub service account associated with this
+	// subscriptions's parent project (i.e.,
+	// service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
+	// permission to Acknowledge() messages on this subscription.
+	DeadLetterPolicy *DeadLetterPolicy `json:"deadLetterPolicy,omitempty"`
+	// Detached: Optional. Indicates whether the subscription is detached from its
+	// topic. Detached subscriptions don't receive messages from their topic and
+	// don't retain any backlog. `Pull` and `StreamingPull` requests will return
+	// FAILED_PRECONDITION. If the subscription is a push subscription, pushes to
+	// the endpoint will not be made.
+	Detached bool `json:"detached,omitempty"`
+	// EnableExactlyOnceDelivery: Optional. If true, Pub/Sub provides the following
+	// guarantees for the delivery of a message with a given value of `message_id`
+	// on this subscription: * The message sent to a subscriber is guaranteed not
+	// to be resent before the message's acknowledgement deadline expires. * An
+	// acknowledged message will not be resent to a subscriber. Note that
+	// subscribers may still receive multiple copies of a message when
+	// `enable_exactly_once_delivery` is true if the message was published multiple
+	// times by a publisher client. These copies are considered distinct by Pub/Sub
+	// and have distinct `message_id` values.
+	EnableExactlyOnceDelivery bool `json:"enableExactlyOnceDelivery,omitempty"`
+	// EnableMessageOrdering: Optional. If true, messages published with the same
+	// `ordering_key` in `PubsubMessage` will be delivered to the subscribers in
+	// the order in which they are received by the Pub/Sub system. Otherwise, they
+	// may be delivered in any order.
+	EnableMessageOrdering bool `json:"enableMessageOrdering,omitempty"`
+	// ExpirationPolicy: Optional. A policy that specifies the conditions for this
+	// subscription's expiration. A subscription is considered active as long as
+	// any connected subscriber is successfully consuming messages from the
+	// subscription or is issuing operations on the subscription. If
+	// `expiration_policy` is not set, a *default policy* with `ttl` of 31 days
+	// will be used. The minimum allowed value for `expiration_policy.ttl` is 1
+	// day. If `expiration_policy` is set, but `expiration_policy.ttl` is not set,
+	// the subscription never expires.
+	ExpirationPolicy *ExpirationPolicy `json:"expirationPolicy,omitempty"`
+	// Filter: Optional. An expression written in the Pub/Sub filter language
+	// (https://cloud.google.com/pubsub/docs/filtering). If non-empty, then only
+	// `PubsubMessage`s whose `attributes` field matches the filter are delivered
+	// on this subscription. If empty, then no messages are filtered out.
+	Filter string `json:"filter,omitempty"`
+	// Labels: Optional. See Creating and managing labels
+	// (https://cloud.google.com/pubsub/docs/labels).
+	Labels map[string]string `json:"labels,omitempty"`
+	// MessageRetentionDuration: Optional. How long to retain unacknowledged
+	// messages in the subscription's backlog, from the moment a message is
+	// published. If `retain_acked_messages` is true, then this also configures the
+	// retention of acknowledged messages, and thus configures how far back in time
+	// a `Seek` can be done. Defaults to 7 days. Cannot be more than 7 days or less
+	// than 10 minutes.
+	MessageRetentionDuration string `json:"messageRetentionDuration,omitempty"`
+	// Name: Required. Name of the subscription. Format is
+	// `projects/{project}/subscriptions/{sub}`.
+	Name string `json:"name,omitempty"`
+	// PushConfig: Optional. If push delivery is used with this subscription, this
+	// field is used to configure it.
+	PushConfig *PushConfig `json:"pushConfig,omitempty"`
+	// RetainAckedMessages: Optional. Indicates whether to retain acknowledged
+	// messages. If true, then messages are not expunged from the subscription's
+	// backlog, even if they are acknowledged, until they fall out of the
+	// `message_retention_duration` window. This must be true if you would like to
+	// [`Seek` to a timestamp]
+	// (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) in the
+	// past to replay previously-acknowledged messages.
+	RetainAckedMessages bool `json:"retainAckedMessages,omitempty"`
+	// RetryPolicy: Optional. A policy that specifies how Pub/Sub retries message
+	// delivery for this subscription. If not set, the default retry policy is
+	// applied. This generally implies that messages will be retried as soon as
+	// possible for healthy subscribers. RetryPolicy will be triggered on NACKs or
+	// acknowledgement deadline exceeded events for a given message.
+	RetryPolicy *RetryPolicy `json:"retryPolicy,omitempty"`
+	// State: Output only. An output-only field indicating whether or not the
+	// subscription can receive messages.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Default value. This value is unused.
+	//   "ACTIVE" - The subscription can actively receive messages
+	//   "RESOURCE_ERROR" - The subscription cannot receive messages because of an
+	// error with the resource to which it pushes messages. See the more detailed
+	// error state in the corresponding configuration.
+	State string `json:"state,omitempty"`
+	// TopicMessageRetentionDuration: Output only. Indicates the minimum duration
+	// for which a message is retained after it is published to the subscription's
+	// topic. If this field is set, messages published to the subscription's topic
+	// in the last `topic_message_retention_duration` are always available to
+	// subscribers. See the `message_retention_duration` field in `Topic`. This
+	// field is set only in responses from the server; it is ignored if it is set
+	// in any requests.
+	TopicMessageRetentionDuration string `json:"topicMessageRetentionDuration,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "AckDeadlineSeconds") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "AckDeadlineSeconds") to include
+	// in API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *GooglePubsubV1Subscription) MarshalJSON() ([]byte, error) {
+	type NoMethod GooglePubsubV1Subscription
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // LinkedResource: Reference to a linked resource tracked by this Subscription.
 type LinkedResource struct {
 	// LinkedDataset: Output only. Name of the linked dataset, e.g.
 	// projects/subscriberproject/datasets/linked_dataset
 	LinkedDataset string `json:"linkedDataset,omitempty"`
+	// LinkedPubsubSubscription: Output only. Name of the Pub/Sub subscription,
+	// e.g. projects/subscriberproject/subscriptions/subscriptions/sub_id
+	LinkedPubsubSubscription string `json:"linkedPubsubSubscription,omitempty"`
+	// Listing: Output only. Listing for which linked resource is created.
+	Listing string `json:"listing,omitempty"`
 	// ForceSendFields is a list of field names (e.g. "LinkedDataset") to
 	// unconditionally include in API requests. By default, fields with empty or
 	// default values are omitted from API requests. See
@@ -966,6 +1423,17 @@
 	// tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF).
 	// Default value is an empty string. Max length: 2000 bytes.
 	Description string `json:"description,omitempty"`
+	// DiscoveryType: Optional. Type of discovery of the listing on the discovery
+	// page.
+	//
+	// Possible values:
+	//   "DISCOVERY_TYPE_UNSPECIFIED" - Unspecified. Defaults to
+	// DISCOVERY_TYPE_PRIVATE.
+	//   "DISCOVERY_TYPE_PRIVATE" - The Data exchange/listing can be discovered in
+	// the 'Private' results list.
+	//   "DISCOVERY_TYPE_PUBLIC" - The Data exchange/listing can be discovered in
+	// the 'Public' results list.
+	DiscoveryType string `json:"discoveryType,omitempty"`
 	// DisplayName: Required. Human-readable display name of the listing. The
 	// display name must contain only Unicode letters, numbers (0-9), underscores
 	// (_), dashes (-), spaces ( ), ampersands (&) and can't start or end with
@@ -988,10 +1456,19 @@
 	// Publisher: Optional. Details of the publisher who owns the listing and who
 	// can share the source data.
 	Publisher *Publisher `json:"publisher,omitempty"`
+	// PubsubTopic: Required. Pub/Sub topic source.
+	PubsubTopic *PubSubTopicSource `json:"pubsubTopic,omitempty"`
 	// RequestAccess: Optional. Email or URL of the request access of the listing.
 	// Subscribers can use this reference to request access. Max Length: 1000
 	// bytes.
 	RequestAccess string `json:"requestAccess,omitempty"`
+	// ResourceType: Output only. Listing shared asset type.
+	//
+	// Possible values:
+	//   "SHARED_RESOURCE_TYPE_UNSPECIFIED" - Not specified.
+	//   "BIGQUERY_DATASET" - BigQuery Dataset Asset.
+	//   "PUBSUB_TOPIC" - Pub/Sub Topic Asset.
+	ResourceType string `json:"resourceType,omitempty"`
 	// RestrictedExportConfig: Optional. If set, restricted export configuration
 	// will be propagated and enforced on the linked dataset.
 	RestrictedExportConfig *RestrictedExportConfig `json:"restrictedExportConfig,omitempty"`
@@ -1023,6 +1500,63 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// NoWrapper: Sets the `data` field as the HTTP body for delivery.
+type NoWrapper struct {
+	// WriteMetadata: Optional. When true, writes the Pub/Sub message metadata to
+	// `x-goog-pubsub-:` headers of the HTTP request. Writes the Pub/Sub message
+	// attributes to `:` headers of the HTTP request.
+	WriteMetadata bool `json:"writeMetadata,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "WriteMetadata") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "WriteMetadata") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *NoWrapper) MarshalJSON() ([]byte, error) {
+	type NoMethod NoWrapper
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
+// OidcToken: Contains information needed for generating an OpenID Connect
+// token (https://developers.google.com/identity/protocols/OpenIDConnect).
+type OidcToken struct {
+	// Audience: Optional. Audience to be used when generating OIDC token. The
+	// audience claim identifies the recipients that the JWT is intended for. The
+	// audience value is a single case-sensitive string. Having multiple values
+	// (array) for the audience field is not supported. More info about the OIDC
+	// JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3
+	// Note: if not specified, the Push endpoint URL will be used.
+	Audience string `json:"audience,omitempty"`
+	// ServiceAccountEmail: Optional. Service account email
+	// (https://cloud.google.com/iam/docs/service-accounts) used for generating the
+	// OIDC token. For more information on setting up authentication, see Push
+	// subscriptions (https://cloud.google.com/pubsub/docs/push).
+	ServiceAccountEmail string `json:"serviceAccountEmail,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Audience") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Audience") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *OidcToken) MarshalJSON() ([]byte, error) {
+	type NoMethod OidcToken
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // Operation: This resource represents a long-running operation that is the
 // result of a network API call.
 type Operation struct {
@@ -1201,6 +1735,33 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// PubSubTopicSource: Pub/Sub topic source.
+type PubSubTopicSource struct {
+	// DataAffinityRegions: Optional. Region hint on where the data might be
+	// published. Data affinity regions are modifiable. See go/regions for full
+	// listing of possible Cloud regions.
+	DataAffinityRegions []string `json:"dataAffinityRegions,omitempty"`
+	// Topic: Required. Resource name of the Pub/Sub topic source for this listing.
+	// e.g. projects/myproject/topics/topicId
+	Topic string `json:"topic,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "DataAffinityRegions") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "DataAffinityRegions") to include
+	// in API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *PubSubTopicSource) MarshalJSON() ([]byte, error) {
+	type NoMethod PubSubTopicSource
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // Publisher: Contains details of the listing publisher.
 type Publisher struct {
 	// Name: Optional. Name of the listing publisher.
@@ -1226,6 +1787,62 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// PubsubWrapper: The payload to the push endpoint is in the form of the JSON
+// representation of a PubsubMessage
+// (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage).
+type PubsubWrapper struct {
+}
+
+// PushConfig: Configuration for a push delivery endpoint.
+type PushConfig struct {
+	// Attributes: Optional. 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). If not present during the
+	// `CreateSubscription` call, it will default to 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 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: `attributes { "x-goog-version": "v1" }`
+	Attributes map[string]string `json:"attributes,omitempty"`
+	// NoWrapper: Optional. When set, the payload to the push endpoint is not
+	// wrapped.
+	NoWrapper *NoWrapper `json:"noWrapper,omitempty"`
+	// OidcToken: Optional. If specified, Pub/Sub will generate and attach an OIDC
+	// JWT token as an `Authorization` header in the HTTP request for every pushed
+	// message.
+	OidcToken *OidcToken `json:"oidcToken,omitempty"`
+	// PubsubWrapper: Optional. When set, the payload to the push endpoint is in
+	// the form of the JSON representation of a PubsubMessage
+	// (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage).
+	PubsubWrapper *PubsubWrapper `json:"pubsubWrapper,omitempty"`
+	// PushEndpoint: Optional. A URL locating the endpoint to which messages should
+	// be pushed. For example, a Webhook endpoint might use
+	// `https://example.com/push`.
+	PushEndpoint string `json:"pushEndpoint,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Attributes") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Attributes") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *PushConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod PushConfig
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // RefreshSubscriptionRequest: Message for refreshing a subscription.
 type RefreshSubscriptionRequest struct {
 }
@@ -1311,6 +1928,40 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// RetryPolicy: A policy that specifies how Pub/Sub retries message delivery.
+// Retry delay will be exponential based on provided minimum and maximum
+// backoffs. https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy
+// will be triggered on NACKs or acknowledgement deadline exceeded events for a
+// given message. Retry Policy is implemented on a best effort basis. At times,
+// the delay between consecutive deliveries may not match the configuration.
+// That is, delay can be more or less than configured backoff.
+type RetryPolicy struct {
+	// MaximumBackoff: Optional. The maximum delay between consecutive deliveries
+	// of a given message. Value should be between 0 and 600 seconds. Defaults to
+	// 600 seconds.
+	MaximumBackoff string `json:"maximumBackoff,omitempty"`
+	// MinimumBackoff: Optional. The minimum delay between consecutive deliveries
+	// of a given message. Value should be between 0 and 600 seconds. Defaults to
+	// 10 seconds.
+	MinimumBackoff string `json:"minimumBackoff,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "MaximumBackoff") to
+	// unconditionally include in API requests. By default, fields with empty or
+	// default values are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "MaximumBackoff") to include in
+	// API requests with the JSON null value. By default, fields with empty values
+	// are omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *RetryPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod RetryPolicy
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // RevokeSubscriptionRequest: Message for revoking a subscription.
 type RevokeSubscriptionRequest struct {
 }
@@ -1322,7 +1973,7 @@
 	googleapi.ServerResponse `json:"-"`
 }
 
-// SelectedResource: Resource in this dataset that are selectively shared.
+// SelectedResource: Resource in this dataset that is selectively shared.
 type SelectedResource struct {
 	// Table: Optional. Format: For table:
 	// `projects/{projectId}/datasets/{datasetId}/tables/{tableId}`
@@ -1493,6 +2144,9 @@
 	// DestinationDataset: Input only. BigQuery destination dataset to create for
 	// the subscriber.
 	DestinationDataset *DestinationDataset `json:"destinationDataset,omitempty"`
+	// DestinationPubsubSubscription: Required. Input only. Destination Pub/Sub
+	// subscription to create for the subscriber.
+	DestinationPubsubSubscription *DestinationPubSubSubscription `json:"destinationPubsubSubscription,omitempty"`
 	// ForceSendFields is a list of field names (e.g. "DestinationDataset") to
 	// unconditionally include in API requests. By default, fields with empty or
 	// default values are omitted from API requests. See
@@ -1555,6 +2209,9 @@
 	// projects/123/datasets/my_dataset For listing-level subscriptions, this is a
 	// map of size 1. Only contains values if state == STATE_ACTIVE.
 	LinkedDatasetMap map[string]LinkedResource `json:"linkedDatasetMap,omitempty"`
+	// LinkedResources: Output only. Linked resources created in the subscription.
+	// Only contains values if state = STATE_ACTIVE.
+	LinkedResources []*LinkedResource `json:"linkedResources,omitempty"`
 	// Listing: Output only. Resource name of the source Listing. e.g.
 	// projects/123/locations/US/dataExchanges/456/listings/789
 	Listing string `json:"listing,omitempty"`
@@ -1567,6 +2224,13 @@
 	// OrganizationId: Output only. Organization of the project this subscription
 	// belongs to.
 	OrganizationId string `json:"organizationId,omitempty"`
+	// ResourceType: Output only. Listing shared asset type.
+	//
+	// Possible values:
+	//   "SHARED_RESOURCE_TYPE_UNSPECIFIED" - Not specified.
+	//   "BIGQUERY_DATASET" - BigQuery Dataset Asset.
+	//   "PUBSUB_TOPIC" - Pub/Sub Topic Asset.
+	ResourceType string `json:"resourceType,omitempty"`
 	// State: Output only. Current state of the subscription.
 	//
 	// Possible values:
@@ -1653,6 +2317,11 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// TextConfig: Configuration for writing message data in text format. Message
+// payloads will be written to files as raw text, separated by a newline.
+type TextConfig struct {
+}
+
 type OrganizationsLocationsDataExchangesListCall struct {
 	s            *Service
 	organization string
diff --git a/analyticshub/v1beta1/analyticshub-api.json b/analyticshub/v1beta1/analyticshub-api.json
index ecc9f77..bc904e1 100644
--- a/analyticshub/v1beta1/analyticshub-api.json
+++ b/analyticshub/v1beta1/analyticshub-api.json
@@ -695,7 +695,7 @@
       }
     }
   },
-  "revision": "20240122",
+  "revision": "20240624",
   "rootUrl": "https://analyticshub.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -938,6 +938,16 @@
           "description": "Output only. Name of the linked dataset, e.g. projects/subscriberproject/datasets/linked_dataset",
           "readOnly": true,
           "type": "string"
+        },
+        "linkedPubsubSubscription": {
+          "description": "Output only. Name of the Pub/Sub subscription, e.g. projects/subscriberproject/subscriptions/subscriptions/sub_id",
+          "readOnly": true,
+          "type": "string"
+        },
+        "listing": {
+          "description": "Output only. Listing for which linked resource is created.",
+          "readOnly": true,
+          "type": "string"
         }
       },
       "type": "object"
@@ -1095,7 +1105,7 @@
         },
         "restrictedExportConfig": {
           "$ref": "RestrictedExportConfig",
-          "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
+          "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset. This is a required field for data clean room exchanges."
         },
         "state": {
           "description": "Output only. Current state of the listing.",
@@ -1307,6 +1317,14 @@
           "readOnly": true,
           "type": "object"
         },
+        "linkedResources": {
+          "description": "Output only. Linked resources created in the subscription. Only contains values if state = STATE_ACTIVE.",
+          "items": {
+            "$ref": "LinkedResource"
+          },
+          "readOnly": true,
+          "type": "array"
+        },
         "listing": {
           "description": "Output only. Resource name of the source Listing. e.g. projects/123/locations/US/dataExchanges/456/listings/789",
           "readOnly": true,
@@ -1327,6 +1345,21 @@
           "readOnly": true,
           "type": "string"
         },
+        "resourceType": {
+          "description": "Output only. Listing shared asset type.",
+          "enum": [
+            "SHARED_RESOURCE_TYPE_UNSPECIFIED",
+            "BIGQUERY_DATASET",
+            "PUBSUB_TOPIC"
+          ],
+          "enumDescriptions": [
+            "Not specified.",
+            "BigQuery Dataset Asset.",
+            "Pub/Sub Topic Asset."
+          ],
+          "readOnly": true,
+          "type": "string"
+        },
         "state": {
           "description": "Output only. Current state of the subscription.",
           "enum": [
diff --git a/analyticshub/v1beta1/analyticshub-gen.go b/analyticshub/v1beta1/analyticshub-gen.go
index bcf6489..fed2d7b 100644
--- a/analyticshub/v1beta1/analyticshub-gen.go
+++ b/analyticshub/v1beta1/analyticshub-gen.go
@@ -706,6 +706,11 @@
 	// LinkedDataset: Output only. Name of the linked dataset, e.g.
 	// projects/subscriberproject/datasets/linked_dataset
 	LinkedDataset string `json:"linkedDataset,omitempty"`
+	// LinkedPubsubSubscription: Output only. Name of the Pub/Sub subscription,
+	// e.g. projects/subscriberproject/subscriptions/subscriptions/sub_id
+	LinkedPubsubSubscription string `json:"linkedPubsubSubscription,omitempty"`
+	// Listing: Output only. Listing for which linked resource is created.
+	Listing string `json:"listing,omitempty"`
 	// ForceSendFields is a list of field names (e.g. "LinkedDataset") to
 	// unconditionally include in API requests. By default, fields with empty or
 	// default values are omitted from API requests. See
@@ -874,7 +879,8 @@
 	// bytes.
 	RequestAccess string `json:"requestAccess,omitempty"`
 	// RestrictedExportConfig: Optional. If set, restricted export configuration
-	// will be propagated and enforced on the linked dataset.
+	// will be propagated and enforced on the linked dataset. This is a required
+	// field for data clean room exchanges.
 	RestrictedExportConfig *RestrictedExportConfig `json:"restrictedExportConfig,omitempty"`
 	// State: Output only. Current state of the listing.
 	//
@@ -1212,6 +1218,9 @@
 	// projects/123/datasets/my_dataset For listing-level subscriptions, this is a
 	// map of size 1. Only contains values if state == STATE_ACTIVE.
 	LinkedDatasetMap map[string]LinkedResource `json:"linkedDatasetMap,omitempty"`
+	// LinkedResources: Output only. Linked resources created in the subscription.
+	// Only contains values if state = STATE_ACTIVE.
+	LinkedResources []*LinkedResource `json:"linkedResources,omitempty"`
 	// Listing: Output only. Resource name of the source Listing. e.g.
 	// projects/123/locations/US/dataExchanges/456/listings/789
 	Listing string `json:"listing,omitempty"`
@@ -1224,6 +1233,13 @@
 	// OrganizationId: Output only. Organization of the project this subscription
 	// belongs to.
 	OrganizationId string `json:"organizationId,omitempty"`
+	// ResourceType: Output only. Listing shared asset type.
+	//
+	// Possible values:
+	//   "SHARED_RESOURCE_TYPE_UNSPECIFIED" - Not specified.
+	//   "BIGQUERY_DATASET" - BigQuery Dataset Asset.
+	//   "PUBSUB_TOPIC" - Pub/Sub Topic Asset.
+	ResourceType string `json:"resourceType,omitempty"`
 	// State: Output only. Current state of the subscription.
 	//
 	// Possible values:
diff --git a/chat/v1/chat-api.json b/chat/v1/chat-api.json
index cc6d54d..86f1a77 100644
--- a/chat/v1/chat-api.json
+++ b/chat/v1/chat-api.json
@@ -1241,7 +1241,7 @@
       }
     }
   },
-  "revision": "20240613",
+  "revision": "20240623",
   "rootUrl": "https://chat.googleapis.com/",
   "schemas": {
     "AccessoryWidget": {
@@ -1833,7 +1833,7 @@
         },
         "common": {
           "$ref": "CommonEventObject",
-          "description": "Represents information about the user's client, such as locale, host app, and platform. For Chat apps, `CommonEventObject` includes information submitted by users interacting with [dialogs](https://developers.google.com/workspace/chat/dialogs), like data entered on a card."
+          "description": "Represents informatmessage_visibilityion about the user's client, such as locale, host app, and platform. For Chat apps, `CommonEventObject` includes information submitted by users interacting with [dialogs](https://developers.google.com/workspace/chat/dialogs), like data entered on a card."
         },
         "configCompleteRedirectUrl": {
           "description": "The URL the Chat app should redirect the user to after they have completed an authorization or configuration flow outside of Google Chat. For more information, see [Connect a Chat app with other services \u0026 tools](https://developers.google.com/workspace/chat/connect-web-services-tools).",
diff --git a/chat/v1/chat-gen.go b/chat/v1/chat-gen.go
index 04bef42..a27f8cc 100644
--- a/chat/v1/chat-gen.go
+++ b/chat/v1/chat-gen.go
@@ -1246,9 +1246,9 @@
 	// data input by users on cards
 	// (https://developers.google.com/workspace/chat/read-form-data).
 	Action *FormAction `json:"action,omitempty"`
-	// Common: Represents information about the user's client, such as locale, host
-	// app, and platform. For Chat apps, `CommonEventObject` includes information
-	// submitted by users interacting with dialogs
+	// Common: Represents informatmessage_visibilityion about the user's client,
+	// such as locale, host app, and platform. For Chat apps, `CommonEventObject`
+	// includes information submitted by users interacting with dialogs
 	// (https://developers.google.com/workspace/chat/dialogs), like data entered on
 	// a card.
 	Common *CommonEventObject `json:"common,omitempty"`
diff --git a/containeranalysis/v1/containeranalysis-api.json b/containeranalysis/v1/containeranalysis-api.json
index 3e062bb..a64e293 100644
--- a/containeranalysis/v1/containeranalysis-api.json
+++ b/containeranalysis/v1/containeranalysis-api.json
@@ -1072,7 +1072,7 @@
       }
     }
   },
-  "revision": "20240614",
+  "revision": "20240625",
   "rootUrl": "https://containeranalysis.googleapis.com/",
   "schemas": {
     "AliasContext": {
@@ -3748,6 +3748,10 @@
         "sbomStatus": {
           "$ref": "SBOMStatus",
           "description": "The status of an SBOM generation."
+        },
+        "vulnerabilityAttestation": {
+          "$ref": "VulnerabilityAttestation",
+          "description": "The status of an vulnerability attestation generation."
         }
       },
       "type": "object"
@@ -5901,6 +5905,36 @@
       },
       "type": "object"
     },
+    "VulnerabilityAttestation": {
+      "description": "The status of an vulnerability attestation generation.",
+      "id": "VulnerabilityAttestation",
+      "properties": {
+        "error": {
+          "description": "If failure, the error reason for why the attestation generation failed.",
+          "type": "string"
+        },
+        "lastAttemptTime": {
+          "description": "The last time we attempted to generate an attestation.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "state": {
+          "description": "The success/failure state of the latest attestation attempt.",
+          "enum": [
+            "VULNERABILITY_ATTESTATION_STATE_UNSPECIFIED",
+            "SUCCESS",
+            "FAILURE"
+          ],
+          "enumDescriptions": [
+            "Default unknown state.",
+            "Attestation was successfully generated and stored.",
+            "Attestation was unsuccessfully generated and stored."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "VulnerabilityNote": {
       "description": "A security vulnerability that can be found in resources.",
       "id": "VulnerabilityNote",
diff --git a/containeranalysis/v1/containeranalysis-gen.go b/containeranalysis/v1/containeranalysis-gen.go
index 6322a42..33b7f6a 100644
--- a/containeranalysis/v1/containeranalysis-gen.go
+++ b/containeranalysis/v1/containeranalysis-gen.go
@@ -3286,6 +3286,9 @@
 	LastScanTime string `json:"lastScanTime,omitempty"`
 	// SbomStatus: The status of an SBOM generation.
 	SbomStatus *SBOMStatus `json:"sbomStatus,omitempty"`
+	// VulnerabilityAttestation: The status of an vulnerability attestation
+	// generation.
+	VulnerabilityAttestation *VulnerabilityAttestation `json:"vulnerabilityAttestation,omitempty"`
 	// ForceSendFields is a list of field names (e.g. "AnalysisCompleted") to
 	// unconditionally include in API requests. By default, fields with empty or
 	// default values are omitted from API requests. See
@@ -6094,6 +6097,39 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// VulnerabilityAttestation: The status of an vulnerability attestation
+// generation.
+type VulnerabilityAttestation struct {
+	// Error: If failure, the error reason for why the attestation generation
+	// failed.
+	Error string `json:"error,omitempty"`
+	// LastAttemptTime: The last time we attempted to generate an attestation.
+	LastAttemptTime string `json:"lastAttemptTime,omitempty"`
+	// State: The success/failure state of the latest attestation attempt.
+	//
+	// Possible values:
+	//   "VULNERABILITY_ATTESTATION_STATE_UNSPECIFIED" - Default unknown state.
+	//   "SUCCESS" - Attestation was successfully generated and stored.
+	//   "FAILURE" - Attestation was unsuccessfully generated and stored.
+	State string `json:"state,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Error") to unconditionally
+	// include in API requests. By default, fields with empty or default values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Error") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *VulnerabilityAttestation) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerabilityAttestation
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // VulnerabilityNote: A security vulnerability that can be found in resources.
 type VulnerabilityNote struct {
 	// CvssScore: The CVSS score of this vulnerability. CVSS score is on a scale of
diff --git a/containeranalysis/v1alpha1/containeranalysis-api.json b/containeranalysis/v1alpha1/containeranalysis-api.json
index 73356be..d6062db 100644
--- a/containeranalysis/v1alpha1/containeranalysis-api.json
+++ b/containeranalysis/v1alpha1/containeranalysis-api.json
@@ -1240,7 +1240,7 @@
       }
     }
   },
-  "revision": "20240614",
+  "revision": "20240625",
   "rootUrl": "https://containeranalysis.googleapis.com/",
   "schemas": {
     "AnalysisCompleted": {
@@ -3716,6 +3716,11 @@
           "$ref": "SBOMStatus",
           "description": "Output only. The status of an SBOM generation.",
           "readOnly": true
+        },
+        "vulnerabilityAttestation": {
+          "$ref": "VulnerabilityAttestation",
+          "description": "Output only. The status of a vulnerability attestation generation.",
+          "readOnly": true
         }
       },
       "type": "object"
@@ -6728,6 +6733,39 @@
       },
       "type": "object"
     },
+    "VulnerabilityAttestation": {
+      "description": "The status of a vulnerability attestation generation.",
+      "id": "VulnerabilityAttestation",
+      "properties": {
+        "error": {
+          "description": "Output only. If failure, the error reason for why the attestation generation failed.",
+          "readOnly": true,
+          "type": "string"
+        },
+        "lastAttemptTime": {
+          "description": "Output only. The last time we attempted to generate an attestation.",
+          "format": "google-datetime",
+          "readOnly": true,
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. The success/failure state of the latest attestation attempt.",
+          "enum": [
+            "VULNERABILITY_ATTESTATION_STATE_UNSPECIFIED",
+            "SUCCESS",
+            "FAILURE"
+          ],
+          "enumDescriptions": [
+            "Default unknown state.",
+            "Attestation was successfully generated and stored.",
+            "Attestation was unsuccessfully generated and stored."
+          ],
+          "readOnly": true,
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "VulnerabilityDetails": {
       "description": "Used by Occurrence to point to where the vulnerability exists and how to fix it.",
       "id": "VulnerabilityDetails",
diff --git a/containeranalysis/v1alpha1/containeranalysis-gen.go b/containeranalysis/v1alpha1/containeranalysis-gen.go
index c63880a..6ff39bf 100644
--- a/containeranalysis/v1alpha1/containeranalysis-gen.go
+++ b/containeranalysis/v1alpha1/containeranalysis-gen.go
@@ -3122,6 +3122,9 @@
 	Operation *Operation `json:"operation,omitempty"`
 	// SbomStatus: Output only. The status of an SBOM generation.
 	SbomStatus *SBOMStatus `json:"sbomStatus,omitempty"`
+	// VulnerabilityAttestation: Output only. The status of a vulnerability
+	// attestation generation.
+	VulnerabilityAttestation *VulnerabilityAttestation `json:"vulnerabilityAttestation,omitempty"`
 	// ForceSendFields is a list of field names (e.g. "AnalysisCompleted") to
 	// unconditionally include in API requests. By default, fields with empty or
 	// default values are omitted from API requests. See
@@ -6785,6 +6788,41 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// VulnerabilityAttestation: The status of a vulnerability attestation
+// generation.
+type VulnerabilityAttestation struct {
+	// Error: Output only. If failure, the error reason for why the attestation
+	// generation failed.
+	Error string `json:"error,omitempty"`
+	// LastAttemptTime: Output only. The last time we attempted to generate an
+	// attestation.
+	LastAttemptTime string `json:"lastAttemptTime,omitempty"`
+	// State: Output only. The success/failure state of the latest attestation
+	// attempt.
+	//
+	// Possible values:
+	//   "VULNERABILITY_ATTESTATION_STATE_UNSPECIFIED" - Default unknown state.
+	//   "SUCCESS" - Attestation was successfully generated and stored.
+	//   "FAILURE" - Attestation was unsuccessfully generated and stored.
+	State string `json:"state,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Error") to unconditionally
+	// include in API requests. By default, fields with empty or default values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Error") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *VulnerabilityAttestation) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerabilityAttestation
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // VulnerabilityDetails: Used by Occurrence to point to where the vulnerability
 // exists and how to fix it.
 type VulnerabilityDetails struct {
diff --git a/dataflow/v1b3/dataflow-api.json b/dataflow/v1b3/dataflow-api.json
index 05e0449..c327ef4 100644
--- a/dataflow/v1b3/dataflow-api.json
+++ b/dataflow/v1b3/dataflow-api.json
@@ -2197,7 +2197,7 @@
       }
     }
   },
-  "revision": "20240603",
+  "revision": "20240624",
   "rootUrl": "https://dataflow.googleapis.com/",
   "schemas": {
     "ApproximateProgress": {
@@ -2967,7 +2967,7 @@
           "description": "Configuration options for sampling elements from a running pipeline."
         },
         "enableHotKeyLogging": {
-          "description": "When true, enables the logging of the literal hot key to the user's Cloud Logging.",
+          "description": "Optional. When true, enables the logging of the literal hot key to the user's Cloud Logging.",
           "type": "boolean"
         }
       },
@@ -3141,12 +3141,12 @@
           "type": "string"
         },
         "dataset": {
-          "description": "The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}",
+          "description": "Optional. The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}",
           "type": "string"
         },
         "debugOptions": {
           "$ref": "DebugOptions",
-          "description": "Any debugging options to be supplied to the job."
+          "description": "Optional. Any debugging options to be supplied to the job."
         },
         "experiments": {
           "description": "The list of experiments to enable. This field should be used for SDK related experiments and not for service related experiments. The proper field for service related experiments is service_options.",
@@ -3156,7 +3156,7 @@
           "type": "array"
         },
         "flexResourceSchedulingGoal": {
-          "description": "Which Flexible Resource Scheduling mode to run in.",
+          "description": "Optional. Which Flexible Resource Scheduling mode to run in.",
           "enum": [
             "FLEXRS_UNSPECIFIED",
             "FLEXRS_SPEED_OPTIMIZED",
@@ -3186,11 +3186,11 @@
           "type": "object"
         },
         "serviceAccountEmail": {
-          "description": "Identity to run virtual machines as. Defaults to the default account.",
+          "description": "Optional. Identity to run virtual machines as. Defaults to the default account.",
           "type": "string"
         },
         "serviceKmsKeyName": {
-          "description": "If set, contains the Cloud KMS key identifier used to encrypt data at rest, AKA a Customer Managed Encryption Key (CMEK). Format: projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
+          "description": "Optional. If set, contains the Cloud KMS key identifier used to encrypt data at rest, AKA a Customer Managed Encryption Key (CMEK). Format: projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY",
           "type": "string"
         },
         "serviceOptions": {
@@ -3262,11 +3262,11 @@
           "type": "array"
         },
         "workerRegion": {
-          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region.",
+          "description": "Optional. The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region.",
           "type": "string"
         },
         "workerZone": {
-          "description": "The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity.",
+          "description": "Optional. The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity.",
           "type": "string"
         }
       },
@@ -3935,7 +3935,7 @@
           "type": "object"
         },
         "location": {
-          "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains this job.",
+          "description": "Optional. The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains this job.",
           "type": "string"
         },
         "name": {
@@ -4005,6 +4005,11 @@
           "description": "Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests.",
           "type": "boolean"
         },
+        "serviceResources": {
+          "$ref": "ServiceResources",
+          "description": "Output only. Resources used by the Dataflow Service to run the job.",
+          "readOnly": true
+        },
         "stageStates": {
           "description": "This field may be mutated by the Cloud Dataflow service; callers cannot mutate it.",
           "items": {
@@ -4039,7 +4044,7 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "The map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.",
+          "description": "Optional. The map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.",
           "type": "object"
         },
         "type": {
@@ -5881,6 +5886,21 @@
       },
       "type": "object"
     },
+    "ServiceResources": {
+      "description": "Resources used by the Dataflow Service to run the job.",
+      "id": "ServiceResources",
+      "properties": {
+        "zones": {
+          "description": "Output only. List of Cloud Zones being used by the Dataflow Service for this job. Example: us-central1-c",
+          "items": {
+            "type": "string"
+          },
+          "readOnly": true,
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "ShellTask": {
       "description": "A task which consists of a shell command for the worker to execute.",
       "id": "ShellTask",
diff --git a/dataflow/v1b3/dataflow-gen.go b/dataflow/v1b3/dataflow-gen.go
index fccc7fd..086da2f 100644
--- a/dataflow/v1b3/dataflow-gen.go
+++ b/dataflow/v1b3/dataflow-gen.go
@@ -1349,8 +1349,8 @@
 	// DataSampling: Configuration options for sampling elements from a running
 	// pipeline.
 	DataSampling *DataSamplingConfig `json:"dataSampling,omitempty"`
-	// EnableHotKeyLogging: When true, enables the logging of the literal hot key
-	// to the user's Cloud Logging.
+	// EnableHotKeyLogging: Optional. When true, enables the logging of the literal
+	// hot key to the user's Cloud Logging.
 	EnableHotKeyLogging bool `json:"enableHotKeyLogging,omitempty"`
 	// ForceSendFields is a list of field names (e.g. "DataSampling") to
 	// unconditionally include in API requests. By default, fields with empty or
@@ -1602,18 +1602,18 @@
 	// This should be in the form of the API service name, e.g.
 	// "compute.googleapis.com".
 	ClusterManagerApiService string `json:"clusterManagerApiService,omitempty"`
-	// Dataset: The dataset for the current project where various workflow related
-	// tables are stored. The supported resource type is: Google BigQuery:
-	// bigquery.googleapis.com/{dataset}
+	// Dataset: Optional. The dataset for the current project where various
+	// workflow related tables are stored. The supported resource type is: Google
+	// BigQuery: bigquery.googleapis.com/{dataset}
 	Dataset string `json:"dataset,omitempty"`
-	// DebugOptions: Any debugging options to be supplied to the job.
+	// DebugOptions: Optional. Any debugging options to be supplied to the job.
 	DebugOptions *DebugOptions `json:"debugOptions,omitempty"`
 	// Experiments: The list of experiments to enable. This field should be used
 	// for SDK related experiments and not for service related experiments. The
 	// proper field for service related experiments is service_options.
 	Experiments []string `json:"experiments,omitempty"`
-	// FlexResourceSchedulingGoal: Which Flexible Resource Scheduling mode to run
-	// in.
+	// FlexResourceSchedulingGoal: Optional. Which Flexible Resource Scheduling
+	// mode to run in.
 	//
 	// Possible values:
 	//   "FLEXRS_UNSPECIFIED" - Run in the default mode.
@@ -1627,11 +1627,12 @@
 	// the SDK pipeline options on the worker in a language agnostic and platform
 	// independent way.
 	SdkPipelineOptions googleapi.RawMessage `json:"sdkPipelineOptions,omitempty"`
-	// ServiceAccountEmail: Identity to run virtual machines as. Defaults to the
-	// default account.
+	// ServiceAccountEmail: Optional. Identity to run virtual machines as. Defaults
+	// to the default account.
 	ServiceAccountEmail string `json:"serviceAccountEmail,omitempty"`
-	// ServiceKmsKeyName: If set, contains the Cloud KMS key identifier used to
-	// encrypt data at rest, AKA a Customer Managed Encryption Key (CMEK). Format:
+	// ServiceKmsKeyName: Optional. If set, contains the Cloud KMS key identifier
+	// used to encrypt data at rest, AKA a Customer Managed Encryption Key (CMEK).
+	// Format:
 	// projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
 	ServiceKmsKeyName string `json:"serviceKmsKeyName,omitempty"`
 	// ServiceOptions: Optional. The list of service options to enable. This field
@@ -1684,13 +1685,13 @@
 	// WorkerPools: The worker pools. At least one "harness" worker pool must be
 	// specified in order for the job to have workers.
 	WorkerPools []*WorkerPool `json:"workerPools,omitempty"`
-	// WorkerRegion: The Compute Engine region
+	// WorkerRegion: Optional. The Compute Engine region
 	// (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which
 	// worker processing should occur, e.g. "us-west1". Mutually exclusive with
 	// worker_zone. If neither worker_region nor worker_zone is specified, default
 	// to the control plane's region.
 	WorkerRegion string `json:"workerRegion,omitempty"`
-	// WorkerZone: The Compute Engine zone
+	// WorkerZone: Optional. The Compute Engine zone
 	// (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which
 	// worker processing should occur, e.g. "us-west1-a". Mutually exclusive with
 	// worker_region. If neither worker_region nor worker_zone is specified, a zone
@@ -2577,7 +2578,7 @@
 	// [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally
 	// constrained to be <= 128 bytes in size.
 	Labels map[string]string `json:"labels,omitempty"`
-	// Location: The [regional endpoint]
+	// Location: Optional. The [regional endpoint]
 	// (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that
 	// contains this job.
 	Location string `json:"location,omitempty"`
@@ -2670,6 +2671,9 @@
 	// SatisfiesPzs: Reserved for future use. This field is set only in responses
 	// from the server; it is ignored if it is set in any requests.
 	SatisfiesPzs bool `json:"satisfiesPzs,omitempty"`
+	// ServiceResources: Output only. Resources used by the Dataflow Service to run
+	// the job.
+	ServiceResources *ServiceResources `json:"serviceResources,omitempty"`
 	// StageStates: This field may be mutated by the Cloud Dataflow service;
 	// callers cannot mutate it.
 	StageStates []*ExecutionStageState `json:"stageStates,omitempty"`
@@ -2692,8 +2696,8 @@
 	// files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object}
 	// bucket.storage.googleapis.com/{object}
 	TempFiles []string `json:"tempFiles,omitempty"`
-	// TransformNameMapping: The map of transform name prefixes of the job to be
-	// replaced to the corresponding name prefixes of the new job.
+	// TransformNameMapping: Optional. The map of transform name prefixes of the
+	// job to be replaced to the corresponding name prefixes of the new job.
 	TransformNameMapping map[string]string `json:"transformNameMapping,omitempty"`
 	// Type: Optional. The type of Dataflow job.
 	//
@@ -4947,6 +4951,29 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// ServiceResources: Resources used by the Dataflow Service to run the job.
+type ServiceResources struct {
+	// Zones: Output only. List of Cloud Zones being used by the Dataflow Service
+	// for this job. Example: us-central1-c
+	Zones []string `json:"zones,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Zones") to unconditionally
+	// include in API requests. By default, fields with empty or default values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Zones") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *ServiceResources) MarshalJSON() ([]byte, error) {
+	type NoMethod ServiceResources
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // ShellTask: A task which consists of a shell command for the worker to
 // execute.
 type ShellTask struct {
diff --git a/dialogflow/v3beta1/dialogflow-api.json b/dialogflow/v3beta1/dialogflow-api.json
index d6402e9..0decc2b 100644
--- a/dialogflow/v3beta1/dialogflow-api.json
+++ b/dialogflow/v3beta1/dialogflow-api.json
@@ -5185,7 +5185,7 @@
       }
     }
   },
-  "revision": "20240605",
+  "revision": "20240617",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowCxV3AdvancedSettings": {
@@ -7002,11 +7002,11 @@
       "id": "GoogleCloudDialogflowCxV3TestConfig",
       "properties": {
         "flow": {
-          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow.",
+          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
           "type": "string"
         },
         "page": {
-          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow.",
+          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
           "type": "string"
         },
         "trackingParameters": {
@@ -13255,11 +13255,11 @@
       "id": "GoogleCloudDialogflowCxV3beta1TestConfig",
       "properties": {
         "flow": {
-          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow.",
+          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
           "type": "string"
         },
         "page": {
-          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow.",
+          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
           "type": "string"
         },
         "trackingParameters": {
diff --git a/dialogflow/v3beta1/dialogflow-gen.go b/dialogflow/v3beta1/dialogflow-gen.go
index ba4adab..a598145 100644
--- a/dialogflow/v3beta1/dialogflow-gen.go
+++ b/dialogflow/v3beta1/dialogflow-gen.go
@@ -3239,15 +3239,13 @@
 type GoogleCloudDialogflowCxV3TestConfig struct {
 	// Flow: Flow name to start the test case with. Format:
 	// `projects//locations//agents//flows/`. Only one of `flow` and `page` should
-	// be set to indicate the starting point of the test case. If both are set,
-	// `page` takes precedence over `flow`. If neither is set, the test case will
-	// start with start page on the default start flow.
+	// be set to indicate the starting point of the test case. If neither is set,
+	// the test case will start with start page on the default start flow.
 	Flow string `json:"flow,omitempty"`
 	// Page: The page to start the test case with. Format:
 	// `projects//locations//agents//flows//pages/`. Only one of `flow` and `page`
-	// should be set to indicate the starting point of the test case. If both are
-	// set, `page` takes precedence over `flow`. If neither is set, the test case
-	// will start with start page on the default start flow.
+	// should be set to indicate the starting point of the test case. If neither is
+	// set, the test case will start with start page on the default start flow.
 	Page string `json:"page,omitempty"`
 	// TrackingParameters: Session parameters to be compared when calculating
 	// differences.
@@ -11950,15 +11948,13 @@
 type GoogleCloudDialogflowCxV3beta1TestConfig struct {
 	// Flow: Flow name to start the test case with. Format:
 	// `projects//locations//agents//flows/`. Only one of `flow` and `page` should
-	// be set to indicate the starting point of the test case. If both are set,
-	// `page` takes precedence over `flow`. If neither is set, the test case will
-	// start with start page on the default start flow.
+	// be set to indicate the starting point of the test case. If neither is set,
+	// the test case will start with start page on the default start flow.
 	Flow string `json:"flow,omitempty"`
 	// Page: The page to start the test case with. Format:
 	// `projects//locations//agents//flows//pages/`. Only one of `flow` and `page`
-	// should be set to indicate the starting point of the test case. If both are
-	// set, `page` takes precedence over `flow`. If neither is set, the test case
-	// will start with start page on the default start flow.
+	// should be set to indicate the starting point of the test case. If neither is
+	// set, the test case will start with start page on the default start flow.
 	Page string `json:"page,omitempty"`
 	// TrackingParameters: Session parameters to be compared when calculating
 	// differences.
diff --git a/factchecktools/v1alpha1/factchecktools-api.json b/factchecktools/v1alpha1/factchecktools-api.json
index 6ccf5e2..9f14c9b 100644
--- a/factchecktools/v1alpha1/factchecktools-api.json
+++ b/factchecktools/v1alpha1/factchecktools-api.json
@@ -2,6 +2,9 @@
   "auth": {
     "oauth2": {
       "scopes": {
+        "https://www.googleapis.com/auth/factchecktools": {
+          "description": "Read, create, update, and delete your ClaimReview data."
+        },
         "https://www.googleapis.com/auth/userinfo.email": {
           "description": "See your primary Google Account email address"
         }
@@ -217,6 +220,7 @@
             "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
           },
           "scopes": [
+            "https://www.googleapis.com/auth/factchecktools",
             "https://www.googleapis.com/auth/userinfo.email"
           ]
         },
@@ -242,6 +246,7 @@
             "$ref": "GoogleProtobufEmpty"
           },
           "scopes": [
+            "https://www.googleapis.com/auth/factchecktools",
             "https://www.googleapis.com/auth/userinfo.email"
           ]
         },
@@ -267,6 +272,7 @@
             "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
           },
           "scopes": [
+            "https://www.googleapis.com/auth/factchecktools",
             "https://www.googleapis.com/auth/userinfo.email"
           ]
         },
@@ -310,6 +316,7 @@
             "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse"
           },
           "scopes": [
+            "https://www.googleapis.com/auth/factchecktools",
             "https://www.googleapis.com/auth/userinfo.email"
           ]
         },
@@ -338,13 +345,14 @@
             "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
           },
           "scopes": [
+            "https://www.googleapis.com/auth/factchecktools",
             "https://www.googleapis.com/auth/userinfo.email"
           ]
         }
       }
     }
   },
-  "revision": "20240326",
+  "revision": "20240626",
   "rootUrl": "https://factchecktools.googleapis.com/",
   "schemas": {
     "GoogleFactcheckingFactchecktoolsV1alpha1Claim": {
diff --git a/factchecktools/v1alpha1/factchecktools-gen.go b/factchecktools/v1alpha1/factchecktools-gen.go
index 0c29ffb..b42a7ef 100644
--- a/factchecktools/v1alpha1/factchecktools-gen.go
+++ b/factchecktools/v1alpha1/factchecktools-gen.go
@@ -34,6 +34,11 @@
 //
 // # Other authentication options
 //
+// By default, all available scopes (see "Constants") are used to authenticate.
+// To restrict scopes, use [google.golang.org/api/option.WithScopes]:
+//
+//	factchecktoolsService, err := factchecktools.NewService(ctx, option.WithScopes(factchecktools.UserinfoEmailScope))
+//
 // To use an API key for authentication (note: some APIs do not support API
 // keys), use [google.golang.org/api/option.WithAPIKey]:
 //
@@ -95,6 +100,9 @@
 
 // OAuth2 scopes used by this API.
 const (
+	// Read, create, update, and delete your ClaimReview data.
+	FactchecktoolsScope = "https://www.googleapis.com/auth/factchecktools"
+
 	// See your primary Google Account email address
 	UserinfoEmailScope = "https://www.googleapis.com/auth/userinfo.email"
 )
@@ -102,6 +110,7 @@
 // NewService creates a new Service.
 func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
 	scopesOption := internaloption.WithDefaultScopes(
+		"https://www.googleapis.com/auth/factchecktools",
 		"https://www.googleapis.com/auth/userinfo.email",
 	)
 	// NOTE: prepend, so we don't override user-specified scopes.
diff --git a/pubsub/v1/pubsub-api.json b/pubsub/v1/pubsub-api.json
index ed38964..ac5472d 100644
--- a/pubsub/v1/pubsub-api.json
+++ b/pubsub/v1/pubsub-api.json
@@ -1583,7 +1583,7 @@
       }
     }
   },
-  "revision": "20240607",
+  "revision": "20240618",
   "rootUrl": "https://pubsub.googleapis.com/",
   "schemas": {
     "AcknowledgeRequest": {
@@ -1600,6 +1600,21 @@
       },
       "type": "object"
     },
+    "AnalyticsHubSubscriptionInfo": {
+      "description": "Information about an associated Analytics Hub subscription (https://cloud.google.com/bigquery/docs/analytics-hub-manage-subscriptions).",
+      "id": "AnalyticsHubSubscriptionInfo",
+      "properties": {
+        "listing": {
+          "description": "Optional. The name of the associated Analytics Hub listing resource. Pattern: \"projects/{project}/locations/{location}/dataExchanges/{data_exchange}/listings/{listing}\"",
+          "type": "string"
+        },
+        "subscription": {
+          "description": "Optional. The name of the associated Analytics Hub subscription resource. Pattern: \"projects/{project}/locations/{location}/subscriptions/{subscription}\"",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "AvroConfig": {
       "description": "Configuration for writing message data in Avro format. Message payloads and metadata will be written to files as an Avro binary.",
       "id": "AvroConfig",
@@ -2443,6 +2458,11 @@
           "format": "int32",
           "type": "integer"
         },
+        "analyticsHubSubscriptionInfo": {
+          "$ref": "AnalyticsHubSubscriptionInfo",
+          "description": "Output only. Information about the associated Analytics Hub subscription. Only set if the subscritpion is created by Analytics Hub.",
+          "readOnly": true
+        },
         "bigqueryConfig": {
           "$ref": "BigQueryConfig",
           "description": "Optional. If delivery to BigQuery is used with this subscription, this field is used to configure it."
diff --git a/pubsub/v1/pubsub-gen.go b/pubsub/v1/pubsub-gen.go
index 5a27833..7317323 100644
--- a/pubsub/v1/pubsub-gen.go
+++ b/pubsub/v1/pubsub-gen.go
@@ -270,6 +270,37 @@
 	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
 }
 
+// AnalyticsHubSubscriptionInfo: Information about an associated Analytics Hub
+// subscription
+// (https://cloud.google.com/bigquery/docs/analytics-hub-manage-subscriptions).
+type AnalyticsHubSubscriptionInfo struct {
+	// Listing: Optional. The name of the associated Analytics Hub listing
+	// resource. Pattern:
+	// "projects/{project}/locations/{location}/dataExchanges/{data_exchange}/listin
+	// gs/{listing}"
+	Listing string `json:"listing,omitempty"`
+	// Subscription: Optional. The name of the associated Analytics Hub
+	// subscription resource. Pattern:
+	// "projects/{project}/locations/{location}/subscriptions/{subscription}"
+	Subscription string `json:"subscription,omitempty"`
+	// ForceSendFields is a list of field names (e.g. "Listing") to unconditionally
+	// include in API requests. By default, fields with empty or default values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
+	// details.
+	ForceSendFields []string `json:"-"`
+	// NullFields is a list of field names (e.g. "Listing") to include in API
+	// requests with the JSON null value. By default, fields with empty values are
+	// omitted from API requests. See
+	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
+	NullFields []string `json:"-"`
+}
+
+func (s *AnalyticsHubSubscriptionInfo) MarshalJSON() ([]byte, error) {
+	type NoMethod AnalyticsHubSubscriptionInfo
+	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
+}
+
 // AvroConfig: Configuration for writing message data in Avro format. Message
 // payloads and metadata will be written to files as an Avro binary.
 type AvroConfig struct {
@@ -1783,6 +1814,10 @@
 	// the push endpoint. If the subscriber never acknowledges the message, the
 	// Pub/Sub system will eventually redeliver the message.
 	AckDeadlineSeconds int64 `json:"ackDeadlineSeconds,omitempty"`
+	// AnalyticsHubSubscriptionInfo: Output only. Information about the associated
+	// Analytics Hub subscription. Only set if the subscritpion is created by
+	// Analytics Hub.
+	AnalyticsHubSubscriptionInfo *AnalyticsHubSubscriptionInfo `json:"analyticsHubSubscriptionInfo,omitempty"`
 	// BigqueryConfig: Optional. If delivery to BigQuery is used with this
 	// subscription, this field is used to configure it.
 	BigqueryConfig *BigQueryConfig `json:"bigqueryConfig,omitempty"`
diff --git a/storagetransfer/v1/storagetransfer-api.json b/storagetransfer/v1/storagetransfer-api.json
index e439c9b..08aad03 100644
--- a/storagetransfer/v1/storagetransfer-api.json
+++ b/storagetransfer/v1/storagetransfer-api.json
@@ -632,7 +632,7 @@
       }
     }
   },
-  "revision": "20240511",
+  "revision": "20240622",
   "rootUrl": "https://storagetransfer.googleapis.com/",
   "schemas": {
     "AgentPool": {
@@ -1200,7 +1200,7 @@
           "type": "string"
         },
         "timeCreated": {
-          "description": "Specifies how each object's `timeCreated` metadata is preserved for transfers. If unspecified, the default behavior is the same as TIME_CREATED_SKIP. This behavior is supported for transfers to GCS buckets from GCS, S3, Azure, S3 Compatible, and Azure sources.",
+          "description": "Specifies how each object's `timeCreated` metadata is preserved for transfers. If unspecified, the default behavior is the same as TIME_CREATED_SKIP. This behavior is supported for transfers to Cloud Storage buckets from Cloud Storage, Amazon S3, S3-compatible storage, and Azure sources.",
           "enum": [
             "TIME_CREATED_UNSPECIFIED",
             "TIME_CREATED_SKIP",
diff --git a/storagetransfer/v1/storagetransfer-gen.go b/storagetransfer/v1/storagetransfer-gen.go
index a345141..f0a8a17 100644
--- a/storagetransfer/v1/storagetransfer-gen.go
+++ b/storagetransfer/v1/storagetransfer-gen.go
@@ -1049,8 +1049,9 @@
 	TemporaryHold string `json:"temporaryHold,omitempty"`
 	// TimeCreated: Specifies how each object's `timeCreated` metadata is preserved
 	// for transfers. If unspecified, the default behavior is the same as
-	// TIME_CREATED_SKIP. This behavior is supported for transfers to GCS buckets
-	// from GCS, S3, Azure, S3 Compatible, and Azure sources.
+	// TIME_CREATED_SKIP. This behavior is supported for transfers to Cloud Storage
+	// buckets from Cloud Storage, Amazon S3, S3-compatible storage, and Azure
+	// sources.
 	//
 	// Possible values:
 	//   "TIME_CREATED_UNSPECIFIED" - TimeCreated behavior is unspecified.