google-apis-analyticshub_v1 0.21.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,35 @@ module Google
22
22
  module Apis
23
23
  module AnalyticshubV1
24
24
 
25
+ # Information about an associated Analytics Hub subscription (https://cloud.
26
+ # google.com/bigquery/docs/analytics-hub-manage-subscriptions).
27
+ class AnalyticsHubSubscriptionInfo
28
+ include Google::Apis::Core::Hashable
29
+
30
+ # Optional. The name of the associated Analytics Hub listing resource. Pattern: "
31
+ # projects/`project`/locations/`location`/dataExchanges/`data_exchange`/listings/
32
+ # `listing`"
33
+ # Corresponds to the JSON property `listing`
34
+ # @return [String]
35
+ attr_accessor :listing
36
+
37
+ # Optional. The name of the associated Analytics Hub subscription resource.
38
+ # Pattern: "projects/`project`/locations/`location`/subscriptions/`subscription`"
39
+ # Corresponds to the JSON property `subscription`
40
+ # @return [String]
41
+ attr_accessor :subscription
42
+
43
+ def initialize(**args)
44
+ update!(**args)
45
+ end
46
+
47
+ # Update properties of this object
48
+ def update!(**args)
49
+ @listing = args[:listing] if args.key?(:listing)
50
+ @subscription = args[:subscription] if args.key?(:subscription)
51
+ end
52
+ end
53
+
25
54
  # Specifies the audit configuration for a service. The configuration determines
26
55
  # which permission types are logged, and what identities, if any, are exempted
27
56
  # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
@@ -93,6 +122,116 @@ module Google
93
122
  end
94
123
  end
95
124
 
125
+ # Configuration for writing message data in Avro format. Message payloads and
126
+ # metadata will be written to files as an Avro binary.
127
+ class AvroConfig
128
+ include Google::Apis::Core::Hashable
129
+
130
+ # Optional. When true, the output Cloud Storage file will be serialized using
131
+ # the topic schema, if it exists.
132
+ # Corresponds to the JSON property `useTopicSchema`
133
+ # @return [Boolean]
134
+ attr_accessor :use_topic_schema
135
+ alias_method :use_topic_schema?, :use_topic_schema
136
+
137
+ # Optional. When true, write the subscription name, message_id, publish_time,
138
+ # attributes, and ordering_key as additional fields in the output. The
139
+ # subscription name, message_id, and publish_time fields are put in their own
140
+ # fields while all other message properties other than data (for example, an
141
+ # ordering_key, if present) are added as entries in the attributes map.
142
+ # Corresponds to the JSON property `writeMetadata`
143
+ # @return [Boolean]
144
+ attr_accessor :write_metadata
145
+ alias_method :write_metadata?, :write_metadata
146
+
147
+ def initialize(**args)
148
+ update!(**args)
149
+ end
150
+
151
+ # Update properties of this object
152
+ def update!(**args)
153
+ @use_topic_schema = args[:use_topic_schema] if args.key?(:use_topic_schema)
154
+ @write_metadata = args[:write_metadata] if args.key?(:write_metadata)
155
+ end
156
+ end
157
+
158
+ # Configuration for a BigQuery subscription.
159
+ class BigQueryConfig
160
+ include Google::Apis::Core::Hashable
161
+
162
+ # Optional. When true and use_topic_schema is true, any fields that are a part
163
+ # of the topic schema that are not part of the BigQuery table schema are dropped
164
+ # when writing to BigQuery. Otherwise, the schemas must be kept in sync and any
165
+ # messages with extra fields are not written and remain in the subscription's
166
+ # backlog.
167
+ # Corresponds to the JSON property `dropUnknownFields`
168
+ # @return [Boolean]
169
+ attr_accessor :drop_unknown_fields
170
+ alias_method :drop_unknown_fields?, :drop_unknown_fields
171
+
172
+ # Optional. The service account to use to write to BigQuery. The subscription
173
+ # creator or updater that specifies this field must have `iam.serviceAccounts.
174
+ # actAs` permission on the service account. If not specified, the Pub/Sub [
175
+ # service agent](https://cloud.google.com/iam/docs/service-agents), service-`
176
+ # project_number`@gcp-sa-pubsub.iam.gserviceaccount.com, is used.
177
+ # Corresponds to the JSON property `serviceAccountEmail`
178
+ # @return [String]
179
+ attr_accessor :service_account_email
180
+
181
+ # Output only. An output-only field that indicates whether or not the
182
+ # subscription can receive messages.
183
+ # Corresponds to the JSON property `state`
184
+ # @return [String]
185
+ attr_accessor :state
186
+
187
+ # Optional. The name of the table to which to write data, of the form `projectId`
188
+ # .`datasetId`.`tableId`
189
+ # Corresponds to the JSON property `table`
190
+ # @return [String]
191
+ attr_accessor :table
192
+
193
+ # Optional. When true, use the BigQuery table's schema as the columns to write
194
+ # to in BigQuery. `use_table_schema` and `use_topic_schema` cannot be enabled at
195
+ # the same time.
196
+ # Corresponds to the JSON property `useTableSchema`
197
+ # @return [Boolean]
198
+ attr_accessor :use_table_schema
199
+ alias_method :use_table_schema?, :use_table_schema
200
+
201
+ # Optional. When true, use the topic's schema as the columns to write to in
202
+ # BigQuery, if it exists. `use_topic_schema` and `use_table_schema` cannot be
203
+ # enabled at the same time.
204
+ # Corresponds to the JSON property `useTopicSchema`
205
+ # @return [Boolean]
206
+ attr_accessor :use_topic_schema
207
+ alias_method :use_topic_schema?, :use_topic_schema
208
+
209
+ # Optional. When true, write the subscription name, message_id, publish_time,
210
+ # attributes, and ordering_key to additional columns in the table. The
211
+ # subscription name, message_id, and publish_time fields are put in their own
212
+ # columns while all other message properties (other than data) are written to a
213
+ # JSON object in the attributes column.
214
+ # Corresponds to the JSON property `writeMetadata`
215
+ # @return [Boolean]
216
+ attr_accessor :write_metadata
217
+ alias_method :write_metadata?, :write_metadata
218
+
219
+ def initialize(**args)
220
+ update!(**args)
221
+ end
222
+
223
+ # Update properties of this object
224
+ def update!(**args)
225
+ @drop_unknown_fields = args[:drop_unknown_fields] if args.key?(:drop_unknown_fields)
226
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
227
+ @state = args[:state] if args.key?(:state)
228
+ @table = args[:table] if args.key?(:table)
229
+ @use_table_schema = args[:use_table_schema] if args.key?(:use_table_schema)
230
+ @use_topic_schema = args[:use_topic_schema] if args.key?(:use_topic_schema)
231
+ @write_metadata = args[:write_metadata] if args.key?(:write_metadata)
232
+ end
233
+ end
234
+
96
235
  # A reference to a shared dataset. It is an existing BigQuery dataset with a
