google-apis-analyticshub_v1beta1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1036 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module AnalyticshubV1beta1
24
+
25
+ # Specifies the audit configuration for a service. The configuration determines
26
+ # which permission types are logged, and what identities, if any, are exempted
27
+ # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
28
+ # are AuditConfigs for both `allServices` and a specific service, the union of
29
+ # the two AuditConfigs is used for that service: the log_types specified in each
30
+ # AuditConfig are enabled, and the exempted_members in each AuditLogConfig are
31
+ # exempted. Example Policy with multiple AuditConfigs: ` "audit_configs": [ ` "
32
+ # service": "allServices", "audit_log_configs": [ ` "log_type": "DATA_READ", "
33
+ # exempted_members": [ "user:jose@example.com" ] `, ` "log_type": "DATA_WRITE" `,
34
+ # ` "log_type": "ADMIN_READ" ` ] `, ` "service": "sampleservice.googleapis.com",
35
+ # "audit_log_configs": [ ` "log_type": "DATA_READ" `, ` "log_type": "DATA_WRITE"
36
+ # , "exempted_members": [ "user:aliya@example.com" ] ` ] ` ] ` For sampleservice,
37
+ # this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
38
+ # exempts jose@example.com from DATA_READ logging, and aliya@example.com from
39
+ # DATA_WRITE logging.
40
+ class AuditConfig
41
+ include Google::Apis::Core::Hashable
42
+
43
+ # The configuration for logging of each type of permission.
44
+ # Corresponds to the JSON property `auditLogConfigs`
45
+ # @return [Array<Google::Apis::AnalyticshubV1beta1::AuditLogConfig>]
46
+ attr_accessor :audit_log_configs
47
+
48
+ # Specifies a service that will be enabled for audit logging. For example, `
49
+ # storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special
50
+ # value that covers all services.
51
+ # Corresponds to the JSON property `service`
52
+ # @return [String]
53
+ attr_accessor :service
54
+
55
+ def initialize(**args)
56
+ update!(**args)
57
+ end
58
+
59
+ # Update properties of this object
60
+ def update!(**args)
61
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
62
+ @service = args[:service] if args.key?(:service)
63
+ end
64
+ end
65
+
66
+ # Provides the configuration for logging a type of permissions. Example: ` "
67
+ # audit_log_configs": [ ` "log_type": "DATA_READ", "exempted_members": [ "user:
68
+ # jose@example.com" ] `, ` "log_type": "DATA_WRITE" ` ] ` This enables '
69
+ # DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from
70
+ # DATA_READ logging.
71
+ class AuditLogConfig
72
+ include Google::Apis::Core::Hashable
73
+
74
+ # Specifies the identities that do not cause logging for this type of permission.
75
+ # Follows the same format of Binding.members.
76
+ # Corresponds to the JSON property `exemptedMembers`
77
+ # @return [Array<String>]
78
+ attr_accessor :exempted_members
79
+
80
+ # The log type that this config enables.
81
+ # Corresponds to the JSON property `logType`
82
+ # @return [String]
83
+ attr_accessor :log_type
84
+
85
+ def initialize(**args)
86
+ update!(**args)
87
+ end
88
+
89
+ # Update properties of this object
90
+ def update!(**args)
91
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
92
+ @log_type = args[:log_type] if args.key?(:log_type)
93
+ end
94
+ end
95
+
96
+ # A reference to a shared dataset. It is an existing BigQuery dataset with a
97
+ # collection of objects such as tables and views that you want to share with
98
+ # subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a
99
+ # linked dataset in the subscriber's project. A Linked dataset is an opaque,
100
+ # read-only BigQuery dataset that serves as a _symbolic link_ to a shared
101
+ # dataset.
102
+ class BigQueryDatasetSource
103
+ include Google::Apis::Core::Hashable
104
+
105
+ # Resource name of the dataset source for this listing. e.g. `projects/myproject/
106
+ # datasets/123`
107
+ # Corresponds to the JSON property `dataset`
108
+ # @return [String]
109
+ attr_accessor :dataset
110
+
111
+ def initialize(**args)
112
+ update!(**args)
113
+ end
114
+
115
+ # Update properties of this object
116
+ def update!(**args)
117
+ @dataset = args[:dataset] if args.key?(:dataset)
118
+ end
119
+ end
120
+
121
+ # Associates `members`, or principals, with a `role`.
122
+ class Binding
123
+ include Google::Apis::Core::Hashable
124
+
125
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
126
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
127
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
128
+ # "Summary size limit" description: "Determines if a summary is less than 100
129
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
130
+ # Requestor is owner" description: "Determines if requestor is the document
131
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
132
+ # Logic): title: "Public documents" description: "Determine whether the document
133
+ # should be publicly visible" expression: "document.type != 'private' &&
134
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
135
+ # string" description: "Create a notification string with a timestamp."
136
+ # expression: "'New message received at ' + string(document.create_time)" The
137
+ # exact variables and functions that may be referenced within an expression are
138
+ # determined by the service that evaluates it. See the service documentation for
139
+ # additional information.
140
+ # Corresponds to the JSON property `condition`
141
+ # @return [Google::Apis::AnalyticshubV1beta1::Expr]
142
+ attr_accessor :condition
143
+
144
+ # Specifies the principals requesting access for a Google Cloud resource. `
145
+ # members` can have the following values: * `allUsers`: A special identifier
146
+ # that represents anyone who is on the internet; with or without a Google
147
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
148
+ # anyone who is authenticated with a Google account or a service account. * `
149
+ # user:`emailid``: An email address that represents a specific Google account.
150
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
151
+ # address that represents a service account. For example, `my-other-app@appspot.
152
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
153
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
154
+ # `uniqueid``: An email address (plus unique identifier) representing a user
155
+ # that has been recently deleted. For example, `alice@example.com?uid=
156
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
157
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
158
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
159
+ # identifier) representing a service account that has been recently deleted. For
160
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
161
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
162
+ # emailid`` and the undeleted service account retains the role in the binding. *
163
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
164
+ # identifier) representing a Google group that has been recently deleted. For
165
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
166
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
167
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
168
+ # primary) that represents all the users of that domain. For example, `google.
169
+ # com` or `example.com`.
170
+ # Corresponds to the JSON property `members`
171
+ # @return [Array<String>]
172
+ attr_accessor :members
173
+
174
+ # Role that is assigned to the list of `members`, or principals. For example, `
175
+ # roles/viewer`, `roles/editor`, or `roles/owner`.
176
+ # Corresponds to the JSON property `role`
177
+ # @return [String]
178
+ attr_accessor :role
179
+
180
+ def initialize(**args)
181
+ update!(**args)
182
+ end
183
+
184
+ # Update properties of this object
185
+ def update!(**args)
186
+ @condition = args[:condition] if args.key?(:condition)
187
+ @members = args[:members] if args.key?(:members)
188
+ @role = args[:role] if args.key?(:role)
189
+ end
190
+ end
191
+
192
+ # A data exchange is a container that lets you share data. Along with the
193
+ # descriptive information about the data exchange, it contains listings that
194
+ # reference shared datasets.
195
+ class DataExchange
196
+ include Google::Apis::Core::Hashable
197
+
198
+ # Optional. Description of the data exchange. The description must not contain
199
+ # Unicode non-characters as well as C0 and C1 control codes except tabs (HT),
200
+ # new lines (LF), carriage returns (CR), and page breaks (FF). Default value is
201
+ # an empty string. Max length: 2000 bytes.
202
+ # Corresponds to the JSON property `description`
203
+ # @return [String]
204
+ attr_accessor :description
205
+
206
+ # Required. Human-readable display name of the data exchange. The display name
207
+ # must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-),
208
+ # spaces ( ), and must not start or end with spaces. Default value is an empty
209
+ # string. Max length: 63 bytes.
210
+ # Corresponds to the JSON property `displayName`
211
+ # @return [String]
212
+ attr_accessor :display_name
213
+
214
+ # Optional. Documentation describing the data exchange.
215
+ # Corresponds to the JSON property `documentation`
216
+ # @return [String]
217
+ attr_accessor :documentation
218
+
219
+ # Optional. Base64 encoded image representing the data exchange. Max Size: 3.
220
+ # 0MiB Expected image dimensions are 512x512 pixels, however the API only
221
+ # performs validation on size of the encoded data. Note: For byte fields, the
222
+ # content of the fields are base64-encoded (which increases the size of the data
223
+ # by 33-36%) when using JSON on the wire.
224
+ # Corresponds to the JSON property `icon`
225
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
226
+ # @return [String]
227
+ attr_accessor :icon
228
+
229
+ # Output only. Number of listings contained in the data exchange.
230
+ # Corresponds to the JSON property `listingCount`
231
+ # @return [Fixnum]
232
+ attr_accessor :listing_count
233
+
234
+ # Output only. The resource name of the data exchange. e.g. `projects/myproject/
235
+ # locations/US/dataExchanges/123`.
236
+ # Corresponds to the JSON property `name`
237
+ # @return [String]
238
+ attr_accessor :name
239
+
240
+ # Optional. Email or URL of the primary point of contact of the data exchange.
241
+ # Max Length: 1000 bytes.
242
+ # Corresponds to the JSON property `primaryContact`
243
+ # @return [String]
244
+ attr_accessor :primary_contact
245
+
246
+ def initialize(**args)
247
+ update!(**args)
248
+ end
249
+
250
+ # Update properties of this object
251
+ def update!(**args)
252
+ @description = args[:description] if args.key?(:description)
253
+ @display_name = args[:display_name] if args.key?(:display_name)
254
+ @documentation = args[:documentation] if args.key?(:documentation)
255
+ @icon = args[:icon] if args.key?(:icon)
256
+ @listing_count = args[:listing_count] if args.key?(:listing_count)
257
+ @name = args[:name] if args.key?(:name)
258
+ @primary_contact = args[:primary_contact] if args.key?(:primary_contact)
259
+ end
260
+ end
261
+
262
+ # Contains details of the data provider.
263
+ class DataProvider
264
+ include Google::Apis::Core::Hashable
265
+
266
+ # Optional. Name of the data provider.
267
+ # Corresponds to the JSON property `name`
268
+ # @return [String]
269
+ attr_accessor :name
270
+
271
+ # Optional. Email or URL of the data provider. Max Length: 1000 bytes.
272
+ # Corresponds to the JSON property `primaryContact`
273
+ # @return [String]
274
+ attr_accessor :primary_contact
275
+
276
+ def initialize(**args)
277
+ update!(**args)
278
+ end
279
+
280
+ # Update properties of this object
281
+ def update!(**args)
282
+ @name = args[:name] if args.key?(:name)
283
+ @primary_contact = args[:primary_contact] if args.key?(:primary_contact)
284
+ end
285
+ end
286
+
287
+ # Defines the destination bigquery dataset.
288
+ class DestinationDataset
289
+ include Google::Apis::Core::Hashable
290
+
291
+ # Contains the reference that identifies a destination bigquery dataset.
292
+ # Corresponds to the JSON property `datasetReference`
293
+ # @return [Google::Apis::AnalyticshubV1beta1::DestinationDatasetReference]
294
+ attr_accessor :dataset_reference
295
+
296
+ # Optional. A user-friendly description of the dataset.
297
+ # Corresponds to the JSON property `description`
298
+ # @return [String]
299
+ attr_accessor :description
300
+
301
+ # Optional. A descriptive name for the dataset.
302
+ # Corresponds to the JSON property `friendlyName`
303
+ # @return [String]
304
+ attr_accessor :friendly_name
305
+
306
+ # Optional. The labels associated with this dataset. You can use these to
307
+ # organize and group your datasets. You can set this property when inserting or
308
+ # updating a dataset. See https://cloud.google.com/resource-manager/docs/
309
+ # creating-managing-labels for more information.
310
+ # Corresponds to the JSON property `labels`
311
+ # @return [Hash<String,String>]
312
+ attr_accessor :labels
313
+
314
+ # Required. The geographic location where the dataset should reside. See https://
315
+ # cloud.google.com/bigquery/docs/locations for supported locations.
316
+ # Corresponds to the JSON property `location`
317
+ # @return [String]
318
+ attr_accessor :location
319
+
320
+ def initialize(**args)
321
+ update!(**args)
322
+ end
323
+
324
+ # Update properties of this object
325
+ def update!(**args)
326
+ @dataset_reference = args[:dataset_reference] if args.key?(:dataset_reference)
327
+ @description = args[:description] if args.key?(:description)
328
+ @friendly_name = args[:friendly_name] if args.key?(:friendly_name)
329
+ @labels = args[:labels] if args.key?(:labels)
330
+ @location = args[:location] if args.key?(:location)
331
+ end
332
+ end
333
+
334
+ # Contains the reference that identifies a destination bigquery dataset.
335
+ class DestinationDatasetReference
336
+ include Google::Apis::Core::Hashable
337
+
338
+ # Required. A unique ID for this dataset, without the project name. The ID must
339
+ # contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The
340
+ # maximum length is 1,024 characters.
341
+ # Corresponds to the JSON property `datasetId`
342
+ # @return [String]
343
+ attr_accessor :dataset_id
344
+
345
+ # Required. The ID of the project containing this dataset.
346
+ # Corresponds to the JSON property `projectId`
347
+ # @return [String]
348
+ attr_accessor :project_id
349
+
350
+ def initialize(**args)
351
+ update!(**args)
352
+ end
353
+
354
+ # Update properties of this object
355
+ def update!(**args)
356
+ @dataset_id = args[:dataset_id] if args.key?(:dataset_id)
357
+ @project_id = args[:project_id] if args.key?(:project_id)
358
+ end
359
+ end
360
+
361
+ # A generic empty message that you can re-use to avoid defining duplicated empty
362
+ # messages in your APIs. A typical example is to use it as the request or the
363
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
364
+ # protobuf.Empty) returns (google.protobuf.Empty); `
365
+ class Empty
366
+ include Google::Apis::Core::Hashable
367
+
368
+ def initialize(**args)
369
+ update!(**args)
370
+ end
371
+
372
+ # Update properties of this object
373
+ def update!(**args)
374
+ end
375
+ end
376
+
377
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
378
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
379
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
380
+ # "Summary size limit" description: "Determines if a summary is less than 100
381
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
382
+ # Requestor is owner" description: "Determines if requestor is the document
383
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
384
+ # Logic): title: "Public documents" description: "Determine whether the document
385
+ # should be publicly visible" expression: "document.type != 'private' &&
386
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
387
+ # string" description: "Create a notification string with a timestamp."
388
+ # expression: "'New message received at ' + string(document.create_time)" The
389
+ # exact variables and functions that may be referenced within an expression are
390
+ # determined by the service that evaluates it. See the service documentation for
391
+ # additional information.
392
+ class Expr
393
+ include Google::Apis::Core::Hashable
394
+
395
+ # Optional. Description of the expression. This is a longer text which describes
396
+ # the expression, e.g. when hovered over it in a UI.
397
+ # Corresponds to the JSON property `description`
398
+ # @return [String]
399
+ attr_accessor :description
400
+
401
+ # Textual representation of an expression in Common Expression Language syntax.
402
+ # Corresponds to the JSON property `expression`
403
+ # @return [String]
404
+ attr_accessor :expression
405
+
406
+ # Optional. String indicating the location of the expression for error reporting,
407
+ # e.g. a file name and a position in the file.
408
+ # Corresponds to the JSON property `location`
409
+ # @return [String]
410
+ attr_accessor :location
411
+
412
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
413
+ # This can be used e.g. in UIs which allow to enter the expression.
414
+ # Corresponds to the JSON property `title`
415
+ # @return [String]
416
+ attr_accessor :title
417
+
418
+ def initialize(**args)
419
+ update!(**args)
420
+ end
421
+
422
+ # Update properties of this object
423
+ def update!(**args)
424
+ @description = args[:description] if args.key?(:description)
425
+ @expression = args[:expression] if args.key?(:expression)
426
+ @location = args[:location] if args.key?(:location)
427
+ @title = args[:title] if args.key?(:title)
428
+ end
429
+ end
430
+
431
+ # Request message for `GetIamPolicy` method.
432
+ class GetIamPolicyRequest
433
+ include Google::Apis::Core::Hashable
434
+
435
+ # Encapsulates settings provided to GetIamPolicy.
436
+ # Corresponds to the JSON property `options`
437
+ # @return [Google::Apis::AnalyticshubV1beta1::GetPolicyOptions]
438
+ attr_accessor :options
439
+
440
+ def initialize(**args)
441
+ update!(**args)
442
+ end
443
+
444
+ # Update properties of this object
445
+ def update!(**args)
446
+ @options = args[:options] if args.key?(:options)
447
+ end
448
+ end
449
+
450
+ # Encapsulates settings provided to GetIamPolicy.
451
+ class GetPolicyOptions
452
+ include Google::Apis::Core::Hashable
453
+
454
+ # Optional. The maximum policy version that will be used to format the policy.
455
+ # Valid values are 0, 1, and 3. Requests specifying an invalid value will be
456
+ # rejected. Requests for policies with any conditional role bindings must
457
+ # specify version 3. Policies with no conditional role bindings may specify any
458
+ # valid value or leave the field unset. The policy in the response might use the
459
+ # policy version that you specified, or it might use a lower policy version. For
460
+ # example, if you specify version 3, but the policy has no conditional role
461
+ # bindings, the response uses version 1. To learn which resources support
462
+ # conditions in their IAM policies, see the [IAM documentation](https://cloud.
463
+ # google.com/iam/help/conditions/resource-policies).
464
+ # Corresponds to the JSON property `requestedPolicyVersion`
465
+ # @return [Fixnum]
466
+ attr_accessor :requested_policy_version
467
+
468
+ def initialize(**args)
469
+ update!(**args)
470
+ end
471
+
472
+ # Update properties of this object
473
+ def update!(**args)
474
+ @requested_policy_version = args[:requested_policy_version] if args.key?(:requested_policy_version)
475
+ end
476
+ end
477
+
478
+ # Message for response to the list of data exchanges.
479
+ class ListDataExchangesResponse
480
+ include Google::Apis::Core::Hashable
481
+
482
+ # The list of data exchanges.
483
+ # Corresponds to the JSON property `dataExchanges`
484
+ # @return [Array<Google::Apis::AnalyticshubV1beta1::DataExchange>]
485
+ attr_accessor :data_exchanges
486
+
487
+ # A token to request the next page of results.
488
+ # Corresponds to the JSON property `nextPageToken`
489
+ # @return [String]
490
+ attr_accessor :next_page_token
491
+
492
+ def initialize(**args)
493
+ update!(**args)
494
+ end
495
+
496
+ # Update properties of this object
497
+ def update!(**args)
498
+ @data_exchanges = args[:data_exchanges] if args.key?(:data_exchanges)
499
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
500
+ end
501
+ end
502
+
503
+ # Message for response to the list of Listings.
504
+ class ListListingsResponse
505
+ include Google::Apis::Core::Hashable
506
+
507
+ # The list of Listing.
508
+ # Corresponds to the JSON property `listings`
509
+ # @return [Array<Google::Apis::AnalyticshubV1beta1::Listing>]
510
+ attr_accessor :listings
511
+
512
+ # A token to request the next page of results.
513
+ # Corresponds to the JSON property `nextPageToken`
514
+ # @return [String]
515
+ attr_accessor :next_page_token
516
+
517
+ def initialize(**args)
518
+ update!(**args)
519
+ end
520
+
521
+ # Update properties of this object
522
+ def update!(**args)
523
+ @listings = args[:listings] if args.key?(:listings)
524
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
525
+ end
526
+ end
527
+
528
+ # The response message for Locations.ListLocations.
529
+ class ListLocationsResponse
530
+ include Google::Apis::Core::Hashable
531
+
532
+ # A list of locations that matches the specified filter in the request.
533
+ # Corresponds to the JSON property `locations`
534
+ # @return [Array<Google::Apis::AnalyticshubV1beta1::Location>]
535
+ attr_accessor :locations
536
+
537
+ # The standard List next-page token.
538
+ # Corresponds to the JSON property `nextPageToken`
539
+ # @return [String]
540
+ attr_accessor :next_page_token
541
+
542
+ def initialize(**args)
543
+ update!(**args)
544
+ end
545
+
546
+ # Update properties of this object
547
+ def update!(**args)
548
+ @locations = args[:locations] if args.key?(:locations)
549
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
550
+ end
551
+ end
552
+
553
+ # Message for response to listing data exchanges in an organization and location.
554
+ class ListOrgDataExchangesResponse
555
+ include Google::Apis::Core::Hashable
556
+
557
+ # The list of data exchanges.
558
+ # Corresponds to the JSON property `dataExchanges`
559
+ # @return [Array<Google::Apis::AnalyticshubV1beta1::DataExchange>]
560
+ attr_accessor :data_exchanges
561
+
562
+ # A token to request the next page of results.
563
+ # Corresponds to the JSON property `nextPageToken`
564
+ # @return [String]
565
+ attr_accessor :next_page_token
566
+
567
+ def initialize(**args)
568
+ update!(**args)
569
+ end
570
+
571
+ # Update properties of this object
572
+ def update!(**args)
573
+ @data_exchanges = args[:data_exchanges] if args.key?(:data_exchanges)
574
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
575
+ end
576
+ end
577
+
578
+ # A listing is what gets published into a data exchange that a subscriber can
579
+ # subscribe to. It contains a reference to the data source along with
580
+ # descriptive information that will help subscribers find and subscribe the data.
581
+ class Listing
582
+ include Google::Apis::Core::Hashable
583
+
584
+ # A reference to a shared dataset. It is an existing BigQuery dataset with a
585
+ # collection of objects such as tables and views that you want to share with
586
+ # subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a
587
+ # linked dataset in the subscriber's project. A Linked dataset is an opaque,
588
+ # read-only BigQuery dataset that serves as a _symbolic link_ to a shared
589
+ # dataset.
590
+ # Corresponds to the JSON property `bigqueryDataset`
591
+ # @return [Google::Apis::AnalyticshubV1beta1::BigQueryDatasetSource]
592
+ attr_accessor :bigquery_dataset
593
+
594
+ # Optional. Categories of the listing. Up to two categories are allowed.
595
+ # Corresponds to the JSON property `categories`
596
+ # @return [Array<String>]
597
+ attr_accessor :categories
598
+
599
+ # Contains details of the data provider.
600
+ # Corresponds to the JSON property `dataProvider`
601
+ # @return [Google::Apis::AnalyticshubV1beta1::DataProvider]
602
+ attr_accessor :data_provider
603
+
604
+ # Optional. Short description of the listing. The description must not contain
605
+ # Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines
606
+ # (LF), carriage returns (CR), and page breaks (FF). Default value is an empty
607
+ # string. Max length: 2000 bytes.
608
+ # Corresponds to the JSON property `description`
609
+ # @return [String]
610
+ attr_accessor :description
611
+
612
+ # Required. Human-readable display name of the listing. The display name must
613
+ # contain only Unicode letters, numbers (0-9), underscores (_), dashes (-),
614
+ # spaces ( ), and can't start or end with spaces. Default value is an empty
615
+ # string. Max length: 63 bytes.
616
+ # Corresponds to the JSON property `displayName`
617
+ # @return [String]
618
+ attr_accessor :display_name
619
+
620
+ # Optional. Documentation describing the listing.
621
+ # Corresponds to the JSON property `documentation`
622
+ # @return [String]
623
+ attr_accessor :documentation
624
+
625
+ # Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB
626
+ # Expected image dimensions are 512x512 pixels, however the API only performs
627
+ # validation on size of the encoded data. Note: For byte fields, the contents of
628
+ # the field are base64-encoded (which increases the size of the data by 33-36%)
629
+ # when using JSON on the wire.
630
+ # Corresponds to the JSON property `icon`
631
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
632
+ # @return [String]
633
+ attr_accessor :icon
634
+
635
+ # Output only. The resource name of the listing. e.g. `projects/myproject/
636
+ # locations/US/dataExchanges/123/listings/456`
637
+ # Corresponds to the JSON property `name`
638
+ # @return [String]
639
+ attr_accessor :name
640
+
641
+ # Optional. Email or URL of the primary point of contact of the listing. Max
642
+ # Length: 1000 bytes.
643
+ # Corresponds to the JSON property `primaryContact`
644
+ # @return [String]
645
+ attr_accessor :primary_contact
646
+
647
+ # Contains details of the listing publisher.
648
+ # Corresponds to the JSON property `publisher`
649
+ # @return [Google::Apis::AnalyticshubV1beta1::Publisher]
650
+ attr_accessor :publisher
651
+
652
+ # Optional. Email or URL of the request access of the listing. Subscribers can
653
+ # use this reference to request access. Max Length: 1000 bytes.
654
+ # Corresponds to the JSON property `requestAccess`
655
+ # @return [String]
656
+ attr_accessor :request_access
657
+
658
+ # Output only. Current state of the listing.
659
+ # Corresponds to the JSON property `state`
660
+ # @return [String]
661
+ attr_accessor :state
662
+
663
+ def initialize(**args)
664
+ update!(**args)
665
+ end
666
+
667
+ # Update properties of this object
668
+ def update!(**args)
669
+ @bigquery_dataset = args[:bigquery_dataset] if args.key?(:bigquery_dataset)
670
+ @categories = args[:categories] if args.key?(:categories)
671
+ @data_provider = args[:data_provider] if args.key?(:data_provider)
672
+ @description = args[:description] if args.key?(:description)
673
+ @display_name = args[:display_name] if args.key?(:display_name)
674
+ @documentation = args[:documentation] if args.key?(:documentation)
675
+ @icon = args[:icon] if args.key?(:icon)
676
+ @name = args[:name] if args.key?(:name)
677
+ @primary_contact = args[:primary_contact] if args.key?(:primary_contact)
678
+ @publisher = args[:publisher] if args.key?(:publisher)
679
+ @request_access = args[:request_access] if args.key?(:request_access)
680
+ @state = args[:state] if args.key?(:state)
681
+ end
682
+ end
683
+
684
+ # A resource that represents Google Cloud Platform location.
685
+ class Location
686
+ include Google::Apis::Core::Hashable
687
+
688
+ # The friendly name for this location, typically a nearby city name. For example,
689
+ # "Tokyo".
690
+ # Corresponds to the JSON property `displayName`
691
+ # @return [String]
692
+ attr_accessor :display_name
693
+
694
+ # Cross-service attributes for the location. For example `"cloud.googleapis.com/
695
+ # region": "us-east1"`
696
+ # Corresponds to the JSON property `labels`
697
+ # @return [Hash<String,String>]
698
+ attr_accessor :labels
699
+
700
+ # The canonical id for this location. For example: `"us-east1"`.
701
+ # Corresponds to the JSON property `locationId`
702
+ # @return [String]
703
+ attr_accessor :location_id
704
+
705
+ # Service-specific metadata. For example the available capacity at the given
706
+ # location.
707
+ # Corresponds to the JSON property `metadata`
708
+ # @return [Hash<String,Object>]
709
+ attr_accessor :metadata
710
+
711
+ # Resource name for the location, which may vary between implementations. For
712
+ # example: `"projects/example-project/locations/us-east1"`
713
+ # Corresponds to the JSON property `name`
714
+ # @return [String]
715
+ attr_accessor :name
716
+
717
+ def initialize(**args)
718
+ update!(**args)
719
+ end
720
+
721
+ # Update properties of this object
722
+ def update!(**args)
723
+ @display_name = args[:display_name] if args.key?(:display_name)
724
+ @labels = args[:labels] if args.key?(:labels)
725
+ @location_id = args[:location_id] if args.key?(:location_id)
726
+ @metadata = args[:metadata] if args.key?(:metadata)
727
+ @name = args[:name] if args.key?(:name)
728
+ end
729
+ end
730
+
731
+ # Represents the metadata of the long-running operation.
732
+ class OperationMetadata
733
+ include Google::Apis::Core::Hashable
734
+
735
+ # Output only. API version used to start the operation.
736
+ # Corresponds to the JSON property `apiVersion`
737
+ # @return [String]
738
+ attr_accessor :api_version
739
+
740
+ # Output only. Identifies whether the user has requested cancellation of the
741
+ # operation. Operations that have been cancelled successfully have Operation.
742
+ # error value with a google.rpc.Status.code of 1, corresponding to `Code.
743
+ # CANCELLED`.
744
+ # Corresponds to the JSON property `cancelRequested`
745
+ # @return [Boolean]
746
+ attr_accessor :cancel_requested
747
+ alias_method :cancel_requested?, :cancel_requested
748
+
749
+ # Output only. The time the operation was created.
750
+ # Corresponds to the JSON property `createTime`
751
+ # @return [String]
752
+ attr_accessor :create_time
753
+
754
+ # Output only. The time the operation finished running.
755
+ # Corresponds to the JSON property `endTime`
756
+ # @return [String]
757
+ attr_accessor :end_time
758
+
759
+ # Output only. Human-readable status of the operation, if any.
760
+ # Corresponds to the JSON property `statusDetail`
761
+ # @return [String]
762
+ attr_accessor :status_detail
763
+
764
+ # Output only. Server-defined resource path for the target of the operation.
765
+ # Corresponds to the JSON property `target`
766
+ # @return [String]
767
+ attr_accessor :target
768
+
769
+ # Output only. Name of the verb executed by the operation.
770
+ # Corresponds to the JSON property `verb`
771
+ # @return [String]
772
+ attr_accessor :verb
773
+
774
+ def initialize(**args)
775
+ update!(**args)
776
+ end
777
+
778
+ # Update properties of this object
779
+ def update!(**args)
780
+ @api_version = args[:api_version] if args.key?(:api_version)
781
+ @cancel_requested = args[:cancel_requested] if args.key?(:cancel_requested)
782
+ @create_time = args[:create_time] if args.key?(:create_time)
783
+ @end_time = args[:end_time] if args.key?(:end_time)
784
+ @status_detail = args[:status_detail] if args.key?(:status_detail)
785
+ @target = args[:target] if args.key?(:target)
786
+ @verb = args[:verb] if args.key?(:verb)
787
+ end
788
+ end
789
+
790
+ # An Identity and Access Management (IAM) policy, which specifies access
791
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
792
+ # A `binding` binds one or more `members`, or principals, to a single `role`.
793
+ # Principals can be user accounts, service accounts, Google groups, and domains (
794
+ # such as G Suite). A `role` is a named list of permissions; each `role` can be
795
+ # an IAM predefined role or a user-created custom role. For some types of Google
796
+ # Cloud resources, a `binding` can also specify a `condition`, which is a
797
+ # logical expression that allows access to a resource only if the expression
798
+ # evaluates to `true`. A condition can add constraints based on attributes of
799
+ # the request, the resource, or both. To learn which resources support
800
+ # conditions in their IAM policies, see the [IAM documentation](https://cloud.
801
+ # google.com/iam/help/conditions/resource-policies). **JSON example:** ` "
802
+ # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
803
+ # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
804
+ # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
805
+ # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
806
+ # ], "condition": ` "title": "expirable access", "description": "Does not grant
807
+ # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
808
+ # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:**
809
+ # bindings: - members: - user:mike@example.com - group:admins@example.com -
810
+ # domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com
811
+ # role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.
812
+ # com role: roles/resourcemanager.organizationViewer condition: title: expirable
813
+ # access description: Does not grant access after Sep 2020 expression: request.
814
+ # time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For
815
+ # a description of IAM and its features, see the [IAM documentation](https://
816
+ # cloud.google.com/iam/docs/).
817
+ class Policy
818
+ include Google::Apis::Core::Hashable
819
+
820
+ # Specifies cloud audit logging configuration for this policy.
821
+ # Corresponds to the JSON property `auditConfigs`
822
+ # @return [Array<Google::Apis::AnalyticshubV1beta1::AuditConfig>]
823
+ attr_accessor :audit_configs
824
+
825
+ # Associates a list of `members`, or principals, with a `role`. Optionally, may
826
+ # specify a `condition` that determines how and when the `bindings` are applied.
827
+ # Each of the `bindings` must contain at least one principal. The `bindings` in
828
+ # a `Policy` can refer to up to 1,500 principals; up to 250 of these principals
829
+ # can be Google groups. Each occurrence of a principal counts towards these
830
+ # limits. For example, if the `bindings` grant 50 different roles to `user:alice@
831
+ # example.com`, and not to any other principal, then you can add another 1,450
832
+ # principals to the `bindings` in the `Policy`.
833
+ # Corresponds to the JSON property `bindings`
834
+ # @return [Array<Google::Apis::AnalyticshubV1beta1::Binding>]
835
+ attr_accessor :bindings
836
+
837
+ # `etag` is used for optimistic concurrency control as a way to help prevent
838
+ # simultaneous updates of a policy from overwriting each other. It is strongly
839
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
840
+ # to perform policy updates in order to avoid race conditions: An `etag` is
841
+ # returned in the response to `getIamPolicy`, and systems are expected to put
842
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
843
+ # applied to the same version of the policy. **Important:** If you use IAM
844
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
845
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
846
+ # with a version `1` policy, and all of the conditions in the version `3` policy
847
+ # are lost.
848
+ # Corresponds to the JSON property `etag`
849
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
850
+ # @return [String]
851
+ attr_accessor :etag
852
+
853
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
854
+ # Requests that specify an invalid value are rejected. Any operation that
855
+ # affects conditional role bindings must specify version `3`. This requirement
856
+ # applies to the following operations: * Getting a policy that includes a
857
+ # conditional role binding * Adding a conditional role binding to a policy *
858
+ # Changing a conditional role binding in a policy * Removing any role binding,
859
+ # with or without a condition, from a policy that includes conditions **
860
+ # Important:** If you use IAM Conditions, you must include the `etag` field
861
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
862
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
863
+ # conditions in the version `3` policy are lost. If a policy does not include
864
+ # any conditions, operations on that policy may specify any valid version or
865
+ # leave the field unset. To learn which resources support conditions in their
866
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
867
+ # conditions/resource-policies).
868
+ # Corresponds to the JSON property `version`
869
+ # @return [Fixnum]
870
+ attr_accessor :version
871
+
872
+ def initialize(**args)
873
+ update!(**args)
874
+ end
875
+
876
+ # Update properties of this object
877
+ def update!(**args)
878
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
879
+ @bindings = args[:bindings] if args.key?(:bindings)
880
+ @etag = args[:etag] if args.key?(:etag)
881
+ @version = args[:version] if args.key?(:version)
882
+ end
883
+ end
884
+
885
+ # Contains details of the listing publisher.
886
+ class Publisher
887
+ include Google::Apis::Core::Hashable
888
+
889
+ # Optional. Name of the listing publisher.
890
+ # Corresponds to the JSON property `name`
891
+ # @return [String]
892
+ attr_accessor :name
893
+
894
+ # Optional. Email or URL of the listing publisher. Max Length: 1000 bytes.
895
+ # Corresponds to the JSON property `primaryContact`
896
+ # @return [String]
897
+ attr_accessor :primary_contact
898
+
899
+ def initialize(**args)
900
+ update!(**args)
901
+ end
902
+
903
+ # Update properties of this object
904
+ def update!(**args)
905
+ @name = args[:name] if args.key?(:name)
906
+ @primary_contact = args[:primary_contact] if args.key?(:primary_contact)
907
+ end
908
+ end
909
+
910
+ # Request message for `SetIamPolicy` method.
911
+ class SetIamPolicyRequest
912
+ include Google::Apis::Core::Hashable
913
+
914
+ # An Identity and Access Management (IAM) policy, which specifies access
915
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
916
+ # A `binding` binds one or more `members`, or principals, to a single `role`.
917
+ # Principals can be user accounts, service accounts, Google groups, and domains (
918
+ # such as G Suite). A `role` is a named list of permissions; each `role` can be
919
+ # an IAM predefined role or a user-created custom role. For some types of Google
920
+ # Cloud resources, a `binding` can also specify a `condition`, which is a
921
+ # logical expression that allows access to a resource only if the expression
922
+ # evaluates to `true`. A condition can add constraints based on attributes of
923
+ # the request, the resource, or both. To learn which resources support
924
+ # conditions in their IAM policies, see the [IAM documentation](https://cloud.
925
+ # google.com/iam/help/conditions/resource-policies). **JSON example:** ` "
926
+ # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
927
+ # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
928
+ # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
929
+ # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
930
+ # ], "condition": ` "title": "expirable access", "description": "Does not grant
931
+ # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
932
+ # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:**
933
+ # bindings: - members: - user:mike@example.com - group:admins@example.com -
934
+ # domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com
935
+ # role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.
936
+ # com role: roles/resourcemanager.organizationViewer condition: title: expirable
937
+ # access description: Does not grant access after Sep 2020 expression: request.
938
+ # time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For
939
+ # a description of IAM and its features, see the [IAM documentation](https://
940
+ # cloud.google.com/iam/docs/).
941
+ # Corresponds to the JSON property `policy`
942
+ # @return [Google::Apis::AnalyticshubV1beta1::Policy]
943
+ attr_accessor :policy
944
+
945
+ # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
946
+ # the fields in the mask will be modified. If no mask is provided, the following
947
+ # default mask is used: `paths: "bindings, etag"`
948
+ # Corresponds to the JSON property `updateMask`
949
+ # @return [String]
950
+ attr_accessor :update_mask
951
+
952
+ def initialize(**args)
953
+ update!(**args)
954
+ end
955
+
956
+ # Update properties of this object
957
+ def update!(**args)
958
+ @policy = args[:policy] if args.key?(:policy)
959
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
960
+ end
961
+ end
962
+
963
+ # Message for subscribing to a listing.
964
+ class SubscribeListingRequest
965
+ include Google::Apis::Core::Hashable
966
+
967
+ # Defines the destination bigquery dataset.
968
+ # Corresponds to the JSON property `destinationDataset`
969
+ # @return [Google::Apis::AnalyticshubV1beta1::DestinationDataset]
970
+ attr_accessor :destination_dataset
971
+
972
+ def initialize(**args)
973
+ update!(**args)
974
+ end
975
+
976
+ # Update properties of this object
977
+ def update!(**args)
978
+ @destination_dataset = args[:destination_dataset] if args.key?(:destination_dataset)
979
+ end
980
+ end
981
+
982
+ # Message for response when you subscribe to a listing. Empty for now.
983
+ class SubscribeListingResponse
984
+ include Google::Apis::Core::Hashable
985
+
986
+ def initialize(**args)
987
+ update!(**args)
988
+ end
989
+
990
+ # Update properties of this object
991
+ def update!(**args)
992
+ end
993
+ end
994
+
995
+ # Request message for `TestIamPermissions` method.
996
+ class TestIamPermissionsRequest
997
+ include Google::Apis::Core::Hashable
998
+
999
+ # The set of permissions to check for the `resource`. Permissions with wildcards
1000
+ # (such as `*` or `storage.*`) are not allowed. For more information see [IAM
1001
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
1002
+ # Corresponds to the JSON property `permissions`
1003
+ # @return [Array<String>]
1004
+ attr_accessor :permissions
1005
+
1006
+ def initialize(**args)
1007
+ update!(**args)
1008
+ end
1009
+
1010
+ # Update properties of this object
1011
+ def update!(**args)
1012
+ @permissions = args[:permissions] if args.key?(:permissions)
1013
+ end
1014
+ end
1015
+
1016
+ # Response message for `TestIamPermissions` method.
1017
+ class TestIamPermissionsResponse
1018
+ include Google::Apis::Core::Hashable
1019
+
1020
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
1021
+ # Corresponds to the JSON property `permissions`
1022
+ # @return [Array<String>]
1023
+ attr_accessor :permissions
1024
+
1025
+ def initialize(**args)
1026
+ update!(**args)
1027
+ end
1028
+
1029
+ # Update properties of this object
1030
+ def update!(**args)
1031
+ @permissions = args[:permissions] if args.key?(:permissions)
1032
+ end
1033
+ end
1034
+ end
1035
+ end
1036
+ end