diff --git a/google-cloud-pubsub-v1/.owlbot-manifest.json b/google-cloud-pubsub-v1/.owlbot-manifest.json index ccb8d24a07ba..43bbc5381ca9 100644 --- a/google-cloud-pubsub-v1/.owlbot-manifest.json +++ b/google-cloud-pubsub-v1/.owlbot-manifest.json @@ -40,6 +40,7 @@ "proto_docs/google/protobuf/duration.rb", "proto_docs/google/protobuf/empty.rb", "proto_docs/google/protobuf/field_mask.rb", + "proto_docs/google/protobuf/struct.rb", "proto_docs/google/protobuf/timestamp.rb", "proto_docs/google/pubsub/v1/pubsub.rb", "proto_docs/google/pubsub/v1/schema.rb", diff --git a/google-cloud-pubsub-v1/Gemfile b/google-cloud-pubsub-v1/Gemfile index 6442df18fa2f..a93c1ff2676b 100644 --- a/google-cloud-pubsub-v1/Gemfile +++ b/google-cloud-pubsub-v1/Gemfile @@ -2,10 +2,12 @@ source "https://rubygems.org" gemspec -gem "google-style", "~> 1.31.1" -gem "minitest", "~> 5.22" +gem "google-style", "~> 1.32.0" +gem "minitest", "~> 6.0.2" gem "minitest-focus", "~> 1.4" +gem "minitest-mock", "~> 5.27" gem "minitest-rg", "~> 5.3" +gem "ostruct", "~> 0.5.5" gem "rake", ">= 13.0" gem "redcarpet", "~> 3.6" gem "yard", "~> 0.9" diff --git a/google-cloud-pubsub-v1/google-cloud-pubsub-v1.gemspec b/google-cloud-pubsub-v1/google-cloud-pubsub-v1.gemspec index bbc50898191b..3a5a2f7ee1b0 100644 --- a/google-cloud-pubsub-v1/google-cloud-pubsub-v1.gemspec +++ b/google-cloud-pubsub-v1/google-cloud-pubsub-v1.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |gem| ["README.md", "LICENSE.md", "AUTHENTICATION.md", ".yardopts"] gem.require_paths = ["lib"] - gem.required_ruby_version = ">= 3.1" + gem.required_ruby_version = ">= 3.2" gem.add_dependency "gapic-common", "~> 1.2" gem.add_dependency "google-cloud-errors", "~> 1.0" diff --git a/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/subscription_admin/client.rb b/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/subscription_admin/client.rb index 71fa6e5bcede..b869df06981e 100644 --- a/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/subscription_admin/client.rb +++ b/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/subscription_admin/client.rb @@ -304,7 +304,7 @@ def logger # @param options [::Gapic::CallOptions, ::Hash] # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. # - # @overload create_subscription(name: nil, topic: nil, push_config: nil, bigquery_config: nil, cloud_storage_config: nil, ack_deadline_seconds: nil, retain_acked_messages: nil, message_retention_duration: nil, labels: nil, enable_message_ordering: nil, expiration_policy: nil, filter: nil, dead_letter_policy: nil, retry_policy: nil, detached: nil, enable_exactly_once_delivery: nil, message_transforms: nil, tags: nil) + # @overload create_subscription(name: nil, topic: nil, push_config: nil, bigquery_config: nil, cloud_storage_config: nil, bigtable_config: nil, ack_deadline_seconds: nil, retain_acked_messages: nil, message_retention_duration: nil, labels: nil, enable_message_ordering: nil, expiration_policy: nil, filter: nil, dead_letter_policy: nil, retry_policy: nil, detached: nil, enable_exactly_once_delivery: nil, message_transforms: nil, tags: nil) # Pass arguments to `create_subscription` via keyword arguments. Note that at # least one keyword argument is required. To specify no parameters, or to keep all # the default parameter values, pass an empty Hash as a request object (see above). @@ -329,6 +329,9 @@ def logger # @param cloud_storage_config [::Google::Cloud::PubSub::V1::CloudStorageConfig, ::Hash] # Optional. If delivery to Google Cloud Storage is used with this # subscription, this field is used to configure it. + # @param bigtable_config [::Google::Cloud::PubSub::V1::BigtableConfig, ::Hash] + # Optional. If delivery to Bigtable is used with this subscription, this + # field is used to configure it. # @param ack_deadline_seconds [::Integer] # Optional. The approximate amount of time (on a best-effort basis) Pub/Sub # waits for the subscriber to acknowledge receipt before resending the @@ -429,6 +432,8 @@ def logger # resource. For example: # "123/environment": "production", # "123/costCenter": "marketing" + # See https://docs.cloud.google.com/pubsub/docs/tags for more information on + # using tags with Pub/Sub resources. # # @yield [response, operation] Access the result along with the RPC operation # @yieldparam response [::Google::Cloud::PubSub::V1::Subscription] @@ -513,7 +518,7 @@ def create_subscription request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param subscription [::String] - # Required. Identifier. The name of the subscription to get. + # Required. The name of the subscription to get. # Format is `projects/{project}/subscriptions/{sub}`. # # @yield [response, operation] Access the result along with the RPC operation @@ -689,8 +694,8 @@ def update_subscription request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param project [::String] - # Required. Identifier. The name of the project in which to list - # subscriptions. Format is `projects/{project-id}`. + # Required. The name of the project in which to list subscriptions. + # Format is `projects/{project-id}`. # @param page_size [::Integer] # Optional. Maximum number of subscriptions to return. # @param page_token [::String] @@ -791,7 +796,7 @@ def list_subscriptions request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param subscription [::String] - # Required. Identifier. The subscription to delete. + # Required. The subscription to delete. # Format is `projects/{project}/subscriptions/{sub}`. # # @yield [response, operation] Access the result along with the RPC operation @@ -1359,7 +1364,7 @@ def modify_push_config request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param snapshot [::String] - # Required. Identifier. The name of the snapshot to get. + # Required. The name of the snapshot to get. # Format is `projects/{project}/snapshots/{snap}`. # # @yield [response, operation] Access the result along with the RPC operation @@ -1449,7 +1454,7 @@ def get_snapshot request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param project [::String] - # Required. Identifier. The name of the project in which to list snapshots. + # Required. The name of the project in which to list snapshots. # Format is `projects/{project-id}`. # @param page_size [::Integer] # Optional. Maximum number of snapshots to return. @@ -1562,10 +1567,10 @@ def list_snapshots request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param name [::String] - # Required. Identifier. User-provided name for this snapshot. If the name is - # not provided in the request, the server will assign a random name for this - # snapshot on the same project as the subscription. Note that for REST API - # requests, you must specify a name. See the [resource name + # Required. User-provided name for this snapshot. If the name is not provided + # in the request, the server will assign a random name for this snapshot on + # the same project as the subscription. Note that for REST API requests, you + # must specify a name. See the [resource name # rules](https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). # Format is `projects/{project}/snapshots/{snap}`. # @param subscription [::String] @@ -1586,6 +1591,8 @@ def list_snapshots request, options = nil # resource. For example: # "123/environment": "production", # "123/costCenter": "marketing" + # See https://docs.cloud.google.com/pubsub/docs/tags for more information on + # using tags with Pub/Sub resources. # # @yield [response, operation] Access the result along with the RPC operation # @yieldparam response [::Google::Cloud::PubSub::V1::Snapshot] @@ -1771,7 +1778,7 @@ def update_snapshot request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param snapshot [::String] - # Required. Identifier. The name of the snapshot to delete. + # Required. The name of the snapshot to delete. # Format is `projects/{project}/snapshots/{snap}`. # # @yield [response, operation] Access the result along with the RPC operation diff --git a/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/topic_admin/client.rb b/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/topic_admin/client.rb index 0aac4cd2eed9..8c6c06ddbf4c 100644 --- a/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/topic_admin/client.rb +++ b/google-cloud-pubsub-v1/lib/google/cloud/pubsub/v1/topic_admin/client.rb @@ -308,6 +308,8 @@ def logger # resource. For example: # "123/environment": "production", # "123/costCenter": "marketing" + # See https://docs.cloud.google.com/pubsub/docs/tags for more information on + # using tags with Pub/Sub resources. # # @yield [response, operation] Access the result along with the RPC operation # @yieldparam response [::Google::Cloud::PubSub::V1::Topic] @@ -485,8 +487,8 @@ def update_topic request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param topic [::String] - # Required. Identifier. The messages in the request will be published on this - # topic. Format is `projects/{project}/topics/{topic}`. + # Required. The messages in the request will be published on this topic. + # Format is `projects/{project}/topics/{topic}`. # @param messages [::Array<::Google::Cloud::PubSub::V1::PubsubMessage, ::Hash>] # Required. The messages to publish. # @@ -573,7 +575,7 @@ def publish request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param topic [::String] - # Required. Identifier. The name of the topic to get. + # Required. The name of the topic to get. # Format is `projects/{project}/topics/{topic}`. # # @yield [response, operation] Access the result along with the RPC operation @@ -659,7 +661,7 @@ def get_topic request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param project [::String] - # Required. Identifier. The name of the project in which to list topics. + # Required. The name of the project in which to list topics. # Format is `projects/{project-id}`. # @param page_size [::Integer] # Optional. Maximum number of topics to return. @@ -949,7 +951,7 @@ def list_topic_snapshots request, options = nil # the default parameter values, pass an empty Hash as a request object (see above). # # @param topic [::String] - # Required. Identifier. Name of the topic to delete. + # Required. Name of the topic to delete. # Format is `projects/{project}/topics/{topic}`. # # @yield [response, operation] Access the result along with the RPC operation diff --git a/google-cloud-pubsub-v1/lib/google/pubsub/v1/pubsub_pb.rb b/google-cloud-pubsub-v1/lib/google/pubsub/v1/pubsub_pb.rb index 4d8ba220a3de..7adba4721798 100644 --- a/google-cloud-pubsub-v1/lib/google/pubsub/v1/pubsub_pb.rb +++ b/google-cloud-pubsub-v1/lib/google/pubsub/v1/pubsub_pb.rb @@ -11,38 +11,15 @@ require 'google/protobuf/duration_pb' require 'google/protobuf/empty_pb' require 'google/protobuf/field_mask_pb' +require 'google/protobuf/struct_pb' require 'google/protobuf/timestamp_pb' require 'google/pubsub/v1/schema_pb' -descriptor_data = "\n\x1dgoogle/pubsub/v1/pubsub.proto\x12\x10google.pubsub.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1dgoogle/pubsub/v1/schema.proto\"a\n\x14MessageStoragePolicy\x12(\n\x1b\x61llowed_persistence_regions\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1f\n\x12\x65nforce_in_transit\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"\xb8\x01\n\x0eSchemaSettings\x12\x34\n\x06schema\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\x12\x31\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\x1a.google.pubsub.v1.EncodingB\x03\xe0\x41\x01\x12\x1e\n\x11\x66irst_revision_id\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x1d\n\x10last_revision_id\x18\x04 \x01(\tB\x03\xe0\x41\x01\"\xe8\x17\n\x1bIngestionDataSourceSettings\x12T\n\x0b\x61ws_kinesis\x18\x01 \x01(\x0b\x32\x38.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesisB\x03\xe0\x41\x01H\x00\x12X\n\rcloud_storage\x18\x02 \x01(\x0b\x32:.google.pubsub.v1.IngestionDataSourceSettings.CloudStorageB\x03\xe0\x41\x01H\x00\x12]\n\x10\x61zure_event_hubs\x18\x03 \x01(\x0b\x32<.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubsB\x03\xe0\x41\x01H\x00\x12L\n\x07\x61ws_msk\x18\x05 \x01(\x0b\x32\x34.google.pubsub.v1.IngestionDataSourceSettings.AwsMskB\x03\xe0\x41\x01H\x00\x12\\\n\x0f\x63onfluent_cloud\x18\x06 \x01(\x0b\x32<.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloudB\x03\xe0\x41\x01H\x00\x12K\n\x16platform_logs_settings\x18\x04 \x01(\x0b\x32&.google.pubsub.v1.PlatformLogsSettingsB\x03\xe0\x41\x01\x1a\xea\x02\n\nAwsKinesis\x12R\n\x05state\x18\x01 \x01(\x0e\x32>.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.StateB\x03\xe0\x41\x03\x12\x17\n\nstream_arn\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x19\n\x0c\x63onsumer_arn\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x19\n\x0c\x61ws_role_arn\x18\x04 \x01(\tB\x03\xe0\x41\x02\x12 \n\x13gcp_service_account\x18\x05 \x01(\tB\x03\xe0\x41\x02\"\x96\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x1d\n\x19KINESIS_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x14\n\x10STREAM_NOT_FOUND\x10\x04\x12\x16\n\x12\x43ONSUMER_NOT_FOUND\x10\x05\x1a\x95\x06\n\x0c\x43loudStorage\x12T\n\x05state\x18\x01 \x01(\x0e\x32@.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.StateB\x03\xe0\x41\x03\x12\x13\n\x06\x62ucket\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x61\n\x0btext_format\x18\x03 \x01(\x0b\x32\x45.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormatB\x03\xe0\x41\x01H\x00\x12\x61\n\x0b\x61vro_format\x18\x04 \x01(\x0b\x32\x45.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormatB\x03\xe0\x41\x01H\x00\x12n\n\x12pubsub_avro_format\x18\x05 \x01(\x0b\x32K.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormatB\x03\xe0\x41\x01H\x00\x12\x43\n\x1aminimum_object_create_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12\x17\n\nmatch_glob\x18\t \x01(\tB\x03\xe0\x41\x01\x1a\x37\n\nTextFormat\x12\x1b\n\tdelimiter\x18\x01 \x01(\tB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x0c\n\n_delimiter\x1a\x0c\n\nAvroFormat\x1a\x12\n\x10PubSubAvroFormat\"\x9a\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12#\n\x1f\x43LOUD_STORAGE_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x14\n\x10\x42UCKET_NOT_FOUND\x10\x04\x12\x14\n\x10TOO_MANY_OBJECTS\x10\x05\x42\x0e\n\x0cinput_format\x1a\xff\x03\n\x0e\x41zureEventHubs\x12V\n\x05state\x18\x01 \x01(\x0e\x32\x42.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.StateB\x03\xe0\x41\x03\x12\x1b\n\x0eresource_group\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tnamespace\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tevent_hub\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tclient_id\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\ttenant_id\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x1c\n\x0fsubscription_id\x18\x07 \x01(\tB\x03\xe0\x41\x01\x12 \n\x13gcp_service_account\x18\x08 \x01(\tB\x03\xe0\x41\x01\"\xd7\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12 \n\x1c\x45VENT_HUBS_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x17\n\x13NAMESPACE_NOT_FOUND\x10\x04\x12\x17\n\x13\x45VENT_HUB_NOT_FOUND\x10\x05\x12\x1a\n\x16SUBSCRIPTION_NOT_FOUND\x10\x06\x12\x1c\n\x18RESOURCE_GROUP_NOT_FOUND\x10\x07\x1a\xf6\x02\n\x06\x41wsMsk\x12N\n\x05state\x18\x01 \x01(\x0e\x32:.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.StateB\x03\xe0\x41\x03\x12\x18\n\x0b\x63luster_arn\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x32\n\x05topic\x18\x03 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x19\n\x0c\x61ws_role_arn\x18\x04 \x01(\tB\x03\xe0\x41\x02\x12 \n\x13gcp_service_account\x18\x05 \x01(\tB\x03\xe0\x41\x02\"\x90\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x19\n\x15MSK_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x15\n\x11\x43LUSTER_NOT_FOUND\x10\x04\x12\x13\n\x0fTOPIC_NOT_FOUND\x10\x05\x1a\xb6\x03\n\x0e\x43onfluentCloud\x12V\n\x05state\x18\x01 \x01(\x0e\x32\x42.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.StateB\x03\xe0\x41\x03\x12\x1d\n\x10\x62ootstrap_server\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x17\n\ncluster_id\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x12\n\x05topic\x18\x04 \x01(\tB\x03\xe0\x41\x02\x12\x1d\n\x10identity_pool_id\x18\x05 \x01(\tB\x03\xe0\x41\x02\x12 \n\x13gcp_service_account\x18\x06 \x01(\tB\x03\xe0\x41\x02\"\xbe\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12%\n!CONFLUENT_CLOUD_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12 \n\x1cUNREACHABLE_BOOTSTRAP_SERVER\x10\x04\x12\x15\n\x11\x43LUSTER_NOT_FOUND\x10\x05\x12\x13\n\x0fTOPIC_NOT_FOUND\x10\x06\x42\x08\n\x06source\"\xbf\x01\n\x14PlatformLogsSettings\x12\x46\n\x08severity\x18\x01 \x01(\x0e\x32/.google.pubsub.v1.PlatformLogsSettings.SeverityB\x03\xe0\x41\x01\"_\n\x08Severity\x12\x18\n\x14SEVERITY_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\t\n\x05\x44\x45\x42UG\x10\x02\x12\x08\n\x04INFO\x10\x03\x12\x0b\n\x07WARNING\x10\x04\x12\t\n\x05\x45RROR\x10\x05\"\xb9\x18\n\x15IngestionFailureEvent\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x1a\n\rerror_message\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x61\n\x15\x63loud_storage_failure\x18\x03 \x01(\x0b\x32;.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailureB\x03\xe0\x41\x01H\x00\x12[\n\x0f\x61ws_msk_failure\x18\x04 \x01(\x0b\x32;.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReasonB\x03\xe0\x41\x01H\x00\x12l\n\x18\x61zure_event_hubs_failure\x18\x05 \x01(\x0b\x32\x43.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReasonB\x03\xe0\x41\x01H\x00\x12k\n\x17\x63onfluent_cloud_failure\x18\x06 \x01(\x0b\x32\x43.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReasonB\x03\xe0\x41\x01H\x00\x12\x63\n\x13\x61ws_kinesis_failure\x18\x07 \x01(\x0b\x32?.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReasonB\x03\xe0\x41\x01H\x00\x1a\x14\n\x12\x41piViolationReason\x1a\x13\n\x11\x41vroFailureReason\x1a\x17\n\x15SchemaViolationReason\x1a$\n\"MessageTransformationFailureReason\x1a\x98\x04\n\x13\x43loudStorageFailure\x12\x13\n\x06\x62ucket\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bobject_name\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11object_generation\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12]\n\x13\x61vro_failure_reason\x18\x05 \x01(\x0b\x32\x39.google.pubsub.v1.IngestionFailureEvent.AvroFailureReasonB\x03\xe0\x41\x01H\x00\x12_\n\x14\x61pi_violation_reason\x18\x06 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x07 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x08 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xce\x03\n\x13\x41wsMskFailureReason\x12\x18\n\x0b\x63luster_arn\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bkafka_topic\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0cpartition_id\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12\x13\n\x06offset\x18\x04 \x01(\x03\x42\x03\xe0\x41\x01\x12_\n\x14\x61pi_violation_reason\x18\x05 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x06 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x07 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xd2\x03\n\x1b\x41zureEventHubsFailureReason\x12\x16\n\tnamespace\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tevent_hub\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0cpartition_id\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12\x13\n\x06offset\x18\x04 \x01(\x03\x42\x03\xe0\x41\x01\x12_\n\x14\x61pi_violation_reason\x18\x05 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x06 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x07 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xd5\x03\n\x1b\x43onfluentCloudFailureReason\x12\x17\n\ncluster_id\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bkafka_topic\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0cpartition_id\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12\x13\n\x06offset\x18\x04 \x01(\x03\x42\x03\xe0\x41\x01\x12_\n\x14\x61pi_violation_reason\x18\x05 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x06 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x07 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xc1\x03\n\x17\x41wsKinesisFailureReason\x12\x17\n\nstream_arn\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rpartition_key\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1c\n\x0fsequence_number\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x65\n\x17schema_violation_reason\x18\x04 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x05 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x12_\n\x14\x61pi_violation_reason\x18\x06 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reasonB\t\n\x07\x66\x61ilure\">\n\rJavaScriptUDF\x12\x1a\n\rfunction_name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x11\n\x04\x63ode\x18\x02 \x01(\tB\x03\xe0\x41\x02\"\x8e\x01\n\x10MessageTransform\x12>\n\x0ejavascript_udf\x18\x02 \x01(\x0b\x32\x1f.google.pubsub.v1.JavaScriptUDFB\x03\xe0\x41\x01H\x00\x12\x16\n\x07\x65nabled\x18\x03 \x01(\x08\x42\x05\x18\x01\xe0\x41\x01\x12\x15\n\x08\x64isabled\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\x42\x0b\n\ttransform\"\xa0\x07\n\x05Topic\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x02\xe0\x41\x08\x12\x38\n\x06labels\x18\x02 \x03(\x0b\x32#.google.pubsub.v1.Topic.LabelsEntryB\x03\xe0\x41\x01\x12K\n\x16message_storage_policy\x18\x03 \x01(\x0b\x32&.google.pubsub.v1.MessageStoragePolicyB\x03\xe0\x41\x01\x12?\n\x0ckms_key_name\x18\x05 \x01(\tB)\xe0\x41\x01\xfa\x41#\n!cloudkms.googleapis.com/CryptoKey\x12>\n\x0fschema_settings\x18\x06 \x01(\x0b\x32 .google.pubsub.v1.SchemaSettingsB\x03\xe0\x41\x01\x12\x1a\n\rsatisfies_pzs\x18\x07 \x01(\x08\x42\x03\xe0\x41\x01\x12\x42\n\x1amessage_retention_duration\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12\x31\n\x05state\x18\t \x01(\x0e\x32\x1d.google.pubsub.v1.Topic.StateB\x03\xe0\x41\x03\x12Z\n\x1eingestion_data_source_settings\x18\n \x01(\x0b\x32-.google.pubsub.v1.IngestionDataSourceSettingsB\x03\xe0\x41\x01\x12\x43\n\x12message_transforms\x18\r \x03(\x0b\x32\".google.pubsub.v1.MessageTransformB\x03\xe0\x41\x01\x12:\n\x04tags\x18\x0e \x03(\x0b\x32!.google.pubsub.v1.Topic.TagsEntryB\t\xe0\x41\x04\xe0\x41\x05\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"H\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x1c\n\x18INGESTION_RESOURCE_ERROR\x10\x02:c\xea\x41`\n\x1bpubsub.googleapis.com/Topic\x12!projects/{project}/topics/{topic}\x12\x0f_deleted-topic_*\x06topics2\x05topic\"\x80\x02\n\rPubsubMessage\x12\x11\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x42\x03\xe0\x41\x01\x12H\n\nattributes\x18\x02 \x03(\x0b\x32/.google.pubsub.v1.PubsubMessage.AttributesEntryB\x03\xe0\x41\x01\x12\x12\n\nmessage_id\x18\x03 \x01(\t\x12\x30\n\x0cpublish_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x0cordering_key\x18\x05 \x01(\tB\x03\xe0\x41\x01\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"H\n\x0fGetTopicRequest\x12\x35\n\x05topic\x18\x01 \x01(\tB&\xe0\x41\x02\xe0\x41\x08\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\"w\n\x12UpdateTopicRequest\x12+\n\x05topic\x18\x01 \x01(\x0b\x32\x17.google.pubsub.v1.TopicB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"\x7f\n\x0ePublishRequest\x12\x35\n\x05topic\x18\x01 \x01(\tB&\xe0\x41\x02\xe0\x41\x08\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x36\n\x08messages\x18\x02 \x03(\x0b\x32\x1f.google.pubsub.v1.PubsubMessageB\x03\xe0\x41\x02\"+\n\x0fPublishResponse\x12\x18\n\x0bmessage_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\"\x8d\x01\n\x11ListTopicsRequest\x12G\n\x07project\x18\x01 \x01(\tB6\xe0\x41\x02\xe0\x41\x08\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"`\n\x12ListTopicsResponse\x12,\n\x06topics\x18\x01 \x03(\x0b\x32\x17.google.pubsub.v1.TopicB\x03\xe0\x41\x01\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\x84\x01\n\x1dListTopicSubscriptionsRequest\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\x81\x01\n\x1eListTopicSubscriptionsResponse\x12\x41\n\rsubscriptions\x18\x01 \x03(\tB*\xe0\x41\x01\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\x80\x01\n\x19ListTopicSnapshotsRequest\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"u\n\x1aListTopicSnapshotsResponse\x12\x39\n\tsnapshots\x18\x01 \x03(\tB&\xe0\x41\x01\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"K\n\x12\x44\x65leteTopicRequest\x12\x35\n\x05topic\x18\x01 \x01(\tB&\xe0\x41\x02\xe0\x41\x08\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\"]\n\x19\x44\x65tachSubscriptionRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\"\x1c\n\x1a\x44\x65tachSubscriptionResponse\"\xa8\x0c\n\x0cSubscription\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x02\xe0\x41\x08\x12\x32\n\x05topic\x18\x02 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x36\n\x0bpush_config\x18\x04 \x01(\x0b\x32\x1c.google.pubsub.v1.PushConfigB\x03\xe0\x41\x01\x12>\n\x0f\x62igquery_config\x18\x12 \x01(\x0b\x32 .google.pubsub.v1.BigQueryConfigB\x03\xe0\x41\x01\x12G\n\x14\x63loud_storage_config\x18\x16 \x01(\x0b\x32$.google.pubsub.v1.CloudStorageConfigB\x03\xe0\x41\x01\x12!\n\x14\x61\x63k_deadline_seconds\x18\x05 \x01(\x05\x42\x03\xe0\x41\x01\x12\"\n\x15retain_acked_messages\x18\x07 \x01(\x08\x42\x03\xe0\x41\x01\x12\x42\n\x1amessage_retention_duration\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12?\n\x06labels\x18\t \x03(\x0b\x32*.google.pubsub.v1.Subscription.LabelsEntryB\x03\xe0\x41\x01\x12$\n\x17\x65nable_message_ordering\x18\n \x01(\x08\x42\x03\xe0\x41\x01\x12\x42\n\x11\x65xpiration_policy\x18\x0b \x01(\x0b\x32\".google.pubsub.v1.ExpirationPolicyB\x03\xe0\x41\x01\x12\x13\n\x06\x66ilter\x18\x0c \x01(\tB\x03\xe0\x41\x01\x12\x43\n\x12\x64\x65\x61\x64_letter_policy\x18\r \x01(\x0b\x32\".google.pubsub.v1.DeadLetterPolicyB\x03\xe0\x41\x01\x12\x38\n\x0cretry_policy\x18\x0e \x01(\x0b\x32\x1d.google.pubsub.v1.RetryPolicyB\x03\xe0\x41\x01\x12\x15\n\x08\x64\x65tached\x18\x0f \x01(\x08\x42\x03\xe0\x41\x01\x12)\n\x1c\x65nable_exactly_once_delivery\x18\x10 \x01(\x08\x42\x03\xe0\x41\x01\x12H\n topic_message_retention_duration\x18\x11 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x03\x12\x38\n\x05state\x18\x13 \x01(\x0e\x32$.google.pubsub.v1.Subscription.StateB\x03\xe0\x41\x03\x12i\n\x1f\x61nalytics_hub_subscription_info\x18\x17 \x01(\x0b\x32;.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfoB\x03\xe0\x41\x03\x12\x43\n\x12message_transforms\x18\x19 \x03(\x0b\x32\".google.pubsub.v1.MessageTransformB\x03\xe0\x41\x01\x12\x41\n\x04tags\x18\x1a \x03(\x0b\x32(.google.pubsub.v1.Subscription.TagsEntryB\t\xe0\x41\x04\xe0\x41\x05\xe0\x41\x01\x1aw\n\x1c\x41nalyticsHubSubscriptionInfo\x12<\n\x07listing\x18\x01 \x01(\tB+\xe0\x41\x01\xfa\x41%\n#analyticshub.googleapis.com/Listing\x12\x19\n\x0csubscription\x18\x02 \x01(\tB\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\">\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x12\n\x0eRESOURCE_ERROR\x10\x02:u\xea\x41r\n\"pubsub.googleapis.com/Subscription\x12/projects/{project}/subscriptions/{subscription}*\rsubscriptions2\x0csubscription\"\x7f\n\x0bRetryPolicy\x12\x37\n\x0fminimum_backoff\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12\x37\n\x0fmaximum_backoff\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\"v\n\x10\x44\x65\x61\x64LetterPolicy\x12>\n\x11\x64\x65\x61\x64_letter_topic\x18\x01 \x01(\tB#\xe0\x41\x01\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\"\n\x15max_delivery_attempts\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\"?\n\x10\x45xpirationPolicy\x12+\n\x03ttl\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\"\x9a\x04\n\nPushConfig\x12\x1a\n\rpush_endpoint\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x45\n\nattributes\x18\x02 \x03(\x0b\x32,.google.pubsub.v1.PushConfig.AttributesEntryB\x03\xe0\x41\x01\x12\x41\n\noidc_token\x18\x03 \x01(\x0b\x32&.google.pubsub.v1.PushConfig.OidcTokenB\x03\xe0\x41\x01H\x00\x12I\n\x0epubsub_wrapper\x18\x04 \x01(\x0b\x32*.google.pubsub.v1.PushConfig.PubsubWrapperB\x03\xe0\x41\x01H\x01\x12\x41\n\nno_wrapper\x18\x05 \x01(\x0b\x32&.google.pubsub.v1.PushConfig.NoWrapperB\x03\xe0\x41\x01H\x01\x1a\x46\n\tOidcToken\x12\"\n\x15service_account_email\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08\x61udience\x18\x02 \x01(\tB\x03\xe0\x41\x01\x1a\x0f\n\rPubsubWrapper\x1a(\n\tNoWrapper\x12\x1b\n\x0ewrite_metadata\x18\x01 \x01(\x08\x42\x03\xe0\x41\x01\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x17\n\x15\x61uthentication_methodB\t\n\x07wrapper\"\x8e\x03\n\x0e\x42igQueryConfig\x12\x12\n\x05table\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x1d\n\x10use_topic_schema\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1b\n\x0ewrite_metadata\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\x12 \n\x13\x64rop_unknown_fields\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\x12:\n\x05state\x18\x05 \x01(\x0e\x32&.google.pubsub.v1.BigQueryConfig.StateB\x03\xe0\x41\x03\x12\x1d\n\x10use_table_schema\x18\x06 \x01(\x08\x42\x03\xe0\x41\x01\x12\"\n\x15service_account_email\x18\x07 \x01(\tB\x03\xe0\x41\x01\"\x8a\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x15\n\x11PERMISSION_DENIED\x10\x02\x12\r\n\tNOT_FOUND\x10\x03\x12\x13\n\x0fSCHEMA_MISMATCH\x10\x04\x12#\n\x1fIN_TRANSIT_LOCATION_RESTRICTION\x10\x05\"\xe9\x05\n\x12\x43loudStorageConfig\x12\x13\n\x06\x62ucket\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x1c\n\x0f\x66ilename_prefix\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1c\n\x0f\x66ilename_suffix\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12%\n\x18\x66ilename_datetime_format\x18\n \x01(\tB\x03\xe0\x41\x01\x12K\n\x0btext_config\x18\x04 \x01(\x0b\x32/.google.pubsub.v1.CloudStorageConfig.TextConfigB\x03\xe0\x41\x01H\x00\x12K\n\x0b\x61vro_config\x18\x05 \x01(\x0b\x32/.google.pubsub.v1.CloudStorageConfig.AvroConfigB\x03\xe0\x41\x01H\x00\x12\x34\n\x0cmax_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12\x16\n\tmax_bytes\x18\x07 \x01(\x03\x42\x03\xe0\x41\x01\x12\x19\n\x0cmax_messages\x18\x08 \x01(\x03\x42\x03\xe0\x41\x01\x12>\n\x05state\x18\t \x01(\x0e\x32*.google.pubsub.v1.CloudStorageConfig.StateB\x03\xe0\x41\x03\x12\"\n\x15service_account_email\x18\x0b \x01(\tB\x03\xe0\x41\x01\x1a\x0c\n\nTextConfig\x1aH\n\nAvroConfig\x12\x1b\n\x0ewrite_metadata\x18\x01 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1d\n\x10use_topic_schema\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"\x8a\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x15\n\x11PERMISSION_DENIED\x10\x02\x12\r\n\tNOT_FOUND\x10\x03\x12#\n\x1fIN_TRANSIT_LOCATION_RESTRICTION\x10\x04\x12\x13\n\x0fSCHEMA_MISMATCH\x10\x05\x42\x0f\n\routput_format\"|\n\x0fReceivedMessage\x12\x13\n\x06\x61\x63k_id\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x35\n\x07message\x18\x02 \x01(\x0b\x32\x1f.google.pubsub.v1.PubsubMessageB\x03\xe0\x41\x01\x12\x1d\n\x10\x64\x65livery_attempt\x18\x03 \x01(\x05\x42\x03\xe0\x41\x01\"]\n\x16GetSubscriptionRequest\x12\x43\n\x0csubscription\x18\x01 \x01(\tB-\xe0\x41\x02\xe0\x41\x08\xfa\x41$\n\"pubsub.googleapis.com/Subscription\"\x8c\x01\n\x19UpdateSubscriptionRequest\x12\x39\n\x0csubscription\x18\x01 \x01(\x0b\x32\x1e.google.pubsub.v1.SubscriptionB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"\x94\x01\n\x18ListSubscriptionsRequest\x12G\n\x07project\x18\x01 \x01(\tB6\xe0\x41\x02\xe0\x41\x08\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"u\n\x19ListSubscriptionsResponse\x12:\n\rsubscriptions\x18\x01 \x03(\x0b\x32\x1e.google.pubsub.v1.SubscriptionB\x03\xe0\x41\x01\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"`\n\x19\x44\x65leteSubscriptionRequest\x12\x43\n\x0csubscription\x18\x01 \x01(\tB-\xe0\x41\x02\xe0\x41\x08\xfa\x41$\n\"pubsub.googleapis.com/Subscription\"\x93\x01\n\x17ModifyPushConfigRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x36\n\x0bpush_config\x18\x02 \x01(\x0b\x32\x1c.google.pubsub.v1.PushConfigB\x03\xe0\x41\x02\"\x8d\x01\n\x0bPullRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12!\n\x12return_immediately\x18\x02 \x01(\x08\x42\x05\x18\x01\xe0\x41\x01\x12\x19\n\x0cmax_messages\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02\"Q\n\x0cPullResponse\x12\x41\n\x11received_messages\x18\x01 \x03(\x0b\x32!.google.pubsub.v1.ReceivedMessageB\x03\xe0\x41\x01\"\x95\x01\n\x18ModifyAckDeadlineRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x14\n\x07\x61\x63k_ids\x18\x04 \x03(\tB\x03\xe0\x41\x02\x12!\n\x14\x61\x63k_deadline_seconds\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02\"l\n\x12\x41\x63knowledgeRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x14\n\x07\x61\x63k_ids\x18\x02 \x03(\tB\x03\xe0\x41\x02\"\xe6\x02\n\x14StreamingPullRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x14\n\x07\x61\x63k_ids\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12$\n\x17modify_deadline_seconds\x18\x03 \x03(\x05\x42\x03\xe0\x41\x01\x12$\n\x17modify_deadline_ack_ids\x18\x04 \x03(\tB\x03\xe0\x41\x01\x12(\n\x1bstream_ack_deadline_seconds\x18\x05 \x01(\x05\x42\x03\xe0\x41\x02\x12\x16\n\tclient_id\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12%\n\x18max_outstanding_messages\x18\x07 \x01(\x03\x42\x03\xe0\x41\x01\x12\"\n\x15max_outstanding_bytes\x18\x08 \x01(\x03\x42\x03\xe0\x41\x01\x12\x1d\n\x10protocol_version\x18\n \x01(\x03\x42\x03\xe0\x41\x01\"\x9e\x06\n\x15StreamingPullResponse\x12\x41\n\x11received_messages\x18\x01 \x03(\x0b\x32!.google.pubsub.v1.ReceivedMessageB\x03\xe0\x41\x01\x12\x66\n\x18\x61\x63knowledge_confirmation\x18\x05 \x01(\x0b\x32?.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmationB\x03\xe0\x41\x01\x12t\n modify_ack_deadline_confirmation\x18\x03 \x01(\x0b\x32\x45.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmationB\x03\xe0\x41\x01\x12\x64\n\x17subscription_properties\x18\x04 \x01(\x0b\x32>.google.pubsub.v1.StreamingPullResponse.SubscriptionPropertiesB\x03\xe0\x41\x01\x1a\x94\x01\n\x17\x41\x63knowledgeConfirmation\x12\x14\n\x07\x61\x63k_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1c\n\x0finvalid_ack_ids\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12\x1e\n\x11unordered_ack_ids\x18\x03 \x03(\tB\x03\xe0\x41\x01\x12%\n\x18temporary_failed_ack_ids\x18\x04 \x03(\tB\x03\xe0\x41\x01\x1az\n\x1dModifyAckDeadlineConfirmation\x12\x14\n\x07\x61\x63k_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1c\n\x0finvalid_ack_ids\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12%\n\x18temporary_failed_ack_ids\x18\x03 \x03(\tB\x03\xe0\x41\x01\x1ak\n\x16SubscriptionProperties\x12*\n\x1d\x65xactly_once_delivery_enabled\x18\x01 \x01(\x08\x42\x03\xe0\x41\x01\x12%\n\x18message_ordering_enabled\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"\x84\x03\n\x15\x43reateSnapshotRequest\x12\x37\n\x04name\x18\x01 \x01(\tB)\xe0\x41\x02\xe0\x41\x08\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\x12@\n\x0csubscription\x18\x02 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12H\n\x06labels\x18\x03 \x03(\x0b\x32\x33.google.pubsub.v1.CreateSnapshotRequest.LabelsEntryB\x03\xe0\x41\x01\x12J\n\x04tags\x18\x04 \x03(\x0b\x32\x31.google.pubsub.v1.CreateSnapshotRequest.TagsEntryB\t\xe0\x41\x04\xe0\x41\x05\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x80\x01\n\x15UpdateSnapshotRequest\x12\x31\n\x08snapshot\x18\x01 \x01(\x0b\x32\x1a.google.pubsub.v1.SnapshotB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"\xd6\x02\n\x08Snapshot\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x32\n\x05topic\x18\x02 \x01(\tB#\xe0\x41\x01\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x34\n\x0b\x65xpire_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12;\n\x06labels\x18\x04 \x03(\x0b\x32&.google.pubsub.v1.Snapshot.LabelsEntryB\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:a\xea\x41^\n\x1epubsub.googleapis.com/Snapshot\x12\'projects/{project}/snapshots/{snapshot}*\tsnapshots2\x08snapshot\"Q\n\x12GetSnapshotRequest\x12;\n\x08snapshot\x18\x01 \x01(\tB)\xe0\x41\x02\xe0\x41\x08\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\"\x90\x01\n\x14ListSnapshotsRequest\x12G\n\x07project\x18\x01 \x01(\tB6\xe0\x41\x02\xe0\x41\x08\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"i\n\x15ListSnapshotsResponse\x12\x32\n\tsnapshots\x18\x01 \x03(\x0b\x32\x1a.google.pubsub.v1.SnapshotB\x03\xe0\x41\x01\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"T\n\x15\x44\x65leteSnapshotRequest\x12;\n\x08snapshot\x18\x01 \x01(\tB)\xe0\x41\x02\xe0\x41\x08\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\"\xc6\x01\n\x0bSeekRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12/\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01H\x00\x12:\n\x08snapshot\x18\x03 \x01(\tB&\xe0\x41\x01\xfa\x41 \n\x1epubsub.googleapis.com/SnapshotH\x00\x42\x08\n\x06target\"\x0e\n\x0cSeekResponse2\xb8\x0b\n\tPublisher\x12q\n\x0b\x43reateTopic\x12\x17.google.pubsub.v1.Topic\x1a\x17.google.pubsub.v1.Topic\"0\xda\x41\x04name\x82\xd3\xe4\x93\x02#\x1a\x1e/v1/{name=projects/*/topics/*}:\x01*\x12\x91\x01\n\x0bUpdateTopic\x12$.google.pubsub.v1.UpdateTopicRequest\x1a\x17.google.pubsub.v1.Topic\"C\xda\x41\x11topic,update_mask\x82\xd3\xe4\x93\x02)2$/v1/{topic.name=projects/*/topics/*}:\x01*\x12\x93\x01\n\x07Publish\x12 .google.pubsub.v1.PublishRequest\x1a!.google.pubsub.v1.PublishResponse\"C\xda\x41\x0etopic,messages\x82\xd3\xe4\x93\x02,\"\'/v1/{topic=projects/*/topics/*}:publish:\x01*\x12w\n\x08GetTopic\x12!.google.pubsub.v1.GetTopicRequest\x1a\x17.google.pubsub.v1.Topic\"/\xda\x41\x05topic\x82\xd3\xe4\x93\x02!\x12\x1f/v1/{topic=projects/*/topics/*}\x12\x8a\x01\n\nListTopics\x12#.google.pubsub.v1.ListTopicsRequest\x1a$.google.pubsub.v1.ListTopicsResponse\"1\xda\x41\x07project\x82\xd3\xe4\x93\x02!\x12\x1f/v1/{project=projects/*}/topics\x12\xba\x01\n\x16ListTopicSubscriptions\x12/.google.pubsub.v1.ListTopicSubscriptionsRequest\x1a\x30.google.pubsub.v1.ListTopicSubscriptionsResponse\"=\xda\x41\x05topic\x82\xd3\xe4\x93\x02/\x12-/v1/{topic=projects/*/topics/*}/subscriptions\x12\xaa\x01\n\x12ListTopicSnapshots\x12+.google.pubsub.v1.ListTopicSnapshotsRequest\x1a,.google.pubsub.v1.ListTopicSnapshotsResponse\"9\xda\x41\x05topic\x82\xd3\xe4\x93\x02+\x12)/v1/{topic=projects/*/topics/*}/snapshots\x12|\n\x0b\x44\x65leteTopic\x12$.google.pubsub.v1.DeleteTopicRequest\x1a\x16.google.protobuf.Empty\"/\xda\x41\x05topic\x82\xd3\xe4\x93\x02!*\x1f/v1/{topic=projects/*/topics/*}\x12\xad\x01\n\x12\x44\x65tachSubscription\x12+.google.pubsub.v1.DetachSubscriptionRequest\x1a,.google.pubsub.v1.DetachSubscriptionResponse\"<\x82\xd3\xe4\x93\x02\x36\"4/v1/{subscription=projects/*/subscriptions/*}:detach\x1ap\xca\x41\x15pubsub.googleapis.com\xd2\x41Uhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub2\xd2\x15\n\nSubscriber\x12\xb4\x01\n\x12\x43reateSubscription\x12\x1e.google.pubsub.v1.Subscription\x1a\x1e.google.pubsub.v1.Subscription\"^\xda\x41+name,topic,push_config,ack_deadline_seconds\x82\xd3\xe4\x93\x02*\x1a%/v1/{name=projects/*/subscriptions/*}:\x01*\x12\xa1\x01\n\x0fGetSubscription\x12(.google.pubsub.v1.GetSubscriptionRequest\x1a\x1e.google.pubsub.v1.Subscription\"D\xda\x41\x0csubscription\x82\xd3\xe4\x93\x02/\x12-/v1/{subscription=projects/*/subscriptions/*}\x12\xbb\x01\n\x12UpdateSubscription\x12+.google.pubsub.v1.UpdateSubscriptionRequest\x1a\x1e.google.pubsub.v1.Subscription\"X\xda\x41\x18subscription,update_mask\x82\xd3\xe4\x93\x02\x37\x32\x32/v1/{subscription.name=projects/*/subscriptions/*}:\x01*\x12\xa6\x01\n\x11ListSubscriptions\x12*.google.pubsub.v1.ListSubscriptionsRequest\x1a+.google.pubsub.v1.ListSubscriptionsResponse\"8\xda\x41\x07project\x82\xd3\xe4\x93\x02(\x12&/v1/{project=projects/*}/subscriptions\x12\x9f\x01\n\x12\x44\x65leteSubscription\x12+.google.pubsub.v1.DeleteSubscriptionRequest\x1a\x16.google.protobuf.Empty\"D\xda\x41\x0csubscription\x82\xd3\xe4\x93\x02/*-/v1/{subscription=projects/*/subscriptions/*}\x12\xcf\x01\n\x11ModifyAckDeadline\x12*.google.pubsub.v1.ModifyAckDeadlineRequest\x1a\x16.google.protobuf.Empty\"v\xda\x41)subscription,ack_ids,ack_deadline_seconds\x82\xd3\xe4\x93\x02\x44\"?/v1/{subscription=projects/*/subscriptions/*}:modifyAckDeadline:\x01*\x12\xa8\x01\n\x0b\x41\x63knowledge\x12$.google.pubsub.v1.AcknowledgeRequest\x1a\x16.google.protobuf.Empty\"[\xda\x41\x14subscription,ack_ids\x82\xd3\xe4\x93\x02>\"9/v1/{subscription=projects/*/subscriptions/*}:acknowledge:\x01*\x12\xd0\x01\n\x04Pull\x12\x1d.google.pubsub.v1.PullRequest\x1a\x1e.google.pubsub.v1.PullResponse\"\x88\x01\xda\x41,subscription,return_immediately,max_messages\xda\x41\x19subscription,max_messages\x82\xd3\xe4\x93\x02\x37\"2/v1/{subscription=projects/*/subscriptions/*}:pull:\x01*\x12\x66\n\rStreamingPull\x12&.google.pubsub.v1.StreamingPullRequest\x1a\'.google.pubsub.v1.StreamingPullResponse\"\x00(\x01\x30\x01\x12\xbb\x01\n\x10ModifyPushConfig\x12).google.pubsub.v1.ModifyPushConfigRequest\x1a\x16.google.protobuf.Empty\"d\xda\x41\x18subscription,push_config\x82\xd3\xe4\x93\x02\x43\">/v1/{subscription=projects/*/subscriptions/*}:modifyPushConfig:\x01*\x12\x89\x01\n\x0bGetSnapshot\x12$.google.pubsub.v1.GetSnapshotRequest\x1a\x1a.google.pubsub.v1.Snapshot\"8\xda\x41\x08snapshot\x82\xd3\xe4\x93\x02\'\x12%/v1/{snapshot=projects/*/snapshots/*}\x12\x96\x01\n\rListSnapshots\x12&.google.pubsub.v1.ListSnapshotsRequest\x1a\'.google.pubsub.v1.ListSnapshotsResponse\"4\xda\x41\x07project\x82\xd3\xe4\x93\x02$\x12\"/v1/{project=projects/*}/snapshots\x12\x97\x01\n\x0e\x43reateSnapshot\x12\'.google.pubsub.v1.CreateSnapshotRequest\x1a\x1a.google.pubsub.v1.Snapshot\"@\xda\x41\x11name,subscription\x82\xd3\xe4\x93\x02&\x1a!/v1/{name=projects/*/snapshots/*}:\x01*\x12\xa3\x01\n\x0eUpdateSnapshot\x12\'.google.pubsub.v1.UpdateSnapshotRequest\x1a\x1a.google.pubsub.v1.Snapshot\"L\xda\x41\x14snapshot,update_mask\x82\xd3\xe4\x93\x02/2*/v1/{snapshot.name=projects/*/snapshots/*}:\x01*\x12\x8b\x01\n\x0e\x44\x65leteSnapshot\x12\'.google.pubsub.v1.DeleteSnapshotRequest\x1a\x16.google.protobuf.Empty\"8\xda\x41\x08snapshot\x82\xd3\xe4\x93\x02\'*%/v1/{snapshot=projects/*/snapshots/*}\x12\x84\x01\n\x04Seek\x12\x1d.google.pubsub.v1.SeekRequest\x1a\x1e.google.pubsub.v1.SeekResponse\"=\x82\xd3\xe4\x93\x02\x37\"2/v1/{subscription=projects/*/subscriptions/*}:seek:\x01*\x1ap\xca\x41\x15pubsub.googleapis.com\xd2\x41Uhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsubB\xa7\x03\n\x14\x63om.google.pubsub.v1B\x0bPubsubProtoP\x01Z5cloud.google.com/go/pubsub/v2/apiv1/pubsubpb;pubsubpb\xaa\x02\x16Google.Cloud.PubSub.V1\xca\x02\x16Google\\Cloud\\PubSub\\V1\xea\x02\x19Google::Cloud::PubSub::V1\xea\x41x\n!cloudkms.googleapis.com/CryptoKey\x12Sprojects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}\xea\x41\x7f\n#analyticshub.googleapis.com/Listing\x12Xprojects/{project}/locations/{location}/dataExchanges/{data_exchange}/listings/{listing}b\x06proto3" +descriptor_data = "\n\x1dgoogle/pubsub/v1/pubsub.proto\x12\x10google.pubsub.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1dgoogle/pubsub/v1/schema.proto\"a\n\x14MessageStoragePolicy\x12(\n\x1b\x61llowed_persistence_regions\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1f\n\x12\x65nforce_in_transit\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"\xb8\x01\n\x0eSchemaSettings\x12\x34\n\x06schema\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\x12\x31\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\x1a.google.pubsub.v1.EncodingB\x03\xe0\x41\x01\x12\x1e\n\x11\x66irst_revision_id\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x1d\n\x10last_revision_id\x18\x04 \x01(\tB\x03\xe0\x41\x01\"\xe8\x17\n\x1bIngestionDataSourceSettings\x12T\n\x0b\x61ws_kinesis\x18\x01 \x01(\x0b\x32\x38.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesisB\x03\xe0\x41\x01H\x00\x12X\n\rcloud_storage\x18\x02 \x01(\x0b\x32:.google.pubsub.v1.IngestionDataSourceSettings.CloudStorageB\x03\xe0\x41\x01H\x00\x12]\n\x10\x61zure_event_hubs\x18\x03 \x01(\x0b\x32<.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubsB\x03\xe0\x41\x01H\x00\x12L\n\x07\x61ws_msk\x18\x05 \x01(\x0b\x32\x34.google.pubsub.v1.IngestionDataSourceSettings.AwsMskB\x03\xe0\x41\x01H\x00\x12\\\n\x0f\x63onfluent_cloud\x18\x06 \x01(\x0b\x32<.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloudB\x03\xe0\x41\x01H\x00\x12K\n\x16platform_logs_settings\x18\x04 \x01(\x0b\x32&.google.pubsub.v1.PlatformLogsSettingsB\x03\xe0\x41\x01\x1a\xea\x02\n\nAwsKinesis\x12R\n\x05state\x18\x01 \x01(\x0e\x32>.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.StateB\x03\xe0\x41\x03\x12\x17\n\nstream_arn\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x19\n\x0c\x63onsumer_arn\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x19\n\x0c\x61ws_role_arn\x18\x04 \x01(\tB\x03\xe0\x41\x02\x12 \n\x13gcp_service_account\x18\x05 \x01(\tB\x03\xe0\x41\x02\"\x96\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x1d\n\x19KINESIS_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x14\n\x10STREAM_NOT_FOUND\x10\x04\x12\x16\n\x12\x43ONSUMER_NOT_FOUND\x10\x05\x1a\x95\x06\n\x0c\x43loudStorage\x12T\n\x05state\x18\x01 \x01(\x0e\x32@.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.StateB\x03\xe0\x41\x03\x12\x13\n\x06\x62ucket\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x61\n\x0btext_format\x18\x03 \x01(\x0b\x32\x45.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormatB\x03\xe0\x41\x01H\x00\x12\x61\n\x0b\x61vro_format\x18\x04 \x01(\x0b\x32\x45.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormatB\x03\xe0\x41\x01H\x00\x12n\n\x12pubsub_avro_format\x18\x05 \x01(\x0b\x32K.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormatB\x03\xe0\x41\x01H\x00\x12\x43\n\x1aminimum_object_create_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12\x17\n\nmatch_glob\x18\t \x01(\tB\x03\xe0\x41\x01\x1a\x37\n\nTextFormat\x12\x1b\n\tdelimiter\x18\x01 \x01(\tB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x0c\n\n_delimiter\x1a\x0c\n\nAvroFormat\x1a\x12\n\x10PubSubAvroFormat\"\x9a\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12#\n\x1f\x43LOUD_STORAGE_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x14\n\x10\x42UCKET_NOT_FOUND\x10\x04\x12\x14\n\x10TOO_MANY_OBJECTS\x10\x05\x42\x0e\n\x0cinput_format\x1a\xff\x03\n\x0e\x41zureEventHubs\x12V\n\x05state\x18\x01 \x01(\x0e\x32\x42.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.StateB\x03\xe0\x41\x03\x12\x1b\n\x0eresource_group\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tnamespace\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tevent_hub\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tclient_id\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\ttenant_id\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x1c\n\x0fsubscription_id\x18\x07 \x01(\tB\x03\xe0\x41\x01\x12 \n\x13gcp_service_account\x18\x08 \x01(\tB\x03\xe0\x41\x01\"\xd7\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12 \n\x1c\x45VENT_HUBS_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x17\n\x13NAMESPACE_NOT_FOUND\x10\x04\x12\x17\n\x13\x45VENT_HUB_NOT_FOUND\x10\x05\x12\x1a\n\x16SUBSCRIPTION_NOT_FOUND\x10\x06\x12\x1c\n\x18RESOURCE_GROUP_NOT_FOUND\x10\x07\x1a\xf6\x02\n\x06\x41wsMsk\x12N\n\x05state\x18\x01 \x01(\x0e\x32:.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.StateB\x03\xe0\x41\x03\x12\x18\n\x0b\x63luster_arn\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x32\n\x05topic\x18\x03 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x19\n\x0c\x61ws_role_arn\x18\x04 \x01(\tB\x03\xe0\x41\x02\x12 \n\x13gcp_service_account\x18\x05 \x01(\tB\x03\xe0\x41\x02\"\x90\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x19\n\x15MSK_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12\x15\n\x11\x43LUSTER_NOT_FOUND\x10\x04\x12\x13\n\x0fTOPIC_NOT_FOUND\x10\x05\x1a\xb6\x03\n\x0e\x43onfluentCloud\x12V\n\x05state\x18\x01 \x01(\x0e\x32\x42.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.StateB\x03\xe0\x41\x03\x12\x1d\n\x10\x62ootstrap_server\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x17\n\ncluster_id\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x12\n\x05topic\x18\x04 \x01(\tB\x03\xe0\x41\x02\x12\x1d\n\x10identity_pool_id\x18\x05 \x01(\tB\x03\xe0\x41\x02\x12 \n\x13gcp_service_account\x18\x06 \x01(\tB\x03\xe0\x41\x02\"\xbe\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12%\n!CONFLUENT_CLOUD_PERMISSION_DENIED\x10\x02\x12\x1d\n\x19PUBLISH_PERMISSION_DENIED\x10\x03\x12 \n\x1cUNREACHABLE_BOOTSTRAP_SERVER\x10\x04\x12\x15\n\x11\x43LUSTER_NOT_FOUND\x10\x05\x12\x13\n\x0fTOPIC_NOT_FOUND\x10\x06\x42\x08\n\x06source\"\xbf\x01\n\x14PlatformLogsSettings\x12\x46\n\x08severity\x18\x01 \x01(\x0e\x32/.google.pubsub.v1.PlatformLogsSettings.SeverityB\x03\xe0\x41\x01\"_\n\x08Severity\x12\x18\n\x14SEVERITY_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\t\n\x05\x44\x45\x42UG\x10\x02\x12\x08\n\x04INFO\x10\x03\x12\x0b\n\x07WARNING\x10\x04\x12\t\n\x05\x45RROR\x10\x05\"\xb9\x18\n\x15IngestionFailureEvent\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x1a\n\rerror_message\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x61\n\x15\x63loud_storage_failure\x18\x03 \x01(\x0b\x32;.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailureB\x03\xe0\x41\x01H\x00\x12[\n\x0f\x61ws_msk_failure\x18\x04 \x01(\x0b\x32;.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReasonB\x03\xe0\x41\x01H\x00\x12l\n\x18\x61zure_event_hubs_failure\x18\x05 \x01(\x0b\x32\x43.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReasonB\x03\xe0\x41\x01H\x00\x12k\n\x17\x63onfluent_cloud_failure\x18\x06 \x01(\x0b\x32\x43.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReasonB\x03\xe0\x41\x01H\x00\x12\x63\n\x13\x61ws_kinesis_failure\x18\x07 \x01(\x0b\x32?.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReasonB\x03\xe0\x41\x01H\x00\x1a\x14\n\x12\x41piViolationReason\x1a\x13\n\x11\x41vroFailureReason\x1a\x17\n\x15SchemaViolationReason\x1a$\n\"MessageTransformationFailureReason\x1a\x98\x04\n\x13\x43loudStorageFailure\x12\x13\n\x06\x62ucket\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bobject_name\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11object_generation\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12]\n\x13\x61vro_failure_reason\x18\x05 \x01(\x0b\x32\x39.google.pubsub.v1.IngestionFailureEvent.AvroFailureReasonB\x03\xe0\x41\x01H\x00\x12_\n\x14\x61pi_violation_reason\x18\x06 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x07 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x08 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xce\x03\n\x13\x41wsMskFailureReason\x12\x18\n\x0b\x63luster_arn\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bkafka_topic\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0cpartition_id\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12\x13\n\x06offset\x18\x04 \x01(\x03\x42\x03\xe0\x41\x01\x12_\n\x14\x61pi_violation_reason\x18\x05 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x06 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x07 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xd2\x03\n\x1b\x41zureEventHubsFailureReason\x12\x16\n\tnamespace\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tevent_hub\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0cpartition_id\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12\x13\n\x06offset\x18\x04 \x01(\x03\x42\x03\xe0\x41\x01\x12_\n\x14\x61pi_violation_reason\x18\x05 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x06 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x07 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xd5\x03\n\x1b\x43onfluentCloudFailureReason\x12\x17\n\ncluster_id\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bkafka_topic\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0cpartition_id\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12\x13\n\x06offset\x18\x04 \x01(\x03\x42\x03\xe0\x41\x01\x12_\n\x14\x61pi_violation_reason\x18\x05 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x12\x65\n\x17schema_violation_reason\x18\x06 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x07 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reason\x1a\xc1\x03\n\x17\x41wsKinesisFailureReason\x12\x17\n\nstream_arn\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rpartition_key\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1c\n\x0fsequence_number\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x65\n\x17schema_violation_reason\x18\x04 \x01(\x0b\x32=.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReasonB\x03\xe0\x41\x01H\x00\x12\x80\x01\n%message_transformation_failure_reason\x18\x05 \x01(\x0b\x32J.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReasonB\x03\xe0\x41\x01H\x00\x12_\n\x14\x61pi_violation_reason\x18\x06 \x01(\x0b\x32:.google.pubsub.v1.IngestionFailureEvent.ApiViolationReasonB\x03\xe0\x41\x01H\x00\x42\x08\n\x06reasonB\t\n\x07\x66\x61ilure\">\n\rJavaScriptUDF\x12\x1a\n\rfunction_name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x11\n\x04\x63ode\x18\x02 \x01(\tB\x03\xe0\x41\x02\"\x81\x02\n\x0b\x41IInference\x12\x15\n\x08\x65ndpoint\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12Z\n\x16unstructured_inference\x18\x02 \x01(\x0b\x32\x33.google.pubsub.v1.AIInference.UnstructuredInferenceB\x03\xe0\x41\x01H\x00\x12\"\n\x15service_account_email\x18\x03 \x01(\tB\x03\xe0\x41\x01\x1aI\n\x15UnstructuredInference\x12\x30\n\nparameters\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x01\x42\x10\n\x0einference_mode\"\xca\x01\n\x10MessageTransform\x12>\n\x0ejavascript_udf\x18\x02 \x01(\x0b\x32\x1f.google.pubsub.v1.JavaScriptUDFB\x03\xe0\x41\x01H\x00\x12:\n\x0c\x61i_inference\x18\x06 \x01(\x0b\x32\x1d.google.pubsub.v1.AIInferenceB\x03\xe0\x41\x01H\x00\x12\x16\n\x07\x65nabled\x18\x03 \x01(\x08\x42\x05\x18\x01\xe0\x41\x01\x12\x15\n\x08\x64isabled\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\x42\x0b\n\ttransform\"\xa0\x07\n\x05Topic\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x02\xe0\x41\x08\x12\x38\n\x06labels\x18\x02 \x03(\x0b\x32#.google.pubsub.v1.Topic.LabelsEntryB\x03\xe0\x41\x01\x12K\n\x16message_storage_policy\x18\x03 \x01(\x0b\x32&.google.pubsub.v1.MessageStoragePolicyB\x03\xe0\x41\x01\x12?\n\x0ckms_key_name\x18\x05 \x01(\tB)\xe0\x41\x01\xfa\x41#\n!cloudkms.googleapis.com/CryptoKey\x12>\n\x0fschema_settings\x18\x06 \x01(\x0b\x32 .google.pubsub.v1.SchemaSettingsB\x03\xe0\x41\x01\x12\x1a\n\rsatisfies_pzs\x18\x07 \x01(\x08\x42\x03\xe0\x41\x01\x12\x42\n\x1amessage_retention_duration\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12\x31\n\x05state\x18\t \x01(\x0e\x32\x1d.google.pubsub.v1.Topic.StateB\x03\xe0\x41\x03\x12Z\n\x1eingestion_data_source_settings\x18\n \x01(\x0b\x32-.google.pubsub.v1.IngestionDataSourceSettingsB\x03\xe0\x41\x01\x12\x43\n\x12message_transforms\x18\r \x03(\x0b\x32\".google.pubsub.v1.MessageTransformB\x03\xe0\x41\x01\x12:\n\x04tags\x18\x0e \x03(\x0b\x32!.google.pubsub.v1.Topic.TagsEntryB\t\xe0\x41\x04\xe0\x41\x05\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"H\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x1c\n\x18INGESTION_RESOURCE_ERROR\x10\x02:c\xea\x41`\n\x1bpubsub.googleapis.com/Topic\x12!projects/{project}/topics/{topic}\x12\x0f_deleted-topic_*\x06topics2\x05topic\"\x80\x02\n\rPubsubMessage\x12\x11\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x42\x03\xe0\x41\x01\x12H\n\nattributes\x18\x02 \x03(\x0b\x32/.google.pubsub.v1.PubsubMessage.AttributesEntryB\x03\xe0\x41\x01\x12\x12\n\nmessage_id\x18\x03 \x01(\t\x12\x30\n\x0cpublish_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x0cordering_key\x18\x05 \x01(\tB\x03\xe0\x41\x01\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"E\n\x0fGetTopicRequest\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\"w\n\x12UpdateTopicRequest\x12+\n\x05topic\x18\x01 \x01(\x0b\x32\x17.google.pubsub.v1.TopicB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"|\n\x0ePublishRequest\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x36\n\x08messages\x18\x02 \x03(\x0b\x32\x1f.google.pubsub.v1.PubsubMessageB\x03\xe0\x41\x02\"+\n\x0fPublishResponse\x12\x18\n\x0bmessage_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\"\x8a\x01\n\x11ListTopicsRequest\x12\x44\n\x07project\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"`\n\x12ListTopicsResponse\x12,\n\x06topics\x18\x01 \x03(\x0b\x32\x17.google.pubsub.v1.TopicB\x03\xe0\x41\x01\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\x84\x01\n\x1dListTopicSubscriptionsRequest\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\x81\x01\n\x1eListTopicSubscriptionsResponse\x12\x41\n\rsubscriptions\x18\x01 \x03(\tB*\xe0\x41\x01\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\x80\x01\n\x19ListTopicSnapshotsRequest\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"u\n\x1aListTopicSnapshotsResponse\x12\x39\n\tsnapshots\x18\x01 \x03(\tB&\xe0\x41\x01\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"H\n\x12\x44\x65leteTopicRequest\x12\x32\n\x05topic\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\"]\n\x19\x44\x65tachSubscriptionRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\"\x1c\n\x1a\x44\x65tachSubscriptionResponse\"\xe8\x0c\n\x0cSubscription\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x02\xe0\x41\x08\x12\x32\n\x05topic\x18\x02 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x36\n\x0bpush_config\x18\x04 \x01(\x0b\x32\x1c.google.pubsub.v1.PushConfigB\x03\xe0\x41\x01\x12>\n\x0f\x62igquery_config\x18\x12 \x01(\x0b\x32 .google.pubsub.v1.BigQueryConfigB\x03\xe0\x41\x01\x12G\n\x14\x63loud_storage_config\x18\x16 \x01(\x0b\x32$.google.pubsub.v1.CloudStorageConfigB\x03\xe0\x41\x01\x12>\n\x0f\x62igtable_config\x18\x1b \x01(\x0b\x32 .google.pubsub.v1.BigtableConfigB\x03\xe0\x41\x01\x12!\n\x14\x61\x63k_deadline_seconds\x18\x05 \x01(\x05\x42\x03\xe0\x41\x01\x12\"\n\x15retain_acked_messages\x18\x07 \x01(\x08\x42\x03\xe0\x41\x01\x12\x42\n\x1amessage_retention_duration\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12?\n\x06labels\x18\t \x03(\x0b\x32*.google.pubsub.v1.Subscription.LabelsEntryB\x03\xe0\x41\x01\x12$\n\x17\x65nable_message_ordering\x18\n \x01(\x08\x42\x03\xe0\x41\x01\x12\x42\n\x11\x65xpiration_policy\x18\x0b \x01(\x0b\x32\".google.pubsub.v1.ExpirationPolicyB\x03\xe0\x41\x01\x12\x13\n\x06\x66ilter\x18\x0c \x01(\tB\x03\xe0\x41\x01\x12\x43\n\x12\x64\x65\x61\x64_letter_policy\x18\r \x01(\x0b\x32\".google.pubsub.v1.DeadLetterPolicyB\x03\xe0\x41\x01\x12\x38\n\x0cretry_policy\x18\x0e \x01(\x0b\x32\x1d.google.pubsub.v1.RetryPolicyB\x03\xe0\x41\x01\x12\x15\n\x08\x64\x65tached\x18\x0f \x01(\x08\x42\x03\xe0\x41\x01\x12)\n\x1c\x65nable_exactly_once_delivery\x18\x10 \x01(\x08\x42\x03\xe0\x41\x01\x12H\n topic_message_retention_duration\x18\x11 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x03\x12\x38\n\x05state\x18\x13 \x01(\x0e\x32$.google.pubsub.v1.Subscription.StateB\x03\xe0\x41\x03\x12i\n\x1f\x61nalytics_hub_subscription_info\x18\x17 \x01(\x0b\x32;.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfoB\x03\xe0\x41\x03\x12\x43\n\x12message_transforms\x18\x19 \x03(\x0b\x32\".google.pubsub.v1.MessageTransformB\x03\xe0\x41\x01\x12\x41\n\x04tags\x18\x1a \x03(\x0b\x32(.google.pubsub.v1.Subscription.TagsEntryB\t\xe0\x41\x04\xe0\x41\x05\xe0\x41\x01\x1aw\n\x1c\x41nalyticsHubSubscriptionInfo\x12<\n\x07listing\x18\x01 \x01(\tB+\xe0\x41\x01\xfa\x41%\n#analyticshub.googleapis.com/Listing\x12\x19\n\x0csubscription\x18\x02 \x01(\tB\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\">\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x12\n\x0eRESOURCE_ERROR\x10\x02:u\xea\x41r\n\"pubsub.googleapis.com/Subscription\x12/projects/{project}/subscriptions/{subscription}*\rsubscriptions2\x0csubscription\"\x7f\n\x0bRetryPolicy\x12\x37\n\x0fminimum_backoff\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12\x37\n\x0fmaximum_backoff\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\"v\n\x10\x44\x65\x61\x64LetterPolicy\x12>\n\x11\x64\x65\x61\x64_letter_topic\x18\x01 \x01(\tB#\xe0\x41\x01\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\"\n\x15max_delivery_attempts\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\"?\n\x10\x45xpirationPolicy\x12+\n\x03ttl\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\"\x9a\x04\n\nPushConfig\x12\x1a\n\rpush_endpoint\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x45\n\nattributes\x18\x02 \x03(\x0b\x32,.google.pubsub.v1.PushConfig.AttributesEntryB\x03\xe0\x41\x01\x12\x41\n\noidc_token\x18\x03 \x01(\x0b\x32&.google.pubsub.v1.PushConfig.OidcTokenB\x03\xe0\x41\x01H\x00\x12I\n\x0epubsub_wrapper\x18\x04 \x01(\x0b\x32*.google.pubsub.v1.PushConfig.PubsubWrapperB\x03\xe0\x41\x01H\x01\x12\x41\n\nno_wrapper\x18\x05 \x01(\x0b\x32&.google.pubsub.v1.PushConfig.NoWrapperB\x03\xe0\x41\x01H\x01\x1a\x46\n\tOidcToken\x12\"\n\x15service_account_email\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08\x61udience\x18\x02 \x01(\tB\x03\xe0\x41\x01\x1a\x0f\n\rPubsubWrapper\x1a(\n\tNoWrapper\x12\x1b\n\x0ewrite_metadata\x18\x01 \x01(\x08\x42\x03\xe0\x41\x01\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x17\n\x15\x61uthentication_methodB\t\n\x07wrapper\"\xb2\x03\n\x0e\x42igQueryConfig\x12\x12\n\x05table\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x1d\n\x10use_topic_schema\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1b\n\x0ewrite_metadata\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\x12 \n\x13\x64rop_unknown_fields\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\x12:\n\x05state\x18\x05 \x01(\x0e\x32&.google.pubsub.v1.BigQueryConfig.StateB\x03\xe0\x41\x03\x12\x1d\n\x10use_table_schema\x18\x06 \x01(\x08\x42\x03\xe0\x41\x01\x12\"\n\x15service_account_email\x18\x07 \x01(\tB\x03\xe0\x41\x01\"\xae\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x15\n\x11PERMISSION_DENIED\x10\x02\x12\r\n\tNOT_FOUND\x10\x03\x12\x13\n\x0fSCHEMA_MISMATCH\x10\x04\x12#\n\x1fIN_TRANSIT_LOCATION_RESTRICTION\x10\x05\x12\"\n\x1eVERTEX_AI_LOCATION_RESTRICTION\x10\x06\"\x8e\x03\n\x0e\x42igtableConfig\x12\x12\n\x05table\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0e\x61pp_profile_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\"\n\x15service_account_email\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0ewrite_metadata\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01\x12:\n\x05state\x18\x04 \x01(\x0e\x32&.google.pubsub.v1.BigtableConfig.StateB\x03\xe0\x41\x03\"\xcd\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\r\n\tNOT_FOUND\x10\x02\x12\x1d\n\x19\x41PP_PROFILE_MISCONFIGURED\x10\x03\x12\x15\n\x11PERMISSION_DENIED\x10\x04\x12\x13\n\x0fSCHEMA_MISMATCH\x10\x05\x12#\n\x1fIN_TRANSIT_LOCATION_RESTRICTION\x10\x06\x12\"\n\x1eVERTEX_AI_LOCATION_RESTRICTION\x10\x07\"\x8d\x06\n\x12\x43loudStorageConfig\x12\x13\n\x06\x62ucket\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x1c\n\x0f\x66ilename_prefix\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1c\n\x0f\x66ilename_suffix\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12%\n\x18\x66ilename_datetime_format\x18\n \x01(\tB\x03\xe0\x41\x01\x12K\n\x0btext_config\x18\x04 \x01(\x0b\x32/.google.pubsub.v1.CloudStorageConfig.TextConfigB\x03\xe0\x41\x01H\x00\x12K\n\x0b\x61vro_config\x18\x05 \x01(\x0b\x32/.google.pubsub.v1.CloudStorageConfig.AvroConfigB\x03\xe0\x41\x01H\x00\x12\x34\n\x0cmax_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12\x16\n\tmax_bytes\x18\x07 \x01(\x03\x42\x03\xe0\x41\x01\x12\x19\n\x0cmax_messages\x18\x08 \x01(\x03\x42\x03\xe0\x41\x01\x12>\n\x05state\x18\t \x01(\x0e\x32*.google.pubsub.v1.CloudStorageConfig.StateB\x03\xe0\x41\x03\x12\"\n\x15service_account_email\x18\x0b \x01(\tB\x03\xe0\x41\x01\x1a\x0c\n\nTextConfig\x1aH\n\nAvroConfig\x12\x1b\n\x0ewrite_metadata\x18\x01 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1d\n\x10use_topic_schema\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"\xae\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x15\n\x11PERMISSION_DENIED\x10\x02\x12\r\n\tNOT_FOUND\x10\x03\x12#\n\x1fIN_TRANSIT_LOCATION_RESTRICTION\x10\x04\x12\x13\n\x0fSCHEMA_MISMATCH\x10\x05\x12\"\n\x1eVERTEX_AI_LOCATION_RESTRICTION\x10\x06\x42\x0f\n\routput_format\"|\n\x0fReceivedMessage\x12\x13\n\x06\x61\x63k_id\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x35\n\x07message\x18\x02 \x01(\x0b\x32\x1f.google.pubsub.v1.PubsubMessageB\x03\xe0\x41\x01\x12\x1d\n\x10\x64\x65livery_attempt\x18\x03 \x01(\x05\x42\x03\xe0\x41\x01\"Z\n\x16GetSubscriptionRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\"\x8c\x01\n\x19UpdateSubscriptionRequest\x12\x39\n\x0csubscription\x18\x01 \x01(\x0b\x32\x1e.google.pubsub.v1.SubscriptionB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"\x91\x01\n\x18ListSubscriptionsRequest\x12\x44\n\x07project\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"u\n\x19ListSubscriptionsResponse\x12:\n\rsubscriptions\x18\x01 \x03(\x0b\x32\x1e.google.pubsub.v1.SubscriptionB\x03\xe0\x41\x01\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"]\n\x19\x44\x65leteSubscriptionRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\"\x93\x01\n\x17ModifyPushConfigRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x36\n\x0bpush_config\x18\x02 \x01(\x0b\x32\x1c.google.pubsub.v1.PushConfigB\x03\xe0\x41\x02\"\x8d\x01\n\x0bPullRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12!\n\x12return_immediately\x18\x02 \x01(\x08\x42\x05\x18\x01\xe0\x41\x01\x12\x19\n\x0cmax_messages\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02\"Q\n\x0cPullResponse\x12\x41\n\x11received_messages\x18\x01 \x03(\x0b\x32!.google.pubsub.v1.ReceivedMessageB\x03\xe0\x41\x01\"\x95\x01\n\x18ModifyAckDeadlineRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x14\n\x07\x61\x63k_ids\x18\x04 \x03(\tB\x03\xe0\x41\x02\x12!\n\x14\x61\x63k_deadline_seconds\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02\"l\n\x12\x41\x63knowledgeRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x14\n\x07\x61\x63k_ids\x18\x02 \x03(\tB\x03\xe0\x41\x02\"\xe6\x02\n\x14StreamingPullRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12\x14\n\x07\x61\x63k_ids\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12$\n\x17modify_deadline_seconds\x18\x03 \x03(\x05\x42\x03\xe0\x41\x01\x12$\n\x17modify_deadline_ack_ids\x18\x04 \x03(\tB\x03\xe0\x41\x01\x12(\n\x1bstream_ack_deadline_seconds\x18\x05 \x01(\x05\x42\x03\xe0\x41\x02\x12\x16\n\tclient_id\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12%\n\x18max_outstanding_messages\x18\x07 \x01(\x03\x42\x03\xe0\x41\x01\x12\"\n\x15max_outstanding_bytes\x18\x08 \x01(\x03\x42\x03\xe0\x41\x01\x12\x1d\n\x10protocol_version\x18\n \x01(\x03\x42\x03\xe0\x41\x01\"\x9e\x06\n\x15StreamingPullResponse\x12\x41\n\x11received_messages\x18\x01 \x03(\x0b\x32!.google.pubsub.v1.ReceivedMessageB\x03\xe0\x41\x01\x12\x66\n\x18\x61\x63knowledge_confirmation\x18\x05 \x01(\x0b\x32?.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmationB\x03\xe0\x41\x01\x12t\n modify_ack_deadline_confirmation\x18\x03 \x01(\x0b\x32\x45.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmationB\x03\xe0\x41\x01\x12\x64\n\x17subscription_properties\x18\x04 \x01(\x0b\x32>.google.pubsub.v1.StreamingPullResponse.SubscriptionPropertiesB\x03\xe0\x41\x01\x1a\x94\x01\n\x17\x41\x63knowledgeConfirmation\x12\x14\n\x07\x61\x63k_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1c\n\x0finvalid_ack_ids\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12\x1e\n\x11unordered_ack_ids\x18\x03 \x03(\tB\x03\xe0\x41\x01\x12%\n\x18temporary_failed_ack_ids\x18\x04 \x03(\tB\x03\xe0\x41\x01\x1az\n\x1dModifyAckDeadlineConfirmation\x12\x14\n\x07\x61\x63k_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1c\n\x0finvalid_ack_ids\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12%\n\x18temporary_failed_ack_ids\x18\x03 \x03(\tB\x03\xe0\x41\x01\x1ak\n\x16SubscriptionProperties\x12*\n\x1d\x65xactly_once_delivery_enabled\x18\x01 \x01(\x08\x42\x03\xe0\x41\x01\x12%\n\x18message_ordering_enabled\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"\x81\x03\n\x15\x43reateSnapshotRequest\x12\x34\n\x04name\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\x12@\n\x0csubscription\x18\x02 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12H\n\x06labels\x18\x03 \x03(\x0b\x32\x33.google.pubsub.v1.CreateSnapshotRequest.LabelsEntryB\x03\xe0\x41\x01\x12J\n\x04tags\x18\x04 \x03(\x0b\x32\x31.google.pubsub.v1.CreateSnapshotRequest.TagsEntryB\t\xe0\x41\x04\xe0\x41\x05\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x80\x01\n\x15UpdateSnapshotRequest\x12\x31\n\x08snapshot\x18\x01 \x01(\x0b\x32\x1a.google.pubsub.v1.SnapshotB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"\xd6\x02\n\x08Snapshot\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x32\n\x05topic\x18\x02 \x01(\tB#\xe0\x41\x01\xfa\x41\x1d\n\x1bpubsub.googleapis.com/Topic\x12\x34\n\x0b\x65xpire_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12;\n\x06labels\x18\x04 \x03(\x0b\x32&.google.pubsub.v1.Snapshot.LabelsEntryB\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:a\xea\x41^\n\x1epubsub.googleapis.com/Snapshot\x12\'projects/{project}/snapshots/{snapshot}*\tsnapshots2\x08snapshot\"N\n\x12GetSnapshotRequest\x12\x38\n\x08snapshot\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\"\x8d\x01\n\x14ListSnapshotsRequest\x12\x44\n\x07project\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"i\n\x15ListSnapshotsResponse\x12\x32\n\tsnapshots\x18\x01 \x03(\x0b\x32\x1a.google.pubsub.v1.SnapshotB\x03\xe0\x41\x01\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"Q\n\x15\x44\x65leteSnapshotRequest\x12\x38\n\x08snapshot\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1epubsub.googleapis.com/Snapshot\"\xc6\x01\n\x0bSeekRequest\x12@\n\x0csubscription\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"pubsub.googleapis.com/Subscription\x12/\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01H\x00\x12:\n\x08snapshot\x18\x03 \x01(\tB&\xe0\x41\x01\xfa\x41 \n\x1epubsub.googleapis.com/SnapshotH\x00\x42\x08\n\x06target\"\x0e\n\x0cSeekResponse2\xb8\x0b\n\tPublisher\x12q\n\x0b\x43reateTopic\x12\x17.google.pubsub.v1.Topic\x1a\x17.google.pubsub.v1.Topic\"0\xda\x41\x04name\x82\xd3\xe4\x93\x02#\x1a\x1e/v1/{name=projects/*/topics/*}:\x01*\x12\x91\x01\n\x0bUpdateTopic\x12$.google.pubsub.v1.UpdateTopicRequest\x1a\x17.google.pubsub.v1.Topic\"C\xda\x41\x11topic,update_mask\x82\xd3\xe4\x93\x02)2$/v1/{topic.name=projects/*/topics/*}:\x01*\x12\x93\x01\n\x07Publish\x12 .google.pubsub.v1.PublishRequest\x1a!.google.pubsub.v1.PublishResponse\"C\xda\x41\x0etopic,messages\x82\xd3\xe4\x93\x02,\"\'/v1/{topic=projects/*/topics/*}:publish:\x01*\x12w\n\x08GetTopic\x12!.google.pubsub.v1.GetTopicRequest\x1a\x17.google.pubsub.v1.Topic\"/\xda\x41\x05topic\x82\xd3\xe4\x93\x02!\x12\x1f/v1/{topic=projects/*/topics/*}\x12\x8a\x01\n\nListTopics\x12#.google.pubsub.v1.ListTopicsRequest\x1a$.google.pubsub.v1.ListTopicsResponse\"1\xda\x41\x07project\x82\xd3\xe4\x93\x02!\x12\x1f/v1/{project=projects/*}/topics\x12\xba\x01\n\x16ListTopicSubscriptions\x12/.google.pubsub.v1.ListTopicSubscriptionsRequest\x1a\x30.google.pubsub.v1.ListTopicSubscriptionsResponse\"=\xda\x41\x05topic\x82\xd3\xe4\x93\x02/\x12-/v1/{topic=projects/*/topics/*}/subscriptions\x12\xaa\x01\n\x12ListTopicSnapshots\x12+.google.pubsub.v1.ListTopicSnapshotsRequest\x1a,.google.pubsub.v1.ListTopicSnapshotsResponse\"9\xda\x41\x05topic\x82\xd3\xe4\x93\x02+\x12)/v1/{topic=projects/*/topics/*}/snapshots\x12|\n\x0b\x44\x65leteTopic\x12$.google.pubsub.v1.DeleteTopicRequest\x1a\x16.google.protobuf.Empty\"/\xda\x41\x05topic\x82\xd3\xe4\x93\x02!*\x1f/v1/{topic=projects/*/topics/*}\x12\xad\x01\n\x12\x44\x65tachSubscription\x12+.google.pubsub.v1.DetachSubscriptionRequest\x1a,.google.pubsub.v1.DetachSubscriptionResponse\"<\x82\xd3\xe4\x93\x02\x36\"4/v1/{subscription=projects/*/subscriptions/*}:detach\x1ap\xca\x41\x15pubsub.googleapis.com\xd2\x41Uhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub2\xd2\x15\n\nSubscriber\x12\xb4\x01\n\x12\x43reateSubscription\x12\x1e.google.pubsub.v1.Subscription\x1a\x1e.google.pubsub.v1.Subscription\"^\xda\x41+name,topic,push_config,ack_deadline_seconds\x82\xd3\xe4\x93\x02*\x1a%/v1/{name=projects/*/subscriptions/*}:\x01*\x12\xa1\x01\n\x0fGetSubscription\x12(.google.pubsub.v1.GetSubscriptionRequest\x1a\x1e.google.pubsub.v1.Subscription\"D\xda\x41\x0csubscription\x82\xd3\xe4\x93\x02/\x12-/v1/{subscription=projects/*/subscriptions/*}\x12\xbb\x01\n\x12UpdateSubscription\x12+.google.pubsub.v1.UpdateSubscriptionRequest\x1a\x1e.google.pubsub.v1.Subscription\"X\xda\x41\x18subscription,update_mask\x82\xd3\xe4\x93\x02\x37\x32\x32/v1/{subscription.name=projects/*/subscriptions/*}:\x01*\x12\xa6\x01\n\x11ListSubscriptions\x12*.google.pubsub.v1.ListSubscriptionsRequest\x1a+.google.pubsub.v1.ListSubscriptionsResponse\"8\xda\x41\x07project\x82\xd3\xe4\x93\x02(\x12&/v1/{project=projects/*}/subscriptions\x12\x9f\x01\n\x12\x44\x65leteSubscription\x12+.google.pubsub.v1.DeleteSubscriptionRequest\x1a\x16.google.protobuf.Empty\"D\xda\x41\x0csubscription\x82\xd3\xe4\x93\x02/*-/v1/{subscription=projects/*/subscriptions/*}\x12\xcf\x01\n\x11ModifyAckDeadline\x12*.google.pubsub.v1.ModifyAckDeadlineRequest\x1a\x16.google.protobuf.Empty\"v\xda\x41)subscription,ack_ids,ack_deadline_seconds\x82\xd3\xe4\x93\x02\x44\"?/v1/{subscription=projects/*/subscriptions/*}:modifyAckDeadline:\x01*\x12\xa8\x01\n\x0b\x41\x63knowledge\x12$.google.pubsub.v1.AcknowledgeRequest\x1a\x16.google.protobuf.Empty\"[\xda\x41\x14subscription,ack_ids\x82\xd3\xe4\x93\x02>\"9/v1/{subscription=projects/*/subscriptions/*}:acknowledge:\x01*\x12\xd0\x01\n\x04Pull\x12\x1d.google.pubsub.v1.PullRequest\x1a\x1e.google.pubsub.v1.PullResponse\"\x88\x01\xda\x41,subscription,return_immediately,max_messages\xda\x41\x19subscription,max_messages\x82\xd3\xe4\x93\x02\x37\"2/v1/{subscription=projects/*/subscriptions/*}:pull:\x01*\x12\x66\n\rStreamingPull\x12&.google.pubsub.v1.StreamingPullRequest\x1a\'.google.pubsub.v1.StreamingPullResponse\"\x00(\x01\x30\x01\x12\xbb\x01\n\x10ModifyPushConfig\x12).google.pubsub.v1.ModifyPushConfigRequest\x1a\x16.google.protobuf.Empty\"d\xda\x41\x18subscription,push_config\x82\xd3\xe4\x93\x02\x43\">/v1/{subscription=projects/*/subscriptions/*}:modifyPushConfig:\x01*\x12\x89\x01\n\x0bGetSnapshot\x12$.google.pubsub.v1.GetSnapshotRequest\x1a\x1a.google.pubsub.v1.Snapshot\"8\xda\x41\x08snapshot\x82\xd3\xe4\x93\x02\'\x12%/v1/{snapshot=projects/*/snapshots/*}\x12\x96\x01\n\rListSnapshots\x12&.google.pubsub.v1.ListSnapshotsRequest\x1a\'.google.pubsub.v1.ListSnapshotsResponse\"4\xda\x41\x07project\x82\xd3\xe4\x93\x02$\x12\"/v1/{project=projects/*}/snapshots\x12\x97\x01\n\x0e\x43reateSnapshot\x12\'.google.pubsub.v1.CreateSnapshotRequest\x1a\x1a.google.pubsub.v1.Snapshot\"@\xda\x41\x11name,subscription\x82\xd3\xe4\x93\x02&\x1a!/v1/{name=projects/*/snapshots/*}:\x01*\x12\xa3\x01\n\x0eUpdateSnapshot\x12\'.google.pubsub.v1.UpdateSnapshotRequest\x1a\x1a.google.pubsub.v1.Snapshot\"L\xda\x41\x14snapshot,update_mask\x82\xd3\xe4\x93\x02/2*/v1/{snapshot.name=projects/*/snapshots/*}:\x01*\x12\x8b\x01\n\x0e\x44\x65leteSnapshot\x12\'.google.pubsub.v1.DeleteSnapshotRequest\x1a\x16.google.protobuf.Empty\"8\xda\x41\x08snapshot\x82\xd3\xe4\x93\x02\'*%/v1/{snapshot=projects/*/snapshots/*}\x12\x84\x01\n\x04Seek\x12\x1d.google.pubsub.v1.SeekRequest\x1a\x1e.google.pubsub.v1.SeekResponse\"=\x82\xd3\xe4\x93\x02\x37\"2/v1/{subscription=projects/*/subscriptions/*}:seek:\x01*\x1ap\xca\x41\x15pubsub.googleapis.com\xd2\x41Uhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsubB\xa7\x03\n\x14\x63om.google.pubsub.v1B\x0bPubsubProtoP\x01Z5cloud.google.com/go/pubsub/v2/apiv1/pubsubpb;pubsubpb\xaa\x02\x16Google.Cloud.PubSub.V1\xca\x02\x16Google\\Cloud\\PubSub\\V1\xea\x02\x19Google::Cloud::PubSub::V1\xea\x41x\n!cloudkms.googleapis.com/CryptoKey\x12Sprojects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}\xea\x41\x7f\n#analyticshub.googleapis.com/Listing\x12Xprojects/{project}/locations/{location}/dataExchanges/{data_exchange}/listings/{listing}b\x06proto3" -pool = Google::Protobuf::DescriptorPool.generated_pool - -begin - pool.add_serialized_file(descriptor_data) -rescue TypeError - # Compatibility code: will be removed in the next major version. - require 'google/protobuf/descriptor_pb' - parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data) - parsed.clear_dependency - serialized = parsed.class.encode(parsed) - file = pool.add_serialized_file(serialized) - warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}" - imports = [ - ["google.protobuf.Timestamp", "google/protobuf/timestamp.proto"], - ["google.protobuf.Duration", "google/protobuf/duration.proto"], - ["google.protobuf.FieldMask", "google/protobuf/field_mask.proto"], - ] - imports.each do |type_name, expected_filename| - import_file = pool.lookup(type_name).file_descriptor - if import_file.name != expected_filename - warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}" - end - end - warn "Each proto file must use a consistent fully-qualified name." - warn "This will become an error in the next major version." -end +pool = ::Google::Protobuf::DescriptorPool.generated_pool +pool.add_serialized_file(descriptor_data) module Google module Cloud @@ -77,6 +54,8 @@ module V1 IngestionFailureEvent::ConfluentCloudFailureReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason").msgclass IngestionFailureEvent::AwsKinesisFailureReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason").msgclass JavaScriptUDF = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.JavaScriptUDF").msgclass + AIInference = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.AIInference").msgclass + AIInference::UnstructuredInference = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.AIInference.UnstructuredInference").msgclass MessageTransform = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.MessageTransform").msgclass Topic = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.Topic").msgclass Topic::State = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.Topic.State").enummodule @@ -106,6 +85,8 @@ module V1 PushConfig::NoWrapper = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.PushConfig.NoWrapper").msgclass BigQueryConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.BigQueryConfig").msgclass BigQueryConfig::State = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.BigQueryConfig.State").enummodule + BigtableConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.BigtableConfig").msgclass + BigtableConfig::State = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.BigtableConfig.State").enummodule CloudStorageConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.CloudStorageConfig").msgclass CloudStorageConfig::TextConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.CloudStorageConfig.TextConfig").msgclass CloudStorageConfig::AvroConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.CloudStorageConfig.AvroConfig").msgclass diff --git a/google-cloud-pubsub-v1/lib/google/pubsub/v1/schema_pb.rb b/google-cloud-pubsub-v1/lib/google/pubsub/v1/schema_pb.rb index 10e9e639aa0e..dc6fed83b432 100644 --- a/google-cloud-pubsub-v1/lib/google/pubsub/v1/schema_pb.rb +++ b/google-cloud-pubsub-v1/lib/google/pubsub/v1/schema_pb.rb @@ -14,30 +14,8 @@ descriptor_data = "\n\x1dgoogle/pubsub/v1/schema.proto\x12\x10google.pubsub.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbd\x02\n\x06Schema\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12+\n\x04type\x18\x02 \x01(\x0e\x32\x1d.google.pubsub.v1.Schema.Type\x12\x12\n\ndefinition\x18\x03 \x01(\t\x12\x1b\n\x0brevision_id\x18\x04 \x01(\tB\x06\xe0\x41\x05\xe0\x41\x03\x12=\n\x14revision_create_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\";\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fPROTOCOL_BUFFER\x10\x01\x12\x08\n\x04\x41VRO\x10\x02:F\xea\x41\x43\n\x1cpubsub.googleapis.com/Schema\x12#projects/{project}/schemas/{schema}\"\x8d\x01\n\x13\x43reateSchemaRequest\x12\x34\n\x06parent\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\x12\x1cpubsub.googleapis.com/Schema\x12-\n\x06schema\x18\x02 \x01(\x0b\x32\x18.google.pubsub.v1.SchemaB\x03\xe0\x41\x02\x12\x11\n\tschema_id\x18\x03 \x01(\t\"r\n\x10GetSchemaRequest\x12\x32\n\x04name\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\x12*\n\x04view\x18\x02 \x01(\x0e\x32\x1c.google.pubsub.v1.SchemaView\"\xac\x01\n\x12ListSchemasRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12*\n\x04view\x18\x02 \x01(\x0e\x32\x1c.google.pubsub.v1.SchemaView\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\"Y\n\x13ListSchemasResponse\x12)\n\x07schemas\x18\x01 \x03(\x0b\x32\x18.google.pubsub.v1.Schema\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xa3\x01\n\x1aListSchemaRevisionsRequest\x12\x32\n\x04name\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\x12*\n\x04view\x18\x02 \x01(\x0e\x32\x1c.google.pubsub.v1.SchemaView\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\"a\n\x1bListSchemaRevisionsResponse\x12)\n\x07schemas\x18\x01 \x03(\x0b\x32\x18.google.pubsub.v1.Schema\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"x\n\x13\x43ommitSchemaRequest\x12\x32\n\x04name\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\x12-\n\x06schema\x18\x02 \x01(\x0b\x32\x18.google.pubsub.v1.SchemaB\x03\xe0\x41\x02\"e\n\x15RollbackSchemaRequest\x12\x32\n\x04name\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\x12\x18\n\x0brevision_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\"m\n\x1b\x44\x65leteSchemaRevisionRequest\x12\x32\n\x04name\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\x12\x1a\n\x0brevision_id\x18\x02 \x01(\tB\x05\x18\x01\xe0\x41\x01\"I\n\x13\x44\x65leteSchemaRequest\x12\x32\n\x04name\x18\x01 \x01(\tB$\xe0\x41\x02\xfa\x41\x1e\n\x1cpubsub.googleapis.com/Schema\"\x8b\x01\n\x15ValidateSchemaRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12-\n\x06schema\x18\x02 \x01(\x0b\x32\x18.google.pubsub.v1.SchemaB\x03\xe0\x41\x02\"\x18\n\x16ValidateSchemaResponse\"\x8a\x02\n\x16ValidateMessageRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x31\n\x04name\x18\x02 \x01(\tB!\xfa\x41\x1e\n\x1cpubsub.googleapis.com/SchemaH\x00\x12*\n\x06schema\x18\x03 \x01(\x0b\x32\x18.google.pubsub.v1.SchemaH\x00\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12,\n\x08\x65ncoding\x18\x05 \x01(\x0e\x32\x1a.google.pubsub.v1.EncodingB\r\n\x0bschema_spec\"\x19\n\x17ValidateMessageResponse*>\n\nSchemaView\x12\x1b\n\x17SCHEMA_VIEW_UNSPECIFIED\x10\x00\x12\t\n\x05\x42\x41SIC\x10\x01\x12\x08\n\x04\x46ULL\x10\x02*:\n\x08\x45ncoding\x12\x18\n\x14\x45NCODING_UNSPECIFIED\x10\x00\x12\x08\n\x04JSON\x10\x01\x12\n\n\x06\x42INARY\x10\x02\x32\x88\r\n\rSchemaService\x12\x9a\x01\n\x0c\x43reateSchema\x12%.google.pubsub.v1.CreateSchemaRequest\x1a\x18.google.pubsub.v1.Schema\"I\xda\x41\x17parent,schema,schema_id\x82\xd3\xe4\x93\x02)\"\x1f/v1/{parent=projects/*}/schemas:\x06schema\x12y\n\tGetSchema\x12\".google.pubsub.v1.GetSchemaRequest\x1a\x18.google.pubsub.v1.Schema\".\xda\x41\x04name\x82\xd3\xe4\x93\x02!\x12\x1f/v1/{name=projects/*/schemas/*}\x12\x8c\x01\n\x0bListSchemas\x12$.google.pubsub.v1.ListSchemasRequest\x1a%.google.pubsub.v1.ListSchemasResponse\"0\xda\x41\x06parent\x82\xd3\xe4\x93\x02!\x12\x1f/v1/{parent=projects/*}/schemas\x12\xb0\x01\n\x13ListSchemaRevisions\x12,.google.pubsub.v1.ListSchemaRevisionsRequest\x1a-.google.pubsub.v1.ListSchemaRevisionsResponse\"<\xda\x41\x04name\x82\xd3\xe4\x93\x02/\x12-/v1/{name=projects/*/schemas/*}:listRevisions\x12\x90\x01\n\x0c\x43ommitSchema\x12%.google.pubsub.v1.CommitSchemaRequest\x1a\x18.google.pubsub.v1.Schema\"?\xda\x41\x0bname,schema\x82\xd3\xe4\x93\x02+\"&/v1/{name=projects/*/schemas/*}:commit:\x01*\x12\x9b\x01\n\x0eRollbackSchema\x12\'.google.pubsub.v1.RollbackSchemaRequest\x1a\x18.google.pubsub.v1.Schema\"F\xda\x41\x10name,revision_id\x82\xd3\xe4\x93\x02-\"(/v1/{name=projects/*/schemas/*}:rollback:\x01*\x12\xaa\x01\n\x14\x44\x65leteSchemaRevision\x12-.google.pubsub.v1.DeleteSchemaRevisionRequest\x1a\x18.google.pubsub.v1.Schema\"I\xda\x41\x10name,revision_id\x82\xd3\xe4\x93\x02\x30*./v1/{name=projects/*/schemas/*}:deleteRevision\x12}\n\x0c\x44\x65leteSchema\x12%.google.pubsub.v1.DeleteSchemaRequest\x1a\x16.google.protobuf.Empty\".\xda\x41\x04name\x82\xd3\xe4\x93\x02!*\x1f/v1/{name=projects/*/schemas/*}\x12\xa8\x01\n\x0eValidateSchema\x12\'.google.pubsub.v1.ValidateSchemaRequest\x1a(.google.pubsub.v1.ValidateSchemaResponse\"C\xda\x41\rparent,schema\x82\xd3\xe4\x93\x02-\"(/v1/{parent=projects/*}/schemas:validate:\x01*\x12\xa2\x01\n\x0fValidateMessage\x12(.google.pubsub.v1.ValidateMessageRequest\x1a).google.pubsub.v1.ValidateMessageResponse\":\x82\xd3\xe4\x93\x02\x34\"//v1/{parent=projects/*}/schemas:validateMessage:\x01*\x1ap\xca\x41\x15pubsub.googleapis.com\xd2\x41Uhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsubB\xaa\x01\n\x14\x63om.google.pubsub.v1B\x0bSchemaProtoP\x01Z5cloud.google.com/go/pubsub/v2/apiv1/pubsubpb;pubsubpb\xaa\x02\x16Google.Cloud.PubSub.V1\xca\x02\x16Google\\Cloud\\PubSub\\V1\xea\x02\x19Google::Cloud::PubSub::V1b\x06proto3" -pool = Google::Protobuf::DescriptorPool.generated_pool - -begin - pool.add_serialized_file(descriptor_data) -rescue TypeError - # Compatibility code: will be removed in the next major version. - require 'google/protobuf/descriptor_pb' - parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data) - parsed.clear_dependency - serialized = parsed.class.encode(parsed) - file = pool.add_serialized_file(serialized) - warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}" - imports = [ - ["google.protobuf.Timestamp", "google/protobuf/timestamp.proto"], - ] - imports.each do |type_name, expected_filename| - import_file = pool.lookup(type_name).file_descriptor - if import_file.name != expected_filename - warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}" - end - end - warn "Each proto file must use a consistent fully-qualified name." - warn "This will become an error in the next major version." -end +pool = ::Google::Protobuf::DescriptorPool.generated_pool +pool.add_serialized_file(descriptor_data) module Google module Cloud diff --git a/google-cloud-pubsub-v1/proto_docs/google/protobuf/struct.rb b/google-cloud-pubsub-v1/proto_docs/google/protobuf/struct.rb new file mode 100644 index 000000000000..39e1aca868d2 --- /dev/null +++ b/google-cloud-pubsub-v1/proto_docs/google/protobuf/struct.rb @@ -0,0 +1,108 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Protobuf + # `Struct` represents a structured data value, consisting of fields + # which map to dynamically typed values. In some languages, `Struct` + # might be supported by a native representation. For example, in + # scripting languages like JS a struct is represented as an + # object. The details of that representation are described together + # with the proto support for the language. + # + # The JSON representation for `Struct` is JSON object. + # @!attribute [rw] fields + # @return [::Google::Protobuf::Map{::String => ::Google::Protobuf::Value}] + # Unordered map of dynamically typed values. + class Struct + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] value + # @return [::Google::Protobuf::Value] + class FieldsEntry + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # `Value` represents a dynamically typed value which can be either + # null, a number, a string, a boolean, a recursive struct value, or a + # list of values. A producer of value is expected to set one of these + # variants. Absence of any variant indicates an error. + # + # The JSON representation for `Value` is JSON value. + # @!attribute [rw] null_value + # @return [::Google::Protobuf::NullValue] + # Represents a null value. + # + # Note: The following fields are mutually exclusive: `null_value`, `number_value`, `string_value`, `bool_value`, `struct_value`, `list_value`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] number_value + # @return [::Float] + # Represents a double value. + # + # Note: The following fields are mutually exclusive: `number_value`, `null_value`, `string_value`, `bool_value`, `struct_value`, `list_value`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] string_value + # @return [::String] + # Represents a string value. + # + # Note: The following fields are mutually exclusive: `string_value`, `null_value`, `number_value`, `bool_value`, `struct_value`, `list_value`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] bool_value + # @return [::Boolean] + # Represents a boolean value. + # + # Note: The following fields are mutually exclusive: `bool_value`, `null_value`, `number_value`, `string_value`, `struct_value`, `list_value`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] struct_value + # @return [::Google::Protobuf::Struct] + # Represents a structured value. + # + # Note: The following fields are mutually exclusive: `struct_value`, `null_value`, `number_value`, `string_value`, `bool_value`, `list_value`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] list_value + # @return [::Google::Protobuf::ListValue] + # Represents a repeated `Value`. + # + # Note: The following fields are mutually exclusive: `list_value`, `null_value`, `number_value`, `string_value`, `bool_value`, `struct_value`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class Value + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `ListValue` is a wrapper around a repeated field of values. + # + # The JSON representation for `ListValue` is JSON array. + # @!attribute [rw] values + # @return [::Array<::Google::Protobuf::Value>] + # Repeated field of dynamically typed values. + class ListValue + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `NullValue` is a singleton enumeration to represent the null value for the + # `Value` type union. + # + # The JSON representation for `NullValue` is JSON `null`. + module NullValue + # Null value. + NULL_VALUE = 0 + end + end +end diff --git a/google-cloud-pubsub-v1/proto_docs/google/pubsub/v1/pubsub.rb b/google-cloud-pubsub-v1/proto_docs/google/pubsub/v1/pubsub.rb index 3ce2a2024198..aa6dd4c33ea6 100644 --- a/google-cloud-pubsub-v1/proto_docs/google/pubsub/v1/pubsub.rb +++ b/google-cloud-pubsub-v1/proto_docs/google/pubsub/v1/pubsub.rb @@ -753,11 +753,54 @@ class JavaScriptUDF extend ::Google::Protobuf::MessageExts::ClassMethods end + # Configuration for making inference requests against Vertex AI models. + # @!attribute [rw] endpoint + # @return [::String] + # Required. An endpoint to a Vertex AI model of the form + # `projects/{project}/locations/{location}/endpoints/{endpoint}` or + # `projects/{project}/locations/{location}/publishers/{publisher}/models/{model}`. + # Vertex AI API requests will be sent to this endpoint. + # @!attribute [rw] unstructured_inference + # @return [::Google::Cloud::PubSub::V1::AIInference::UnstructuredInference] + # Optional. Requests and responses can be any arbitrary JSON object. + # @!attribute [rw] service_account_email + # @return [::String] + # Optional. The service account to use to make prediction requests against + # endpoints. The resource 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](\\{$universe.dns_names.final_documentation_domain}/iam/docs/service-agents), + # service-\\{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used. + class AIInference + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Configuration for making inferences using arbitrary JSON payloads. + # @!attribute [rw] parameters + # @return [::Google::Protobuf::Struct] + # Optional. A parameters object to be included in each inference request. + # The parameters object is combined with the data field of the Pub/Sub + # message to form the inference request. + class UnstructuredInference + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + # All supported message transforms types. # @!attribute [rw] javascript_udf # @return [::Google::Cloud::PubSub::V1::JavaScriptUDF] # Optional. JavaScript User Defined Function. If multiple JavaScriptUDF's # are specified on a resource, each must have a unique `function_name`. + # + # Note: The following fields are mutually exclusive: `javascript_udf`, `ai_inference`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] ai_inference + # @return [::Google::Cloud::PubSub::V1::AIInference] + # Optional. AI Inference. Specifies the Vertex AI endpoint that inference + # requests built from the Pub/Sub message data and provided parameters will + # be sent to. + # + # Note: The following fields are mutually exclusive: `ai_inference`, `javascript_udf`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] enabled # @deprecated This field is deprecated and may be removed in the next major version update. # @return [::Boolean] @@ -830,6 +873,8 @@ class MessageTransform # resource. For example: # "123/environment": "production", # "123/costCenter": "marketing" + # See https://docs.cloud.google.com/pubsub/docs/tags for more information on + # using tags with Pub/Sub resources. class Topic include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -922,7 +967,7 @@ class AttributesEntry # Request for the GetTopic method. # @!attribute [rw] topic # @return [::String] - # Required. Identifier. The name of the topic to get. + # Required. The name of the topic to get. # Format is `projects/{project}/topics/{topic}`. class GetTopicRequest include ::Google::Protobuf::MessageExts @@ -948,8 +993,8 @@ class UpdateTopicRequest # Request for the Publish method. # @!attribute [rw] topic # @return [::String] - # Required. Identifier. The messages in the request will be published on this - # topic. Format is `projects/{project}/topics/{topic}`. + # Required. The messages in the request will be published on this topic. + # Format is `projects/{project}/topics/{topic}`. # @!attribute [rw] messages # @return [::Array<::Google::Cloud::PubSub::V1::PubsubMessage>] # Required. The messages to publish. @@ -972,7 +1017,7 @@ class PublishResponse # Request for the `ListTopics` method. # @!attribute [rw] project # @return [::String] - # Required. Identifier. The name of the project in which to list topics. + # Required. The name of the project in which to list topics. # Format is `projects/{project-id}`. # @!attribute [rw] page_size # @return [::Integer] @@ -1068,7 +1113,7 @@ class ListTopicSnapshotsResponse # Request for the `DeleteTopic` method. # @!attribute [rw] topic # @return [::String] - # Required. Identifier. Name of the topic to delete. + # Required. Name of the topic to delete. # Format is `projects/{project}/topics/{topic}`. class DeleteTopicRequest include ::Google::Protobuf::MessageExts @@ -1120,6 +1165,10 @@ class DetachSubscriptionResponse # @return [::Google::Cloud::PubSub::V1::CloudStorageConfig] # Optional. If delivery to Google Cloud Storage is used with this # subscription, this field is used to configure it. + # @!attribute [rw] bigtable_config + # @return [::Google::Cloud::PubSub::V1::BigtableConfig] + # Optional. If delivery to Bigtable is used with this subscription, this + # field is used to configure it. # @!attribute [rw] ack_deadline_seconds # @return [::Integer] # Optional. The approximate amount of time (on a best-effort basis) Pub/Sub @@ -1238,7 +1287,7 @@ class DetachSubscriptionResponse # @!attribute [r] analytics_hub_subscription_info # @return [::Google::Cloud::PubSub::V1::Subscription::AnalyticsHubSubscriptionInfo] # Output only. Information about the associated Analytics Hub subscription. - # Only set if the subscritpion is created by Analytics Hub. + # Only set if the subscription is created by Analytics Hub. # @!attribute [rw] message_transforms # @return [::Array<::Google::Cloud::PubSub::V1::MessageTransform>] # Optional. Transforms to be applied to messages before they are delivered to @@ -1249,6 +1298,8 @@ class DetachSubscriptionResponse # resource. For example: # "123/environment": "production", # "123/costCenter": "marketing" + # See https://docs.cloud.google.com/pubsub/docs/tags for more information on + # using tags with Pub/Sub resources. class Subscription include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -1551,6 +1602,92 @@ module State # Cannot write to the destination because enforce_in_transit is set to true # and the destination locations are not in the allowed regions. IN_TRANSIT_LOCATION_RESTRICTION = 5 + + # Cannot write to the BigQuery table because the table is not in the same + # location as where Vertex AI models used in `message_transform`s are + # deployed. + VERTEX_AI_LOCATION_RESTRICTION = 6 + end + end + + # Configuration for a Bigtable subscription. The Pub/Sub message will be + # written to a Bigtable row as follows: + # - row key: subscription name and message ID delimited by #. + # - columns: message bytes written to a single column family "data" with an + # empty-string column qualifier. + # - cell timestamp: the message publish timestamp. + # @!attribute [rw] table + # @return [::String] + # Optional. The unique name of the table to write messages to. + # + # Values are of the form + # `projects//instances//tables/`. + # @!attribute [rw] app_profile_id + # @return [::String] + # Optional. The app profile to use for the Bigtable writes. If not specified, + # the "default" application profile will be used. The app profile must use + # single-cluster routing. + # @!attribute [rw] service_account_email + # @return [::String] + # Optional. The service account to use to write to Bigtable. 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. + # @!attribute [rw] write_metadata + # @return [::Boolean] + # Optional. When true, write the subscription name, message_id, publish_time, + # attributes, and ordering_key to additional columns in the table under the + # pubsub_metadata column family. 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. + # @!attribute [r] state + # @return [::Google::Cloud::PubSub::V1::BigtableConfig::State] + # Output only. An output-only field that indicates whether or not the + # subscription can receive messages. + class BigtableConfig + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Possible states for a Bigtable subscription. + # Note: more states could be added in the future. Please code accordingly. + module State + # Default value. This value is unused. + STATE_UNSPECIFIED = 0 + + # The subscription can actively send messages to Bigtable. + ACTIVE = 1 + + # Cannot write to Bigtable because the instance, table, or app profile + # does not exist. + NOT_FOUND = 2 + + # Cannot write to Bigtable because the app profile is not configured for + # single-cluster routing. + APP_PROFILE_MISCONFIGURED = 3 + + # Cannot write to Bigtable because of permission denied errors. + # This can happen if: + # - The Pub/Sub service agent has not been granted the + # [appropriate Bigtable IAM permission + # bigtable.tables.mutateRows](\\{$universe.dns_names.final_documentation_domain}/bigtable/docs/access-control#permissions) + # - The bigtable.googleapis.com API is not enabled for the project + # ([instructions](\\{$universe.dns_names.final_documentation_domain}/service-usage/docs/enable-disable)) + PERMISSION_DENIED = 4 + + # Cannot write to Bigtable because of a missing column family ("data") or + # if there is no structured row key for the subscription name + message ID. + SCHEMA_MISMATCH = 5 + + # Cannot write to the destination because enforce_in_transit is set to true + # and the destination locations are not in the allowed regions. + IN_TRANSIT_LOCATION_RESTRICTION = 6 + + # Cannot write to Bigtable because the table is not in the same location as + # where Vertex AI models used in `message_transform`s are deployed. + VERTEX_AI_LOCATION_RESTRICTION = 7 end end @@ -1666,6 +1803,11 @@ module State # Cannot write to the Cloud Storage bucket due to an incompatibility # between the topic schema and subscription settings. SCHEMA_MISMATCH = 5 + + # Cannot write to the Cloud Storage bucket because the bucket is not in the + # same location as where Vertex AI models used in `message_transform`s are + # deployed. + VERTEX_AI_LOCATION_RESTRICTION = 6 end end @@ -1702,7 +1844,7 @@ class ReceivedMessage # Request for the GetSubscription method. # @!attribute [rw] subscription # @return [::String] - # Required. Identifier. The name of the subscription to get. + # Required. The name of the subscription to get. # Format is `projects/{project}/subscriptions/{sub}`. class GetSubscriptionRequest include ::Google::Protobuf::MessageExts @@ -1725,8 +1867,8 @@ class UpdateSubscriptionRequest # Request for the `ListSubscriptions` method. # @!attribute [rw] project # @return [::String] - # Required. Identifier. The name of the project in which to list - # subscriptions. Format is `projects/{project-id}`. + # Required. The name of the project in which to list subscriptions. + # Format is `projects/{project-id}`. # @!attribute [rw] page_size # @return [::Integer] # Optional. Maximum number of subscriptions to return. @@ -1757,7 +1899,7 @@ class ListSubscriptionsResponse # Request for the DeleteSubscription method. # @!attribute [rw] subscription # @return [::String] - # Required. Identifier. The subscription to delete. + # Required. The subscription to delete. # Format is `projects/{project}/subscriptions/{sub}`. class DeleteSubscriptionRequest include ::Google::Protobuf::MessageExts @@ -2017,10 +2159,10 @@ class SubscriptionProperties # Request for the `CreateSnapshot` method. # @!attribute [rw] name # @return [::String] - # Required. Identifier. User-provided name for this snapshot. If the name is - # not provided in the request, the server will assign a random name for this - # snapshot on the same project as the subscription. Note that for REST API - # requests, you must specify a name. See the [resource name + # Required. User-provided name for this snapshot. If the name is not provided + # in the request, the server will assign a random name for this snapshot on + # the same project as the subscription. Note that for REST API requests, you + # must specify a name. See the [resource name # rules](https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). # Format is `projects/{project}/snapshots/{snap}`. # @!attribute [rw] subscription @@ -2044,6 +2186,8 @@ class SubscriptionProperties # resource. For example: # "123/environment": "production", # "123/costCenter": "marketing" + # See https://docs.cloud.google.com/pubsub/docs/tags for more information on + # using tags with Pub/Sub resources. class CreateSnapshotRequest include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -2125,7 +2269,7 @@ class LabelsEntry # Request for the GetSnapshot method. # @!attribute [rw] snapshot # @return [::String] - # Required. Identifier. The name of the snapshot to get. + # Required. The name of the snapshot to get. # Format is `projects/{project}/snapshots/{snap}`. class GetSnapshotRequest include ::Google::Protobuf::MessageExts @@ -2135,7 +2279,7 @@ class GetSnapshotRequest # Request for the `ListSnapshots` method. # @!attribute [rw] project # @return [::String] - # Required. Identifier. The name of the project in which to list snapshots. + # Required. The name of the project in which to list snapshots. # Format is `projects/{project-id}`. # @!attribute [rw] page_size # @return [::Integer] @@ -2167,7 +2311,7 @@ class ListSnapshotsResponse # Request for the `DeleteSnapshot` method. # @!attribute [rw] snapshot # @return [::String] - # Required. Identifier. The name of the snapshot to delete. + # Required. The name of the snapshot to delete. # Format is `projects/{project}/snapshots/{snap}`. class DeleteSnapshotRequest include ::Google::Protobuf::MessageExts diff --git a/google-cloud-pubsub-v1/test/google/cloud/pubsub/v1/subscription_admin_test.rb b/google-cloud-pubsub-v1/test/google/cloud/pubsub/v1/subscription_admin_test.rb index 7cc775e2ee33..140af73222ba 100644 --- a/google-cloud-pubsub-v1/test/google/cloud/pubsub/v1/subscription_admin_test.rb +++ b/google-cloud-pubsub-v1/test/google/cloud/pubsub/v1/subscription_admin_test.rb @@ -76,6 +76,7 @@ def test_create_subscription push_config = {} bigquery_config = {} cloud_storage_config = {} + bigtable_config = {} ack_deadline_seconds = 42 retain_acked_messages = true message_retention_duration = {} @@ -101,6 +102,7 @@ def test_create_subscription assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::PubSub::V1::PushConfig), request["push_config"] assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::PubSub::V1::BigQueryConfig), request["bigquery_config"] assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::PubSub::V1::CloudStorageConfig), request["cloud_storage_config"] + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::PubSub::V1::BigtableConfig), request["bigtable_config"] assert_equal 42, request["ack_deadline_seconds"] assert_equal true, request["retain_acked_messages"] assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Protobuf::Duration), request["message_retention_duration"] @@ -127,31 +129,31 @@ def test_create_subscription end # Use hash object - client.create_subscription({ name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags }) do |response, operation| + client.create_subscription({ name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, bigtable_config: bigtable_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags }) do |response, operation| assert_equal grpc_response, response assert_equal grpc_operation, operation end # Use named arguments - client.create_subscription name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags do |response, operation| + client.create_subscription name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, bigtable_config: bigtable_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags do |response, operation| assert_equal grpc_response, response assert_equal grpc_operation, operation end # Use protobuf object - client.create_subscription ::Google::Cloud::PubSub::V1::Subscription.new(name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags) do |response, operation| + client.create_subscription ::Google::Cloud::PubSub::V1::Subscription.new(name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, bigtable_config: bigtable_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags) do |response, operation| assert_equal grpc_response, response assert_equal grpc_operation, operation end # Use hash object with options - client.create_subscription({ name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags }, grpc_options) do |response, operation| + client.create_subscription({ name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, bigtable_config: bigtable_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags }, grpc_options) do |response, operation| assert_equal grpc_response, response assert_equal grpc_operation, operation end # Use protobuf object with options - client.create_subscription(::Google::Cloud::PubSub::V1::Subscription.new(name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags), grpc_options) do |response, operation| + client.create_subscription(::Google::Cloud::PubSub::V1::Subscription.new(name: name, topic: topic, push_config: push_config, bigquery_config: bigquery_config, cloud_storage_config: cloud_storage_config, bigtable_config: bigtable_config, ack_deadline_seconds: ack_deadline_seconds, retain_acked_messages: retain_acked_messages, message_retention_duration: message_retention_duration, labels: labels, enable_message_ordering: enable_message_ordering, expiration_policy: expiration_policy, filter: filter, dead_letter_policy: dead_letter_policy, retry_policy: retry_policy, detached: detached, enable_exactly_once_delivery: enable_exactly_once_delivery, topic_message_retention_duration: topic_message_retention_duration, state: state, analytics_hub_subscription_info: analytics_hub_subscription_info, message_transforms: message_transforms, tags: tags), grpc_options) do |response, operation| assert_equal grpc_response, response assert_equal grpc_operation, operation end diff --git a/google-cloud-pubsub-v1/test/helper.rb b/google-cloud-pubsub-v1/test/helper.rb index 0df3a49d3ec2..224004ae7c6f 100644 --- a/google-cloud-pubsub-v1/test/helper.rb +++ b/google-cloud-pubsub-v1/test/helper.rb @@ -18,6 +18,7 @@ require "minitest/autorun" require "minitest/focus" +require "minitest/mock" require "minitest/rg" require "grpc"