97
236
  # collection of objects such as tables and views that you want to share with
98
237
  # subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a
@@ -113,9 +252,8 @@ module Google
113
252
  # @return [Google::Apis::AnalyticshubV1::RestrictedExportPolicy]
114
253
  attr_accessor :restricted_export_policy
115
254
 
116
- # Optional. Resources in this dataset that are selectively shared. If this field
117
- # is empty, then the entire dataset (all resources) are shared. This field is
118
- # only valid for data clean room exchanges.
255
+ # Optional. Resource in this dataset that is selectively shared. This field is
256
+ # required for data clean room exchanges.
119
257
  # Corresponds to the JSON property `selectedResources`
120
258
  # @return [Array<Google::Apis::AnalyticshubV1::SelectedResource>]
121
259
  attr_accessor :selected_resources
@@ -233,6 +371,105 @@ module Google
233
371
  end
234
372
  end
235
373
 
374
+ # Configuration for a Cloud Storage subscription.
375
+ class CloudStorageConfig
376
+ include Google::Apis::Core::Hashable
377
+
378
+ # Configuration for writing message data in Avro format. Message payloads and
379
+ # metadata will be written to files as an Avro binary.
380
+ # Corresponds to the JSON property `avroConfig`
381
+ # @return [Google::Apis::AnalyticshubV1::AvroConfig]
382
+ attr_accessor :avro_config
383
+
384
+ # Required. User-provided name for the Cloud Storage bucket. The bucket must be
385
+ # created by the user. The bucket name must be without any prefix like "gs://".
386
+ # See the [bucket naming requirements] (https://cloud.google.com/storage/docs/
387
+ # buckets#naming).
388
+ # Corresponds to the JSON property `bucket`
389
+ # @return [String]
390
+ attr_accessor :bucket
391
+
392
+ # Optional. User-provided format string specifying how to represent datetimes in
393
+ # Cloud Storage filenames. See the [datetime format guidance](https://cloud.
394
+ # google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
395
+ # Corresponds to the JSON property `filenameDatetimeFormat`
396
+ # @return [String]
397
+ attr_accessor :filename_datetime_format
398
+
399
+ # Optional. User-provided prefix for Cloud Storage filename. See the [object
400
+ # naming requirements](https://cloud.google.com/storage/docs/objects#naming).
401
+ # Corresponds to the JSON property `filenamePrefix`
402
+ # @return [String]
403
+ attr_accessor :filename_prefix
404
+
405
+ # Optional. User-provided suffix for Cloud Storage filename. See the [object
406
+ # naming requirements](https://cloud.google.com/storage/docs/objects#naming).
407
+ # Must not end in "/".
408
+ # Corresponds to the JSON property `filenameSuffix`
409
+ # @return [String]
410
+ attr_accessor :filename_suffix
411
+
412
+ # Optional. The maximum bytes that can be written to a Cloud Storage file before
413
+ # a new file is created. Min 1 KB, max 10 GiB. The max_bytes limit may be
414
+ # exceeded in cases where messages are larger than the limit.
415
+ # Corresponds to the JSON property `maxBytes`
416
+ # @return [Fixnum]
417
+ attr_accessor :max_bytes
418
+
419
+ # Optional. The maximum duration that can elapse before a new Cloud Storage file
420
+ # is created. Min 1 minute, max 10 minutes, default 5 minutes. May not exceed
421
+ # the subscription's acknowledgement deadline.
422
+ # Corresponds to the JSON property `maxDuration`
423
+ # @return [String]
424
+ attr_accessor :max_duration
425
+
426
+ # Optional. The maximum number of messages that can be written to a Cloud
427
+ # Storage file before a new file is created. Min 1000 messages.
428
+ # Corresponds to the JSON property `maxMessages`
429
+ # @return [Fixnum]
430
+ attr_accessor :max_messages
431
+
432
+ # Optional. The service account to use to write to Cloud Storage. The
433
+ # subscription creator or updater that specifies this field must have `iam.
434
+ # serviceAccounts.actAs` permission on the service account. If not specified,
435
+ # the Pub/Sub [service agent](https://cloud.google.com/iam/docs/service-agents),
436
+ # service-`project_number`@gcp-sa-pubsub.iam.gserviceaccount.com, is used.
437
+ # Corresponds to the JSON property `serviceAccountEmail`
438
+ # @return [String]
439
+ attr_accessor :service_account_email
440
+
441
+ # Output only. An output-only field that indicates whether or not the
442
+ # subscription can receive messages.
443
+ # Corresponds to the JSON property `state`
444
+ # @return [String]
445
+ attr_accessor :state
446
+
447
+ # Configuration for writing message data in text format. Message payloads will
448
+ # be written to files as raw text, separated by a newline.
449
+ # Corresponds to the JSON property `textConfig`
450
+ # @return [Google::Apis::AnalyticshubV1::TextConfig]
451
+ attr_accessor :text_config
452
+
453
+ def initialize(**args)
454
+ update!(**args)
455
+ end
456
+
457
+ # Update properties of this object
458
+ def update!(**args)
459
+ @avro_config = args[:avro_config] if args.key?(:avro_config)
460
+ @bucket = args[:bucket] if args.key?(:bucket)
461
+ @filename_datetime_format = args[:filename_datetime_format] if args.key?(:filename_datetime_format)
462
+ @filename_prefix = args[:filename_prefix] if args.key?(:filename_prefix)
463
+ @filename_suffix = args[:filename_suffix] if args.key?(:filename_suffix)
464
+ @max_bytes = args[:max_bytes] if args.key?(:max_bytes)
465
+ @max_duration = args[:max_duration] if args.key?(:max_duration)
466
+ @max_messages = args[:max_messages] if args.key?(:max_messages)
467
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
468
+ @state = args[:state] if args.key?(:state)
469
+ @text_config = args[:text_config] if args.key?(:text_config)
470
+ end
471
+ end
472
+
236
473
  # A data exchange is a container that lets you share data. Along with the
