google-apis-analyticshub_v1 0.1.0

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