237
474
  # descriptive information about the data exchange, it contains listings that
238
475
  # reference shared datasets.
@@ -247,6 +484,13 @@ module Google
247
484
  # @return [String]
248
485
  attr_accessor :description
249
486
 
487
+ # Optional. Type of discovery on the discovery page for all the listings under
488
+ # this exchange. Updating this field also updates (overwrites) the
489
+ # discovery_type field for all the listings under this exchange.
490
+ # Corresponds to the JSON property `discoveryType`
491
+ # @return [String]
492
+ attr_accessor :discovery_type
493
+
250
494
  # Required. Human-readable display name of the data exchange. The display name
251
495
  # must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-),
252
496
  # spaces ( ), ampersands (&) and must not start or end with spaces. Default
@@ -300,6 +544,7 @@ module Google
300
544
  # Update properties of this object
301
545
  def update!(**args)
302
546
  @description = args[:description] if args.key?(:description)
547
+ @discovery_type = args[:discovery_type] if args.key?(:discovery_type)
303
548
  @display_name = args[:display_name] if args.key?(:display_name)
304
549
  @documentation = args[:documentation] if args.key?(:documentation)
305
550
  @icon = args[:icon] if args.key?(:icon)
@@ -371,6 +616,46 @@ module Google
371
616
  end
372
617
  end
373
618
 
619
+ # Dead lettering is done on a best effort basis. The same message might be dead
620
+ # lettered multiple times. If validation on any of the fields fails at
621
+ # subscription creation/updation, the create/update subscription request will
622
+ # fail.
623
+ class DeadLetterPolicy
624
+ include Google::Apis::Core::Hashable
625
+
626
+ # Optional. The name of the topic to which dead letter messages should be
627
+ # published. Format is `projects/`project`/topics/`topic``.The Pub/Sub service
628
+ # account associated with the enclosing subscription's parent project (i.e.,
629
+ # service-`project_number`@gcp-sa-pubsub.iam.gserviceaccount.com) must have
630
+ # permission to Publish() to this topic. The operation will fail if the topic
631
+ # does not exist. Users should ensure that there is a subscription attached to
632
+ # this topic since messages published to a topic with no subscriptions are lost.
633
+ # Corresponds to the JSON property `deadLetterTopic`
634
+ # @return [String]
635
+ attr_accessor :dead_letter_topic
636
+
637
+ # Optional. The maximum number of delivery attempts for any message. The value
638
+ # must be between 5 and 100. The number of delivery attempts is defined as 1 + (
639
+ # the sum of number of NACKs and number of times the acknowledgement deadline
640
+ # has been exceeded for the message). A NACK is any call to ModifyAckDeadline
641
+ # with a 0 deadline. Note that client libraries may automatically extend
642
+ # ack_deadlines. This field will be honored on a best effort basis. If this
643
+ # parameter is 0, a default value of 5 is used.
644
+ # Corresponds to the JSON property `maxDeliveryAttempts`
645
+ # @return [Fixnum]
646
+ attr_accessor :max_delivery_attempts
647
+
648
+ def initialize(**args)
649
+ update!(**args)
650
+ end
651
+
652
+ # Update properties of this object
653
+ def update!(**args)
654
+ @dead_letter_topic = args[:dead_letter_topic] if args.key?(:dead_letter_topic)
655
+ @max_delivery_attempts = args[:max_delivery_attempts] if args.key?(:max_delivery_attempts)
656
+ end
657
+ end
658
+
374
659
  # Default Analytics Hub data exchange, used for secured data sharing.
375
660
  class DefaultExchangeConfig
376
661
  include Google::Apis::Core::Hashable
@@ -458,6 +743,27 @@ module Google
458
743
  end
459
744
  end
460
745
 
746
+ # Defines the destination Pub/Sub subscription.
747
+ class DestinationPubSubSubscription
748
+ include Google::Apis::Core::Hashable
749
+
750
+ # A subscription resource. If none of `push_config`, `bigquery_config`, or `
751
+ # cloud_storage_config` is set, then the subscriber will pull and ack messages
752
+ # using API methods. At most one of these fields may be set.
753
+ # Corresponds to the JSON property `pubsubSubscription`
754
+ # @return [Google::Apis::AnalyticshubV1::GooglePubsubV1Subscription]
755
+ attr_accessor :pubsub_subscription
756
+
757
+ def initialize(**args)
758
+ update!(**args)
759
+ end
760
+
761
+ # Update properties of this object
762
+ def update!(**args)
763
+ @pubsub_subscription = args[:pubsub_subscription] if args.key?(:pubsub_subscription)
764
+ end
765
+ end
766
+
461
767
  # A generic empty message that you can re-use to avoid defining duplicated empty
462
768
  # messages in your APIs. A typical example is to use it as the request or the
463
769
  # response type of an API method. For instance: service Foo ` rpc Bar(google.
@@ -474,6 +780,30 @@ module Google
474
780
  end
475
781
  end
476
782
 
783
+ # A policy that specifies the conditions for resource expiration (i.e.,
784
+ # automatic resource deletion).
785
+ class ExpirationPolicy
786
+ include Google::Apis::Core::Hashable
787
+
788
+ # Optional. Specifies the "time-to-live" duration for an associated resource.
789
+ # The resource expires if it is not active for a period of `ttl`. The definition
790
+ # of "activity" depends on the type of the associated resource. The minimum and
791
+ # maximum allowed values for `ttl` depend on the type of the associated resource,
792
+ # as well. If `ttl` is not set, the associated resource never expires.
793
+ # Corresponds to the JSON property `ttl`
794
+ # @return [String]
795
+ attr_accessor :ttl
796
+
797
+ def initialize(**args)
798
+ update!(**args)
799
+ end
800
+
801
+ # Update properties of this object
802
+ def update!(**args)
803
+ @ttl = args[:ttl] if args.key?(:ttl)
804
+ end
805
+ end
806
+
477
807
  # Represents a textual expression in the Common Expression Language (CEL) syntax.
478
808
  # CEL is a C-like expression language. The syntax and semantics of CEL are
479
809
  # documented at https://github.com/google/cel-spec. Example (Comparison): title:
@@ -575,6 +905,192 @@ module Google
575
905
  end
576
906
  end
577
907
 
908
+ # A subscription resource. If none of `push_config`, `bigquery_config`, or `
909
+ # cloud_storage_config` is set, then the subscriber will pull and ack messages
910
+ # using API methods. At most one of these fields may be set.
911
+ class GooglePubsubV1Subscription
912
+ include Google::Apis::Core::Hashable
913
+
914
+ # Optional. The approximate amount of time (on a best-effort basis) Pub/Sub
915
+ # waits for the subscriber to acknowledge receipt before resending the message.
916
+ # In the interval after the message is delivered and before it is acknowledged,
917
+ # it is considered to be _outstanding_. During that time period, the message
918
+ # will not be redelivered (on a best-effort basis). For pull subscriptions, this
919
+ # value is used as the initial value for the ack deadline. To override this
920
+ # value for a given message, call `ModifyAckDeadline` with the corresponding `
921
+ # ack_id` if using non-streaming pull or send the `ack_id` in a `
922
+ # StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum custom
923
+ # deadline you can specify is 10 seconds. The maximum custom deadline you can
924
+ # specify is 600 seconds (10 minutes). If this parameter is 0, a default value
925
+ # of 10 seconds is used. For push delivery, this value is also used to set the
926
+ # request timeout for the call to the push endpoint. If the subscriber never
927
+ # acknowledges the message, the Pub/Sub system will eventually redeliver the
928
+ # message.
929
+ # Corresponds to the JSON property `ackDeadlineSeconds`
930
+ # @return [Fixnum]
931
+ attr_accessor :ack_deadline_seconds
932
+
933
+ # Information about an associated Analytics Hub subscription (https://cloud.
934
+ # google.com/bigquery/docs/analytics-hub-manage-subscriptions).
935
+ # Corresponds to the JSON property `analyticsHubSubscriptionInfo`
936
+ # @return [Google::Apis::AnalyticshubV1::AnalyticsHubSubscriptionInfo]
937
+ attr_accessor :analytics_hub_subscription_info
938
+
939
+ # Configuration for a BigQuery subscription.
940
+ # Corresponds to the JSON property `bigqueryConfig`
941
+ # @return [Google::Apis::AnalyticshubV1::BigQueryConfig]
942
+ attr_accessor :bigquery_config
943
+
944
+ # Configuration for a Cloud Storage subscription.
945
+ # Corresponds to the JSON property `cloudStorageConfig`
946
+ # @return [Google::Apis::AnalyticshubV1::CloudStorageConfig]
947
+ attr_accessor :cloud_storage_config
948
+
949
+ # Dead lettering is done on a best effort basis. The same message might be dead
950
+ # lettered multiple times. If validation on any of the fields fails at
951
+ # subscription creation/updation, the create/update subscription request will
952
+ # fail.
953
+ # Corresponds to the JSON property `deadLetterPolicy`
954
+ # @return [Google::Apis::AnalyticshubV1::DeadLetterPolicy]
955
+ attr_accessor :dead_letter_policy
956
+
957
+ # Optional. Indicates whether the subscription is detached from its topic.
958
+ # Detached subscriptions don't receive messages from their topic and don't
959
+ # retain any backlog. `Pull` and `StreamingPull` requests will return
960
+ # FAILED_PRECONDITION. If the subscription is a push subscription, pushes to the
961
+ # endpoint will not be made.
962
+ # Corresponds to the JSON property `detached`
963
+ # @return [Boolean]
964
+ attr_accessor :detached
965
+ alias_method :detached?, :detached
966
+
967
+ # Optional. If true, Pub/Sub provides the following guarantees for the delivery
968
+ # of a message with a given value of `message_id` on this subscription: * The
969
+ # message sent to a subscriber is guaranteed not to be resent before the message'
970
+ # s acknowledgement deadline expires. * An acknowledged message will not be
971
+ # resent to a subscriber. Note that subscribers may still receive multiple
972
+ # copies of a message when `enable_exactly_once_delivery` is true if the message
973
+ # was published multiple times by a publisher client. These copies are
974
+ # considered distinct by Pub/Sub and have distinct `message_id` values.
975
+ # Corresponds to the JSON property `enableExactlyOnceDelivery`
976
+ # @return [Boolean]
977
+ attr_accessor :enable_exactly_once_delivery
978
+ alias_method :enable_exactly_once_delivery?, :enable_exactly_once_delivery
979
+
980
+ # Optional. If true, messages published with the same `ordering_key` in `
981
+ # PubsubMessage` will be delivered to the subscribers in the order in which they
982
+ # are received by the Pub/Sub system. Otherwise, they may be delivered in any
983
+ # order.
984
+ # Corresponds to the JSON property `enableMessageOrdering`
985
+ # @return [Boolean]
986
+ attr_accessor :enable_message_ordering
987
+ alias_method :enable_message_ordering?, :enable_message_ordering
988
+
989
+ # A policy that specifies the conditions for resource expiration (i.e.,
990
+ # automatic resource deletion).
991
+ # Corresponds to the JSON property `expirationPolicy`
992
+ # @return [Google::Apis::AnalyticshubV1::ExpirationPolicy]
993
+ attr_accessor :expiration_policy
994
+
995
+ # Optional. An expression written in the Pub/Sub [filter language](https://cloud.
996
+ # google.com/pubsub/docs/filtering). If non-empty, then only `PubsubMessage`s
997
+ # whose `attributes` field matches the filter are delivered on this subscription.
998
+ # If empty, then no messages are filtered out.
999
+ # Corresponds to the JSON property `filter`
1000
+ # @return [String]
1001
+ attr_accessor :filter
1002
+
1003
+ # Optional. See [Creating and managing labels](https://cloud.google.com/pubsub/
1004
+ # docs/labels).
1005
+ # Corresponds to the JSON property `labels`
1006
+ # @return [Hash<String,String>]
1007
+ attr_accessor :labels
1008
+
1009
+ # Optional. How long to retain unacknowledged messages in the subscription's
1010
+ # backlog, from the moment a message is published. If `retain_acked_messages` is
1011
+ # true, then this also configures the retention of acknowledged messages, and
1012
+ # thus configures how far back in time a `Seek` can be done. Defaults to 7 days.
1013
+ # Cannot be more than 7 days or less than 10 minutes.
1014
+ # Corresponds to the JSON property `messageRetentionDuration`
1015
+ # @return [String]
1016
+ attr_accessor :message_retention_duration
1017
+
1018
+ # Required. Name of the subscription. Format is `projects/`project`/
1019
+ # subscriptions/`sub``.
1020
+ # Corresponds to the JSON property `name`
1021
+ # @return [String]
1022
+ attr_accessor :name
1023
+
1024
+ # Configuration for a push delivery endpoint.
1025
+ # Corresponds to the JSON property `pushConfig`
1026
+ # @return [Google::Apis::AnalyticshubV1::PushConfig]
1027
+ attr_accessor :push_config
1028
+
1029
+ # Optional. Indicates whether to retain acknowledged messages. If true, then
1030
+ # messages are not expunged from the subscription's backlog, even if they are
1031
+ # acknowledged, until they fall out of the `message_retention_duration` window.
1032
+ # This must be true if you would like to [`Seek` to a timestamp] (https://cloud.
1033
+ # google.com/pubsub/docs/replay-overview#seek_to_a_time) in the past to replay
1034
+ # previously-acknowledged messages.
1035
+ # Corresponds to the JSON property `retainAckedMessages`
1036
+ # @return [Boolean]
1037
+ attr_accessor :retain_acked_messages
1038
+ alias_method :retain_acked_messages?, :retain_acked_messages
1039
+
1040
+ # A policy that specifies how Pub/Sub retries message delivery. Retry delay will
1041
+ # be exponential based on provided minimum and maximum backoffs. https://en.
1042
+ # wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be triggered on NACKs
1043
+ # or acknowledgement deadline exceeded events for a given message. Retry Policy
1044
+ # is implemented on a best effort basis. At times, the delay between consecutive
1045
+ # deliveries may not match the configuration. That is, delay can be more or less
1046
+ # than configured backoff.
1047
+ # Corresponds to the JSON property `retryPolicy`
1048
+ # @return [Google::Apis::AnalyticshubV1::RetryPolicy]
1049
+ attr_accessor :retry_policy
1050
+
1051
+ # Output only. An output-only field indicating whether or not the subscription
1052
+ # can receive messages.
1053
+ # Corresponds to the JSON property `state`
1054
+ # @return [String]
1055
+ attr_accessor :state
1056
+
1057
+ # Output only. Indicates the minimum duration for which a message is retained
1058
+ # after it is published to the subscription's topic. If this field is set,
1059
+ # messages published to the subscription's topic in the last `
1060
+ # topic_message_retention_duration` are always available to subscribers. See the
1061
+ # `message_retention_duration` field in `Topic`. This field is set only in
1062
+ # responses from the server; it is ignored if it is set in any requests.
1063
+ # Corresponds to the JSON property `topicMessageRetentionDuration`
1064
+ # @return [String]
1065
+ attr_accessor :topic_message_retention_duration
1066
+
1067
+ def initialize(**args)
1068
+ update!(**args)
1069
+ end
1070
+
1071
+ # Update properties of this object
1072
+ def update!(**args)
1073
+ @ack_deadline_seconds = args[:ack_deadline_seconds] if args.key?(:ack_deadline_seconds)
1074
+ @analytics_hub_subscription_info = args[:analytics_hub_subscription_info] if args.key?(:analytics_hub_subscription_info)
1075
+ @bigquery_config = args[:bigquery_config] if args.key?(:bigquery_config)
1076
+ @cloud_storage_config = args[:cloud_storage_config] if args.key?(:cloud_storage_config)
1077
+ @dead_letter_policy = args[:dead_letter_policy] if args.key?(:dead_letter_policy)
1078
+ @detached = args[:detached] if args.key?(:detached)
1079
+ @enable_exactly_once_delivery = args[:enable_exactly_once_delivery] if args.key?(:enable_exactly_once_delivery)
1080
+ @enable_message_ordering = args[:enable_message_ordering] if args.key?(:enable_message_ordering)
1081
+ @expiration_policy = args[:expiration_policy] if args.key?(:expiration_policy)
1082
+ @filter = args[:filter] if args.key?(:filter)
1083
+ @labels = args[:labels] if args.key?(:labels)
1084
+ @message_retention_duration = args[:message_retention_duration] if args.key?(:message_retention_duration)
1085
+ @name = args[:name] if args.key?(:name)
1086
+ @push_config = args[:push_config] if args.key?(:push_config)
1087
+ @retain_acked_messages = args[:retain_acked_messages] if args.key?(:retain_acked_messages)
1088
+ @retry_policy = args[:retry_policy] if args.key?(:retry_policy)
1089
+ @state = args[:state] if args.key?(:state)
1090
+ @topic_message_retention_duration = args[:topic_message_retention_duration] if args.key?(:topic_message_retention_duration)
1091
+ end
1092
+ end
1093
+
578
1094
  # Reference to a linked resource tracked by this Subscription.
579
1095
  class LinkedResource
580
1096
  include Google::Apis::Core::Hashable
@@ -585,6 +1101,17 @@ module Google
585
1101
  # @return [String]
586
1102
  attr_accessor :linked_dataset
587
1103
 
1104
+ # Output only. Name of the Pub/Sub subscription, e.g. projects/subscriberproject/
1105
+ # subscriptions/subscriptions/sub_id
1106
+ # Corresponds to the JSON property `linkedPubsubSubscription`
1107
+ # @return [String]
1108
+ attr_accessor :linked_pubsub_subscription
1109
+
1110
+ # Output only. Listing for which linked resource is created.
1111
+ # Corresponds to the JSON property `listing`
1112
+ # @return [String]
1113
+ attr_accessor :listing
1114
+
588
1115
  def initialize(**args)
589
1116
  update!(**args)
590
1117
  end
@@ -592,6 +1119,8 @@ module Google
592
1119
  # Update properties of this object
593
1120
  def update!(**args)
594
1121
  @linked_dataset = args[:linked_dataset] if args.key?(:linked_dataset)
1122
+ @linked_pubsub_subscription = args[:linked_pubsub_subscription] if args.key?(:linked_pubsub_subscription)
1123
+ @listing = args[:listing] if args.key?(:listing)
595
1124
  end
596
1125
  end
597
1126
 
@@ -754,6 +1283,11 @@ module Google
754
1283
  # @return [String]
755
1284
  attr_accessor :description
756
1285
 
1286
+ # Optional. Type of discovery of the listing on the discovery page.
1287
+ # Corresponds to the JSON property `discoveryType`
1288
+ # @return [String]
1289
+ attr_accessor :discovery_type
1290
+
757
1291
  # Required. Human-readable display name of the listing. The display name must
758
1292
  # contain only Unicode letters, numbers (0-9), underscores (_), dashes (-),
759
1293
  # spaces ( ), ampersands (&) and can't start or end with spaces. Default value
@@ -794,12 +1328,22 @@ module Google
794
1328
  # @return [Google::Apis::AnalyticshubV1::Publisher]
795
1329
  attr_accessor :publisher
796
1330
 
1331
+ # Pub/Sub topic source.
1332
+ # Corresponds to the JSON property `pubsubTopic`
1333
+ # @return [Google::Apis::AnalyticshubV1::PubSubTopicSource]
1334
+ attr_accessor :pubsub_topic
1335
+
797
1336
  # Optional. Email or URL of the request access of the listing. Subscribers can
798
1337
  # use this reference to request access. Max Length: 1000 bytes.
799
1338
  # Corresponds to the JSON property `requestAccess`
800
1339
  # @return [String]
801
1340
  attr_accessor :request_access
802
1341
 
1342
+ # Output only. Listing shared asset type.
1343
+ # Corresponds to the JSON property `resourceType`
1344
+ # @return [String]
1345
+ attr_accessor :resource_type
1346
+
803
1347
  # Restricted export config, used to configure restricted export on linked
804
1348
  # dataset.
805
1349
  # Corresponds to the JSON property `restrictedExportConfig`
@@ -821,18 +1365,77 @@ module Google
821
1365
  @categories = args[:categories] if args.key?(:categories)
822
1366
  @data_provider = args[:data_provider] if args.key?(:data_provider)
823
1367
  @description = args[:description] if args.key?(:description)
1368
+ @discovery_type = args[:discovery_type] if args.key?(:discovery_type)
824
1369
  @display_name = args[:display_name] if args.key?(:display_name)
825
1370
  @documentation = args[:documentation] if args.key?(:documentation)
826
1371
  @icon = args[:icon] if args.key?(:icon)
827
1372
  @name = args[:name] if args.key?(:name)
828
1373
  @primary_contact = args[:primary_contact] if args.key?(:primary_contact)
829
1374
  @publisher = args[:publisher] if args.key?(:publisher)
1375
+ @pubsub_topic = args[:pubsub_topic] if args.key?(:pubsub_topic)
830
1376
  @request_access = args[:request_access] if args.key?(:request_access)
1377
+ @resource_type = args[:resource_type] if args.key?(:resource_type)
831
1378
  @restricted_export_config = args[:restricted_export_config] if args.key?(:restricted_export_config)
832
1379
  @state = args[:state] if args.key?(:state)
833
1380
  end
834
1381
  end
835
1382
 
1383
+ # Sets the `data` field as the HTTP body for delivery.
1384
+ class NoWrapper
1385
+ include Google::Apis::Core::Hashable
1386
+
1387
+ # Optional. When true, writes the Pub/Sub message metadata to `x-goog-pubsub-:`
1388
+ # headers of the HTTP request. Writes the Pub/Sub message attributes to `:`
1389
+ # headers of the HTTP request.
1390
+ # Corresponds to the JSON property `writeMetadata`
1391
+ # @return [Boolean]
1392
+ attr_accessor :write_metadata
1393
+ alias_method :write_metadata?, :write_metadata
1394
+
1395
+ def initialize(**args)
1396
+ update!(**args)
1397
+ end
1398
+
1399
+ # Update properties of this object
1400
+ def update!(**args)
1401
+ @write_metadata = args[:write_metadata] if args.key?(:write_metadata)
1402
+ end
1403
+ end
1404
+
1405
+ # Contains information needed for generating an [OpenID Connect token](https://
1406
+ # developers.google.com/identity/protocols/OpenIDConnect).
1407
+ class OidcToken
1408
+ include Google::Apis::Core::Hashable
1409
+
1410
+ # Optional. Audience to be used when generating OIDC token. The audience claim
1411
+ # identifies the recipients that the JWT is intended for. The audience value is
1412
+ # a single case-sensitive string. Having multiple values (array) for the
1413
+ # audience field is not supported. More info about the OIDC JWT token audience
1414
+ # here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified,
1415
+ # the Push endpoint URL will be used.
1416
+ # Corresponds to the JSON property `audience`
1417
+ # @return [String]
1418
+ attr_accessor :audience
1419
+
1420
+ # Optional. [Service account email](https://cloud.google.com/iam/docs/service-
1421
+ # accounts) used for generating the OIDC token. For more information on setting
1422
+ # up authentication, see [Push subscriptions](https://cloud.google.com/pubsub/
1423
+ # docs/push).
1424
+ # Corresponds to the JSON property `serviceAccountEmail`
1425
+ # @return [String]
1426
+ attr_accessor :service_account_email
1427
+
1428
+ def initialize(**args)
1429
+ update!(**args)
1430
+ end
1431
+
1432
+ # Update properties of this object
1433
+ def update!(**args)
1434
+ @audience = args[:audience] if args.key?(:audience)
1435
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
1436
+ end
1437
+ end
1438
+
836
1439
  # This resource represents a long-running operation that is the result of a
837
1440
  # network API call.
838
1441
  class Operation
@@ -1049,6 +1652,34 @@ module Google
1049
1652
  end
1050
1653
  end
1051
1654
 
1655
+ # Pub/Sub topic source.
1656
+ class PubSubTopicSource
1657
+ include Google::Apis::Core::Hashable
1658
+
1659
+ # Optional. Region hint on where the data might be published. Data affinity
1660
+ # regions are modifiable. See go/regions for full listing of possible Cloud
1661
+ # regions.
1662
+ # Corresponds to the JSON property `dataAffinityRegions`
1663
+ # @return [Array<String>]
1664
+ attr_accessor :data_affinity_regions
1665
+
1666
+ # Required. Resource name of the Pub/Sub topic source for this listing. e.g.
1667
+ # projects/myproject/topics/topicId
1668
+ # Corresponds to the JSON property `topic`
1669
+ # @return [String]
1670
+ attr_accessor :topic
1671
+
1672
+ def initialize(**args)
1673
+ update!(**args)
1674
+ end
1675
+
1676
+ # Update properties of this object
1677
+ def update!(**args)
1678
+ @data_affinity_regions = args[:data_affinity_regions] if args.key?(:data_affinity_regions)
1679
+ @topic = args[:topic] if args.key?(:topic)
1680
+ end
1681
+ end
1682
+
1052
1683
  # Contains details of the listing publisher.
1053
1684
  class Publisher
1054
1685
  include Google::Apis::Core::Hashable
@@ -1074,6 +1705,80 @@ module Google
1074
1705
  end
1075
1706
  end
1076
1707
 
1708
+ # The payload to the push endpoint is in the form of the JSON representation of
1709
+ # a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.
1710
+ # pubsub.v1#pubsubmessage).
1711
+ class PubsubWrapper
1712
+ include Google::Apis::Core::Hashable
1713
+
1714
+ def initialize(**args)
1715
+ update!(**args)
1716
+ end
1717
+
1718
+ # Update properties of this object
1719
+ def update!(**args)
1720
+ end
1721
+ end
1722
+
1723
+ # Configuration for a push delivery endpoint.
1724
+ class PushConfig
1725
+ include Google::Apis::Core::Hashable
1726
+
1727
+ # Optional. Endpoint configuration attributes that can be used to control
1728
+ # different aspects of the message delivery. The only currently supported
1729
+ # attribute is `x-goog-version`, which you can use to change the format of the
1730
+ # pushed message. This attribute indicates the version of the data expected by
1731
+ # the endpoint. This controls the shape of the pushed message (i.e., its fields
1732
+ # and metadata). If not present during the `CreateSubscription` call, it will
1733
+ # default to the version of the Pub/Sub API used to make such call. If not
1734
+ # present in a `ModifyPushConfig` call, its value will not be changed. `
1735
+ # GetSubscription` calls will always return a valid version, even if the
1736
+ # subscription was created without this attribute. The only supported values for
1737
+ # the `x-goog-version` attribute are: * `v1beta1`: uses the push format defined
1738
+ # in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined
1739
+ # in the v1 Pub/Sub API. For example: `attributes ` "x-goog-version": "v1" ``
1740
+ # Corresponds to the JSON property `attributes`
1741
+ # @return [Hash<String,String>]
1742
+ attr_accessor :attributes
1743
+
1744
+ # Sets the `data` field as the HTTP body for delivery.
1745
+ # Corresponds to the JSON property `noWrapper`
1746
+ # @return [Google::Apis::AnalyticshubV1::NoWrapper]
1747
+ attr_accessor :no_wrapper
1748
+
1749
+ # Contains information needed for generating an [OpenID Connect token](https://
1750
+ # developers.google.com/identity/protocols/OpenIDConnect).
1751
+ # Corresponds to the JSON property `oidcToken`
1752
+ # @return [Google::Apis::AnalyticshubV1::OidcToken]
1753
+ attr_accessor :oidc_token
1754
+
1755
+ # The payload to the push endpoint is in the form of the JSON representation of
1756
+ # a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.
1757
+ # pubsub.v1#pubsubmessage).
1758
+ # Corresponds to the JSON property `pubsubWrapper`
1759
+ # @return [Google::Apis::AnalyticshubV1::PubsubWrapper]
1760
+ attr_accessor :pubsub_wrapper
1761
+
1762
+ # Optional. A URL locating the endpoint to which messages should be pushed. For
1763
+ # example, a Webhook endpoint might use `https://example.com/push`.
1764
+ # Corresponds to the JSON property `pushEndpoint`
1765
+ # @return [String]
1766
+ attr_accessor :push_endpoint
1767
+
1768
+ def initialize(**args)
1769
+ update!(**args)
1770
+ end
1771
+
1772
+ # Update properties of this object
1773
+ def update!(**args)
1774
+ @attributes = args[:attributes] if args.key?(:attributes)
1775
+ @no_wrapper = args[:no_wrapper] if args.key?(:no_wrapper)
1776
+ @oidc_token = args[:oidc_token] if args.key?(:oidc_token)
1777
+ @pubsub_wrapper = args[:pubsub_wrapper] if args.key?(:pubsub_wrapper)
1778
+ @push_endpoint = args[:push_endpoint] if args.key?(:push_endpoint)
1779
+ end
1780
+ end
1781
+
1077
1782
  # Message for refreshing a subscription.
1078
1783
  class RefreshSubscriptionRequest
1079
1784
  include Google::Apis::Core::Hashable
@@ -1181,6 +1886,39 @@ module Google
1181
1886
  end
1182
1887
  end
1183
1888
 
1889
+ # A policy that specifies how Pub/Sub retries message delivery. Retry delay will
1890
+ # be exponential based on provided minimum and maximum backoffs. https://en.
1891
+ # wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be triggered on NACKs
1892
+ # or acknowledgement deadline exceeded events for a given message. Retry Policy
1893
+ # is implemented on a best effort basis. At times, the delay between consecutive
1894
+ # deliveries may not match the configuration. That is, delay can be more or less
1895
+ # than configured backoff.
1896
+ class RetryPolicy
1897
+ include Google::Apis::Core::Hashable
1898
+
1899
+ # Optional. The maximum delay between consecutive deliveries of a given message.
1900
+ # Value should be between 0 and 600 seconds. Defaults to 600 seconds.
1901
+ # Corresponds to the JSON property `maximumBackoff`
1902
+ # @return [String]
1903
+ attr_accessor :maximum_backoff
1904
+
1905
+ # Optional. The minimum delay between consecutive deliveries of a given message.
1906
+ # Value should be between 0 and 600 seconds. Defaults to 10 seconds.
1907
+ # Corresponds to the JSON property `minimumBackoff`
1908
+ # @return [String]
1909
+ attr_accessor :minimum_backoff
1910
+
1911
+ def initialize(**args)
1912
+ update!(**args)
1913
+ end
1914
+
1915
+ # Update properties of this object
1916
+ def update!(**args)
1917
+ @maximum_backoff = args[:maximum_backoff] if args.key?(:maximum_backoff)
1918
+ @minimum_backoff = args[:minimum_backoff] if args.key?(:minimum_backoff)
1919
+ end
1920
+ end
1921
+
1184
1922
  # Message for revoking a subscription.
1185
1923
  class RevokeSubscriptionRequest
1186
1924
  include Google::Apis::Core::Hashable
@@ -1207,7 +1945,7 @@ module Google
1207
1945
  end
1208
1946
  end
1209
1947
 
1210
- # Resource in this dataset that are selectively shared.
1948
+ # Resource in this dataset that is selectively shared.
1211
1949
  class SelectedResource
1212
1950
  include Google::Apis::Core::Hashable
1213
1951
 
@@ -1408,6 +2146,11 @@ module Google
1408
2146
  # @return [Google::Apis::AnalyticshubV1::DestinationDataset]
1409
2147
  attr_accessor :destination_dataset
1410
2148
 
2149
+ # Defines the destination Pub/Sub subscription.
2150
+ # Corresponds to the JSON property `destinationPubsubSubscription`
2151
+ # @return [Google::Apis::AnalyticshubV1::DestinationPubSubSubscription]
2152
+ attr_accessor :destination_pubsub_subscription
2153
+
1411
2154
  def initialize(**args)
1412
2155
  update!(**args)
1413
2156
  end
@@ -1415,6 +2158,7 @@ module Google
1415
2158
  # Update properties of this object
1416
2159
  def update!(**args)
1417
2160
  @destination_dataset = args[:destination_dataset] if args.key?(:destination_dataset)
2161
+ @destination_pubsub_subscription = args[:destination_pubsub_subscription] if args.key?(:destination_pubsub_subscription)
1418
2162
  end
1419
2163
  end
1420
2164
 
@@ -1469,6 +2213,12 @@ module Google
1469
2213
  # @return [Hash<String,Google::Apis::AnalyticshubV1::LinkedResource>]
1470
2214
  attr_accessor :linked_dataset_map
1471
2215
 
2216
+ # Output only. Linked resources created in the subscription. Only contains
2217
+ # values if state = STATE_ACTIVE.
2218
+ # Corresponds to the JSON property `linkedResources`
2219
+ # @return [Array<Google::Apis::AnalyticshubV1::LinkedResource>]
2220
+ attr_accessor :linked_resources
2221
+
1472
2222
  # Output only. Resource name of the source Listing. e.g. projects/123/locations/
1473
2223
  # US/dataExchanges/456/listings/789
1474
2224
  # Corresponds to the JSON property `listing`
@@ -1491,6 +2241,11 @@ module Google
1491
2241
  # @return [String]
1492
2242
  attr_accessor :organization_id
1493
2243
 
2244
+ # Output only. Listing shared asset type.
2245
+ # Corresponds to the JSON property `resourceType`
2246
+ # @return [String]
2247
+ attr_accessor :resource_type
2248
+
1494
2249
  # Output only. Current state of the subscription.
1495
2250
  # Corresponds to the JSON property `state`
1496
2251
  # @return [String]
@@ -1511,10 +2266,12 @@ module Google
1511
2266
  @data_exchange = args[:data_exchange] if args.key?(:data_exchange)
1512
2267
  @last_modify_time = args[:last_modify_time] if args.key?(:last_modify_time)
1513
2268
  @linked_dataset_map = args[:linked_dataset_map] if args.key?(:linked_dataset_map)
2269
+ @linked_resources = args[:linked_resources] if args.key?(:linked_resources)
1514
2270
  @listing = args[:listing] if args.key?(:listing)
1515
2271
  @name = args[:name] if args.key?(:name)
1516
2272
  @organization_display_name = args[:organization_display_name] if args.key?(:organization_display_name)
1517
2273
  @organization_id = args[:organization_id] if args.key?(:organization_id)
2274
+ @resource_type = args[:resource_type] if args.key?(:resource_type)
1518
2275
  @state = args[:state] if args.key?(:state)
1519
2276
  @subscriber_contact = args[:subscriber_contact] if args.key?(:subscriber_contact)
1520
2277
  end
@@ -1559,6 +2316,20 @@ module Google
1559
2316
  @permissions = args[:permissions] if args.key?(:permissions)
1560
2317
  end
1561
2318
  end
2319
+
2320
+ # Configuration for writing message data in text format. Message payloads will
2321
+ # be written to files as raw text, separated by a newline.
2322
+ class TextConfig
2323
+ include Google::Apis::Core::Hashable
2324
+
2325
+ def initialize(**args)
2326
+ update!(**args)
2327
+ end
2328
+
2329
+ # Update properties of this object
2330
+ def update!(**args)
2331
+ end
2332
+ end
1562
2333
  end
1563
2334
  end
1564
2335
  end