google-apis-cloudasset_v1p7beta1 0.2.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db95e223da7dd719426721acb9417c28dd3da265182e788b9aa1d0940d243480
4
- data.tar.gz: d0fd4ed57c1fec311cbafc906767706fb7456de56a31bb2848c3107c7677a5dc
3
+ metadata.gz: f6e30b90be99fd2ca96d5795790a4973cc8a6beb301cb70451cf4f9f04596d88
4
+ data.tar.gz: 189ac0b90ad70f1e1598302cdec051a293d316e0e7b69ac87d2d8060a952cc94
5
5
  SHA512:
6
- metadata.gz: ed3f918f2ad8478efed1b882560dc09bce5d703911490da74a858ea66c8a7fcd98380d88d9830249af729b95a5304df5f7fe2c191d31cff992c3de8f4fcfd337
7
- data.tar.gz: 4c07d6bf2fd85b0b1279ce64b476ec8c97355dcff1a91208d41d50ab94072dbeae580f10c11c9edbcf26b5580f4d683ff4c87c125b537157050f031444698e5a
6
+ metadata.gz: af4509205def8f8c01757903b9884ea9cae0df7eb8dbcbce8bb1c6a6aeb93539085cff7f44b3969f2166be8b11659815fc4ef26ac5b94d23753f9292a722a3a2
7
+ data.tar.gz: 8de702b4cc504912f3775f9c1646fcad32a5807132f1efdbab1fd7d7e79ac5e4bd893954ecac9dacd523a0be06a4328a7c060a26f53d0003e8eaac9d4d06ea08
data/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Release history for google-apis-cloudasset_v1p7beta1
2
2
 
3
+ ### v0.7.0 (2021-05-19)
4
+
5
+ * Unspecified changes
6
+
7
+ ### v0.6.0 (2021-04-22)
8
+
9
+ * Regenerated from discovery document revision 20210416
10
+
11
+ ### v0.5.0 (2021-03-31)
12
+
13
+ * Regenerated from discovery document revision 20210326
14
+
15
+ ### v0.4.0 (2021-03-09)
16
+
17
+ * Regenerated from discovery document revision 20210305
18
+ * Regenerated using generator version 0.2.0
19
+
20
+ ### v0.3.0 (2021-03-04)
21
+
22
+ * Regenerated from discovery document revision 20210226
23
+
3
24
  ### v0.2.0 (2021-02-11)
4
25
 
5
26
  * Regenerated from discovery document revision 20210209
@@ -29,7 +29,7 @@ module Google
29
29
  # This is NOT the gem version.
30
30
  VERSION = 'V1p7beta1'
31
31
 
32
- # View and manage your data across Google Cloud Platform services
32
+ # See, edit, configure, and delete your Google Cloud Platform data
33
33
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
34
34
  end
35
35
  end
@@ -22,8 +22,355 @@ module Google
22
22
  module Apis
23
23
  module CloudassetV1p7beta1
24
24
 
25
+ # A response message for AssetService.AnalyzeIamPolicyLongrunning.
26
+ class AnalyzeIamPolicyLongrunningResponse
27
+ include Google::Apis::Core::Hashable
28
+
29
+ def initialize(**args)
30
+ update!(**args)
31
+ end
32
+
33
+ # Update properties of this object
34
+ def update!(**args)
35
+ end
36
+ end
37
+
38
+ # Specifies the audit configuration for a service. The configuration determines
39
+ # which permission types are logged, and what identities, if any, are exempted
40
+ # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
41
+ # are AuditConfigs for both `allServices` and a specific service, the union of
42
+ # the two AuditConfigs is used for that service: the log_types specified in each
43
+ # AuditConfig are enabled, and the exempted_members in each AuditLogConfig are
44
+ # exempted. Example Policy with multiple AuditConfigs: ` "audit_configs": [ ` "
45
+ # service": "allServices", "audit_log_configs": [ ` "log_type": "DATA_READ", "
46
+ # exempted_members": [ "user:jose@example.com" ] `, ` "log_type": "DATA_WRITE" `,
47
+ # ` "log_type": "ADMIN_READ" ` ] `, ` "service": "sampleservice.googleapis.com",
48
+ # "audit_log_configs": [ ` "log_type": "DATA_READ" `, ` "log_type": "DATA_WRITE"
49
+ # , "exempted_members": [ "user:aliya@example.com" ] ` ] ` ] ` For sampleservice,
50
+ # this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
51
+ # exempts jose@example.com from DATA_READ logging, and aliya@example.com from
52
+ # DATA_WRITE logging.
53
+ class AuditConfig
54
+ include Google::Apis::Core::Hashable
55
+
56
+ # The configuration for logging of each type of permission.
57
+ # Corresponds to the JSON property `auditLogConfigs`
58
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::AuditLogConfig>]
59
+ attr_accessor :audit_log_configs
60
+
61
+ # Specifies a service that will be enabled for audit logging. For example, `
62
+ # storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special
63
+ # value that covers all services.
64
+ # Corresponds to the JSON property `service`
65
+ # @return [String]
66
+ attr_accessor :service
67
+
68
+ def initialize(**args)
69
+ update!(**args)
70
+ end
71
+
72
+ # Update properties of this object
73
+ def update!(**args)
74
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
75
+ @service = args[:service] if args.key?(:service)
76
+ end
77
+ end
78
+
79
+ # Provides the configuration for logging a type of permissions. Example: ` "
80
+ # audit_log_configs": [ ` "log_type": "DATA_READ", "exempted_members": [ "user:
81
+ # jose@example.com" ] `, ` "log_type": "DATA_WRITE" ` ] ` This enables '
82
+ # DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from
83
+ # DATA_READ logging.
84
+ class AuditLogConfig
85
+ include Google::Apis::Core::Hashable
86
+
87
+ # Specifies the identities that do not cause logging for this type of permission.
88
+ # Follows the same format of Binding.members.
89
+ # Corresponds to the JSON property `exemptedMembers`
90
+ # @return [Array<String>]
91
+ attr_accessor :exempted_members
92
+
93
+ # The log type that this config enables.
94
+ # Corresponds to the JSON property `logType`
95
+ # @return [String]
96
+ attr_accessor :log_type
97
+
98
+ def initialize(**args)
99
+ update!(**args)
100
+ end
101
+
102
+ # Update properties of this object
103
+ def update!(**args)
104
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
105
+ @log_type = args[:log_type] if args.key?(:log_type)
106
+ end
107
+ end
108
+
109
+ # Associates `members` with a `role`.
110
+ class Binding
111
+ include Google::Apis::Core::Hashable
112
+
113
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
114
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
115
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
116
+ # "Summary size limit" description: "Determines if a summary is less than 100
117
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
118
+ # Requestor is owner" description: "Determines if requestor is the document
119
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
120
+ # Logic): title: "Public documents" description: "Determine whether the document
121
+ # should be publicly visible" expression: "document.type != 'private' &&
122
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
123
+ # string" description: "Create a notification string with a timestamp."
124
+ # expression: "'New message received at ' + string(document.create_time)" The
125
+ # exact variables and functions that may be referenced within an expression are
126
+ # determined by the service that evaluates it. See the service documentation for
127
+ # additional information.
128
+ # Corresponds to the JSON property `condition`
129
+ # @return [Google::Apis::CloudassetV1p7beta1::Expr]
130
+ attr_accessor :condition
131
+
132
+ # Specifies the identities requesting access for a Cloud Platform resource. `
133
+ # members` can have the following values: * `allUsers`: A special identifier
134
+ # that represents anyone who is on the internet; with or without a Google
135
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
136
+ # anyone who is authenticated with a Google account or a service account. * `
137
+ # user:`emailid``: An email address that represents a specific Google account.
138
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
139
+ # address that represents a service account. For example, `my-other-app@appspot.
140
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
141
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
142
+ # `uniqueid``: An email address (plus unique identifier) representing a user
143
+ # that has been recently deleted. For example, `alice@example.com?uid=
144
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
145
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
146
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
147
+ # identifier) representing a service account that has been recently deleted. For
148
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
149
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
150
+ # emailid`` and the undeleted service account retains the role in the binding. *
151
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
152
+ # identifier) representing a Google group that has been recently deleted. For
153
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
154
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
155
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
156
+ # primary) that represents all the users of that domain. For example, `google.
157
+ # com` or `example.com`.
158
+ # Corresponds to the JSON property `members`
159
+ # @return [Array<String>]
160
+ attr_accessor :members
161
+
162
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
163
+ # , or `roles/owner`.
164
+ # Corresponds to the JSON property `role`
165
+ # @return [String]
166
+ attr_accessor :role
167
+
168
+ def initialize(**args)
169
+ update!(**args)
170
+ end
171
+
172
+ # Update properties of this object
173
+ def update!(**args)
174
+ @condition = args[:condition] if args.key?(:condition)
175
+ @members = args[:members] if args.key?(:members)
176
+ @role = args[:role] if args.key?(:role)
177
+ end
178
+ end
179
+
180
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
181
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
182
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
183
+ # "Summary size limit" description: "Determines if a summary is less than 100
184
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
185
+ # Requestor is owner" description: "Determines if requestor is the document
186
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
187
+ # Logic): title: "Public documents" description: "Determine whether the document
188
+ # should be publicly visible" expression: "document.type != 'private' &&
189
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
190
+ # string" description: "Create a notification string with a timestamp."
191
+ # expression: "'New message received at ' + string(document.create_time)" The
192
+ # exact variables and functions that may be referenced within an expression are
193
+ # determined by the service that evaluates it. See the service documentation for
194
+ # additional information.
195
+ class Expr
196
+ include Google::Apis::Core::Hashable
197
+
198
+ # Optional. Description of the expression. This is a longer text which describes
199
+ # the expression, e.g. when hovered over it in a UI.
200
+ # Corresponds to the JSON property `description`
201
+ # @return [String]
202
+ attr_accessor :description
203
+
204
+ # Textual representation of an expression in Common Expression Language syntax.
205
+ # Corresponds to the JSON property `expression`
206
+ # @return [String]
207
+ attr_accessor :expression
208
+
209
+ # Optional. String indicating the location of the expression for error reporting,
210
+ # e.g. a file name and a position in the file.
211
+ # Corresponds to the JSON property `location`
212
+ # @return [String]
213
+ attr_accessor :location
214
+
215
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
216
+ # This can be used e.g. in UIs which allow to enter the expression.
217
+ # Corresponds to the JSON property `title`
218
+ # @return [String]
219
+ attr_accessor :title
220
+
221
+ def initialize(**args)
222
+ update!(**args)
223
+ end
224
+
225
+ # Update properties of this object
226
+ def update!(**args)
227
+ @description = args[:description] if args.key?(:description)
228
+ @expression = args[:expression] if args.key?(:expression)
229
+ @location = args[:location] if args.key?(:location)
230
+ @title = args[:title] if args.key?(:title)
231
+ end
232
+ end
233
+
234
+ # An asset in Google Cloud. An asset can be any resource in the Google Cloud [
235
+ # resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-
236
+ # platform-resource-hierarchy), a resource outside the Google Cloud resource
237
+ # hierarchy (such as Google Kubernetes Engine clusters and objects), or a policy
238
+ # (e.g. Cloud IAM policy). See [Supported asset types](https://cloud.google.com/
239
+ # asset-inventory/docs/supported-asset-types) for more information.
240
+ class GoogleCloudAssetV1p7beta1Asset
241
+ include Google::Apis::Core::Hashable
242
+
243
+ # An `AccessLevel` is a label that can be applied to requests to Google Cloud
244
+ # services, along with a list of requirements necessary for the label to be
245
+ # applied.
246
+ # Corresponds to the JSON property `accessLevel`
247
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1AccessLevel]
248
+ attr_accessor :access_level
249
+
250
+ # `AccessPolicy` is a container for `AccessLevels` (which define the necessary
251
+ # attributes to use Google Cloud services) and `ServicePerimeters` (which define
252
+ # regions of services able to freely pass data within a perimeter). An access
253
+ # policy is globally visible within an organization, and the restrictions it
254
+ # specifies apply to all projects within an organization.
255
+ # Corresponds to the JSON property `accessPolicy`
256
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1AccessPolicy]
257
+ attr_accessor :access_policy
258
+
259
+ # The ancestry path of an asset in Google Cloud [resource hierarchy](https://
260
+ # cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy),
261
+ # represented as a list of relative resource names. An ancestry path starts with
262
+ # the closest ancestor in the hierarchy and ends at root. If the asset is a
263
+ # project, folder, or organization, the ancestry path starts from the asset
264
+ # itself. Example: `["projects/123456789", "folders/5432", "organizations/1234"]`
265
+ # Corresponds to the JSON property `ancestors`
266
+ # @return [Array<String>]
267
+ attr_accessor :ancestors
268
+
269
+ # The type of the asset. Example: `compute.googleapis.com/Disk` See [Supported
270
+ # asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-
271
+ # types) for more information.
272
+ # Corresponds to the JSON property `assetType`
273
+ # @return [String]
274
+ attr_accessor :asset_type
275
+
276
+ # An Identity and Access Management (IAM) policy, which specifies access
277
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
278
+ # A `binding` binds one or more `members` to a single `role`. Members can be
279
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
280
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
281
+ # role or a user-created custom role. For some types of Google Cloud resources,
282
+ # a `binding` can also specify a `condition`, which is a logical expression that
283
+ # allows access to a resource only if the expression evaluates to `true`. A
284
+ # condition can add constraints based on attributes of the request, the resource,
285
+ # or both. To learn which resources support conditions in their IAM policies,
286
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
287
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
288
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
289
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
290
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
291
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
292
+ # title": "expirable access", "description": "Does not grant access after Sep
293
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
294
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
295
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
296
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
297
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
298
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
299
+ # description: Does not grant access after Sep 2020 expression: request.time <
300
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
301
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
302
+ # google.com/iam/docs/).
303
+ # Corresponds to the JSON property `iamPolicy`
304
+ # @return [Google::Apis::CloudassetV1p7beta1::Policy]
305
+ attr_accessor :iam_policy
306
+
307
+ # The full name of the asset. Example: `//compute.googleapis.com/projects/
308
+ # my_project_123/zones/zone1/instances/instance1` See [Resource names](https://
309
+ # cloud.google.com/apis/design/resource_names#full_resource_name) for more
310
+ # information.
311
+ # Corresponds to the JSON property `name`
312
+ # @return [String]
313
+ attr_accessor :name
314
+
315
+ # A representation of an [organization policy](https://cloud.google.com/resource-
316
+ # manager/docs/organization-policy/overview#organization_policy). There can be
317
+ # more than one organization policy with different constraints set on a given
318
+ # resource.
319
+ # Corresponds to the JSON property `orgPolicy`
320
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1Policy>]
321
+ attr_accessor :org_policy
322
+
323
+ # The detailed related assets with the `relationship_type`.
324
+ # Corresponds to the JSON property `relatedAssets`
325
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1RelatedAssets]
326
+ attr_accessor :related_assets
327
+
328
+ # A representation of a Google Cloud resource.
329
+ # Corresponds to the JSON property `resource`
330
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1Resource]
331
+ attr_accessor :resource
332
+
333
+ # `ServicePerimeter` describes a set of Google Cloud resources which can freely
334
+ # import and export data amongst themselves, but not export outside of the `
335
+ # ServicePerimeter`. If a request with a source within this `ServicePerimeter`
336
+ # has a target outside of the `ServicePerimeter`, the request will be blocked.
337
+ # Otherwise the request is allowed. There are two types of Service Perimeter -
338
+ # Regular and Bridge. Regular Service Perimeters cannot overlap, a single Google
339
+ # Cloud project can only belong to a single regular Service Perimeter. Service
340
+ # Perimeter Bridges can contain only Google Cloud projects as members, a single
341
+ # Google Cloud project may belong to multiple Service Perimeter Bridges.
342
+ # Corresponds to the JSON property `servicePerimeter`
343
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeter]
344
+ attr_accessor :service_perimeter
345
+
346
+ # The last update timestamp of an asset. update_time is updated when create/
347
+ # update/delete operation is performed.
348
+ # Corresponds to the JSON property `updateTime`
349
+ # @return [String]
350
+ attr_accessor :update_time
351
+
352
+ def initialize(**args)
353
+ update!(**args)
354
+ end
355
+
356
+ # Update properties of this object
357
+ def update!(**args)
358
+ @access_level = args[:access_level] if args.key?(:access_level)
359
+ @access_policy = args[:access_policy] if args.key?(:access_policy)
360
+ @ancestors = args[:ancestors] if args.key?(:ancestors)
361
+ @asset_type = args[:asset_type] if args.key?(:asset_type)
362
+ @iam_policy = args[:iam_policy] if args.key?(:iam_policy)
363
+ @name = args[:name] if args.key?(:name)
364
+ @org_policy = args[:org_policy] if args.key?(:org_policy)
365
+ @related_assets = args[:related_assets] if args.key?(:related_assets)
366
+ @resource = args[:resource] if args.key?(:resource)
367
+ @service_perimeter = args[:service_perimeter] if args.key?(:service_perimeter)
368
+ @update_time = args[:update_time] if args.key?(:update_time)
369
+ end
370
+ end
371
+
25
372
  # A BigQuery destination for exporting assets to.
26
- class BigQueryDestination
373
+ class GoogleCloudAssetV1p7beta1BigQueryDestination
27
374
  include Google::Apis::Core::Hashable
28
375
 
29
376
  # Required. The BigQuery dataset in format "projects/projectId/datasets/
@@ -44,7 +391,7 @@ module Google
44
391
 
45
392
  # Specifications of BigQuery partitioned table as export destination.
46
393
  # Corresponds to the JSON property `partitionSpec`
47
- # @return [Google::Apis::CloudassetV1p7beta1::PartitionSpec]
394
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1PartitionSpec]
48
395
  attr_accessor :partition_spec
49
396
 
50
397
  # If this flag is `TRUE`, the snapshot results will be written to one or
@@ -94,7 +441,7 @@ module Google
94
441
  end
95
442
 
96
443
  # Export asset request.
97
- class ExportAssetsRequest
444
+ class GoogleCloudAssetV1p7beta1ExportAssetsRequest
98
445
  include Google::Apis::Core::Hashable
99
446
 
100
447
  # A list of asset types to take a snapshot for. For example: "compute.googleapis.
@@ -120,7 +467,7 @@ module Google
120
467
 
121
468
  # Output configuration for export assets destination.
122
469
  # Corresponds to the JSON property `outputConfig`
123
- # @return [Google::Apis::CloudassetV1p7beta1::OutputConfig]
470
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1OutputConfig]
124
471
  attr_accessor :output_config
125
472
 
126
473
  # Timestamp to take an asset snapshot. This can only be set to a timestamp
@@ -160,7 +507,7 @@ module Google
160
507
  end
161
508
 
162
509
  # A Cloud Storage location.
163
- class GcsDestination
510
+ class GoogleCloudAssetV1p7beta1GcsDestination
164
511
  include Google::Apis::Core::Hashable
165
512
 
166
513
  # The uri of the Cloud Storage object. It's the same uri that is used by gsutil.
@@ -194,53 +541,83 @@ module Google
194
541
  end
195
542
  end
196
543
 
197
- # This resource represents a long-running operation that is the result of a
198
- # network API call.
199
- class Operation
544
+ # Output configuration for export assets destination.
545
+ class GoogleCloudAssetV1p7beta1OutputConfig
200
546
  include Google::Apis::Core::Hashable
201
547
 
202
- # If the value is `false`, it means the operation is still in progress. If `true`
203
- # , the operation is completed, and either `error` or `response` is available.
204
- # Corresponds to the JSON property `done`
205
- # @return [Boolean]
206
- attr_accessor :done
207
- alias_method :done?, :done
548
+ # A BigQuery destination for exporting assets to.
549
+ # Corresponds to the JSON property `bigqueryDestination`
550
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1BigQueryDestination]
551
+ attr_accessor :bigquery_destination
208
552
 
209
- # The `Status` type defines a logical error model that is suitable for different
210
- # programming environments, including REST APIs and RPC APIs. It is used by [
211
- # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
212
- # data: error code, error message, and error details. You can find out more
213
- # about this error model and how to work with it in the [API Design Guide](https:
214
- # //cloud.google.com/apis/design/errors).
215
- # Corresponds to the JSON property `error`
216
- # @return [Google::Apis::CloudassetV1p7beta1::Status]
217
- attr_accessor :error
553
+ # A Cloud Storage location.
554
+ # Corresponds to the JSON property `gcsDestination`
555
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1GcsDestination]
556
+ attr_accessor :gcs_destination
218
557
 
219
- # Service-specific metadata associated with the operation. It typically contains
220
- # progress information and common metadata such as create time. Some services
221
- # might not provide such metadata. Any method that returns a long-running
222
- # operation should document the metadata type, if any.
223
- # Corresponds to the JSON property `metadata`
224
- # @return [Hash<String,Object>]
225
- attr_accessor :metadata
558
+ def initialize(**args)
559
+ update!(**args)
560
+ end
226
561
 
227
- # The server-assigned name, which is only unique within the same service that
228
- # originally returns it. If you use the default HTTP mapping, the `name` should
229
- # be a resource name ending with `operations/`unique_id``.
230
- # Corresponds to the JSON property `name`
562
+ # Update properties of this object
563
+ def update!(**args)
564
+ @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
565
+ @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
566
+ end
567
+ end
568
+
569
+ # Specifications of BigQuery partitioned table as export destination.
570
+ class GoogleCloudAssetV1p7beta1PartitionSpec
571
+ include Google::Apis::Core::Hashable
572
+
573
+ # The partition key for BigQuery partitioned table.
574
+ # Corresponds to the JSON property `partitionKey`
231
575
  # @return [String]
232
- attr_accessor :name
576
+ attr_accessor :partition_key
233
577
 
234
- # The normal response of the operation in case of success. If the original
235
- # method returns no data on success, such as `Delete`, the response is `google.
236
- # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
237
- # the response should be the resource. For other methods, the response should
238
- # have the type `XxxResponse`, where `Xxx` is the original method name. For
239
- # example, if the original method name is `TakeSnapshot()`, the inferred
240
- # response type is `TakeSnapshotResponse`.
241
- # Corresponds to the JSON property `response`
242
- # @return [Hash<String,Object>]
243
- attr_accessor :response
578
+ def initialize(**args)
579
+ update!(**args)
580
+ end
581
+
582
+ # Update properties of this object
583
+ def update!(**args)
584
+ @partition_key = args[:partition_key] if args.key?(:partition_key)
585
+ end
586
+ end
587
+
588
+ # An asset identify in Google Cloud which contains its name, type and ancestors.
589
+ # An asset can be any resource in the Google Cloud [resource hierarchy](https://
590
+ # cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), a
591
+ # resource outside the Google Cloud resource hierarchy (such as Google
592
+ # Kubernetes Engine clusters and objects), or a policy (e.g. Cloud IAM policy).
593
+ # See [Supported asset types](https://cloud.google.com/asset-inventory/docs/
594
+ # supported-asset-types) for more information.
595
+ class GoogleCloudAssetV1p7beta1RelatedAsset
596
+ include Google::Apis::Core::Hashable
597
+
598
+ # The ancestors of an asset in Google Cloud [resource hierarchy](https://cloud.
599
+ # google.com/resource-manager/docs/cloud-platform-resource-hierarchy),
600
+ # represented as a list of relative resource names. An ancestry path starts with
601
+ # the closest ancestor in the hierarchy and ends at root. Example: `["projects/
602
+ # 123456789", "folders/5432", "organizations/1234"]`
603
+ # Corresponds to the JSON property `ancestors`
604
+ # @return [Array<String>]
605
+ attr_accessor :ancestors
606
+
607
+ # The full name of the asset. Example: `//compute.googleapis.com/projects/
608
+ # my_project_123/zones/zone1/instances/instance1` See [Resource names](https://
609
+ # cloud.google.com/apis/design/resource_names#full_resource_name) for more
610
+ # information.
611
+ # Corresponds to the JSON property `asset`
612
+ # @return [String]
613
+ attr_accessor :asset
614
+
615
+ # The type of the asset. Example: `compute.googleapis.com/Disk` See [Supported
616
+ # asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-
617
+ # types) for more information.
618
+ # Corresponds to the JSON property `assetType`
619
+ # @return [String]
620
+ attr_accessor :asset_type
244
621
 
245
622
  def initialize(**args)
246
623
  update!(**args)
@@ -248,27 +625,26 @@ module Google
248
625
 
249
626
  # Update properties of this object
250
627
  def update!(**args)
251
- @done = args[:done] if args.key?(:done)
252
- @error = args[:error] if args.key?(:error)
253
- @metadata = args[:metadata] if args.key?(:metadata)
254
- @name = args[:name] if args.key?(:name)
255
- @response = args[:response] if args.key?(:response)
628
+ @ancestors = args[:ancestors] if args.key?(:ancestors)
629
+ @asset = args[:asset] if args.key?(:asset)
630
+ @asset_type = args[:asset_type] if args.key?(:asset_type)
256
631
  end
257
632
  end
258
633
 
259
- # Output configuration for export assets destination.
260
- class OutputConfig
634
+ # The detailed related assets with the `relationship_type`.
635
+ class GoogleCloudAssetV1p7beta1RelatedAssets
261
636
  include Google::Apis::Core::Hashable
262
637
 
263
- # A BigQuery destination for exporting assets to.
264
- # Corresponds to the JSON property `bigqueryDestination`
265
- # @return [Google::Apis::CloudassetV1p7beta1::BigQueryDestination]
266
- attr_accessor :bigquery_destination
638
+ # The peer resources of the relationship.
639
+ # Corresponds to the JSON property `assets`
640
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1RelatedAsset>]
641
+ attr_accessor :assets
267
642
 
268
- # A Cloud Storage location.
269
- # Corresponds to the JSON property `gcsDestination`
270
- # @return [Google::Apis::CloudassetV1p7beta1::GcsDestination]
271
- attr_accessor :gcs_destination
643
+ # The relationship attributes which include `type`, `source_resource_type`, `
644
+ # target_resource_type` and `action`.
645
+ # Corresponds to the JSON property `relationshipAttributes`
646
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudAssetV1p7beta1RelationshipAttributes]
647
+ attr_accessor :relationship_attributes
272
648
 
273
649
  def initialize(**args)
274
650
  update!(**args)
@@ -276,19 +652,36 @@ module Google
276
652
 
277
653
  # Update properties of this object
278
654
  def update!(**args)
279
- @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
280
- @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
655
+ @assets = args[:assets] if args.key?(:assets)
656
+ @relationship_attributes = args[:relationship_attributes] if args.key?(:relationship_attributes)
281
657
  end
282
658
  end
283
659
 
284
- # Specifications of BigQuery partitioned table as export destination.
285
- class PartitionSpec
660
+ # The relationship attributes which include `type`, `source_resource_type`, `
661
+ # target_resource_type` and `action`.
662
+ class GoogleCloudAssetV1p7beta1RelationshipAttributes
286
663
  include Google::Apis::Core::Hashable
287
664
 
288
- # The partition key for BigQuery partitioned table.
289
- # Corresponds to the JSON property `partitionKey`
665
+ # The detail of the relationship, e.g. `contains`, `attaches`
666
+ # Corresponds to the JSON property `action`
290
667
  # @return [String]
291
- attr_accessor :partition_key
668
+ attr_accessor :action
669
+
670
+ # The source asset type. Example: `compute.googleapis.com/Instance`
671
+ # Corresponds to the JSON property `sourceResourceType`
672
+ # @return [String]
673
+ attr_accessor :source_resource_type
674
+
675
+ # The target asset type. Example: `compute.googleapis.com/Disk`
676
+ # Corresponds to the JSON property `targetResourceType`
677
+ # @return [String]
678
+ attr_accessor :target_resource_type
679
+
680
+ # The unique identifier of the relationship type. Example: `
681
+ # INSTANCE_TO_INSTANCEGROUP`
682
+ # Corresponds to the JSON property `type`
683
+ # @return [String]
684
+ attr_accessor :type
292
685
 
293
686
  def initialize(**args)
294
687
  update!(**args)
@@ -296,7 +689,1337 @@ module Google
296
689
 
297
690
  # Update properties of this object
298
691
  def update!(**args)
299
- @partition_key = args[:partition_key] if args.key?(:partition_key)
692
+ @action = args[:action] if args.key?(:action)
693
+ @source_resource_type = args[:source_resource_type] if args.key?(:source_resource_type)
694
+ @target_resource_type = args[:target_resource_type] if args.key?(:target_resource_type)
695
+ @type = args[:type] if args.key?(:type)
696
+ end
697
+ end
698
+
699
+ # A representation of a Google Cloud resource.
700
+ class GoogleCloudAssetV1p7beta1Resource
701
+ include Google::Apis::Core::Hashable
702
+
703
+ # The content of the resource, in which some sensitive fields are removed and
704
+ # may not be present.
705
+ # Corresponds to the JSON property `data`
706
+ # @return [Hash<String,Object>]
707
+ attr_accessor :data
708
+
709
+ # The URL of the discovery document containing the resource's JSON schema.
710
+ # Example: `https://www.googleapis.com/discovery/v1/apis/compute/v1/rest` This
711
+ # value is unspecified for resources that do not have an API based on a
712
+ # discovery document, such as Cloud Bigtable.
713
+ # Corresponds to the JSON property `discoveryDocumentUri`
714
+ # @return [String]
715
+ attr_accessor :discovery_document_uri
716
+
717
+ # The JSON schema name listed in the discovery document. Example: `Project` This
718
+ # value is unspecified for resources that do not have an API based on a
719
+ # discovery document, such as Cloud Bigtable.
720
+ # Corresponds to the JSON property `discoveryName`
721
+ # @return [String]
722
+ attr_accessor :discovery_name
723
+
724
+ # The location of the resource in Google Cloud, such as its zone and region. For
725
+ # more information, see https://cloud.google.com/about/locations/.
726
+ # Corresponds to the JSON property `location`
727
+ # @return [String]
728
+ attr_accessor :location
729
+
730
+ # The full name of the immediate parent of this resource. See [Resource Names](
731
+ # https://cloud.google.com/apis/design/resource_names#full_resource_name) for
732
+ # more information. For Google Cloud assets, this value is the parent resource
733
+ # defined in the [Cloud IAM policy hierarchy](https://cloud.google.com/iam/docs/
734
+ # overview#policy_hierarchy). Example: `//cloudresourcemanager.googleapis.com/
735
+ # projects/my_project_123` For third-party assets, this field may be set
736
+ # differently.
737
+ # Corresponds to the JSON property `parent`
738
+ # @return [String]
739
+ attr_accessor :parent
740
+
741
+ # The REST URL for accessing the resource. An HTTP `GET` request using this URL
742
+ # returns the resource itself. Example: `https://cloudresourcemanager.googleapis.
743
+ # com/v1/projects/my-project-123` This value is unspecified for resources
744
+ # without a REST API.
745
+ # Corresponds to the JSON property `resourceUrl`
746
+ # @return [String]
747
+ attr_accessor :resource_url
748
+
749
+ # The API version. Example: `v1`
750
+ # Corresponds to the JSON property `version`
751
+ # @return [String]
752
+ attr_accessor :version
753
+
754
+ def initialize(**args)
755
+ update!(**args)
756
+ end
757
+
758
+ # Update properties of this object
759
+ def update!(**args)
760
+ @data = args[:data] if args.key?(:data)
761
+ @discovery_document_uri = args[:discovery_document_uri] if args.key?(:discovery_document_uri)
762
+ @discovery_name = args[:discovery_name] if args.key?(:discovery_name)
763
+ @location = args[:location] if args.key?(:location)
764
+ @parent = args[:parent] if args.key?(:parent)
765
+ @resource_url = args[:resource_url] if args.key?(:resource_url)
766
+ @version = args[:version] if args.key?(:version)
767
+ end
768
+ end
769
+
770
+ # Used in `policy_type` to specify how `boolean_policy` will behave at this
771
+ # resource.
772
+ class GoogleCloudOrgpolicyV1BooleanPolicy
773
+ include Google::Apis::Core::Hashable
774
+
775
+ # If `true`, then the `Policy` is enforced. If `false`, then any configuration
776
+ # is acceptable. Suppose you have a `Constraint` `constraints/compute.
777
+ # disableSerialPortAccess` with `constraint_default` set to `ALLOW`. A `Policy`
778
+ # for that `Constraint` exhibits the following behavior: - If the `Policy` at
779
+ # this resource has enforced set to `false`, serial port connection attempts
780
+ # will be allowed. - If the `Policy` at this resource has enforced set to `true`,
781
+ # serial port connection attempts will be refused. - If the `Policy` at this
782
+ # resource is `RestoreDefault`, serial port connection attempts will be allowed.
783
+ # - If no `Policy` is set at this resource or anywhere higher in the resource
784
+ # hierarchy, serial port connection attempts will be allowed. - If no `Policy`
785
+ # is set at this resource, but one exists higher in the resource hierarchy, the
786
+ # behavior is as if the`Policy` were set at this resource. The following
787
+ # examples demonstrate the different possible layerings: Example 1 (nearest `
788
+ # Constraint` wins): `organizations/foo` has a `Policy` with: `enforced: false` `
789
+ # projects/bar` has no `Policy` set. The constraint at `projects/bar` and `
790
+ # organizations/foo` will not be enforced. Example 2 (enforcement gets replaced):
791
+ # `organizations/foo` has a `Policy` with: `enforced: false` `projects/bar` has
792
+ # a `Policy` with: `enforced: true` The constraint at `organizations/foo` is not
793
+ # enforced. The constraint at `projects/bar` is enforced. Example 3 (
794
+ # RestoreDefault): `organizations/foo` has a `Policy` with: `enforced: true` `
795
+ # projects/bar` has a `Policy` with: `RestoreDefault: ``` The constraint at `
796
+ # organizations/foo` is enforced. The constraint at `projects/bar` is not
797
+ # enforced, because `constraint_default` for the `Constraint` is `ALLOW`.
798
+ # Corresponds to the JSON property `enforced`
799
+ # @return [Boolean]
800
+ attr_accessor :enforced
801
+ alias_method :enforced?, :enforced
802
+
803
+ def initialize(**args)
804
+ update!(**args)
805
+ end
806
+
807
+ # Update properties of this object
808
+ def update!(**args)
809
+ @enforced = args[:enforced] if args.key?(:enforced)
810
+ end
811
+ end
812
+
813
+ # Used in `policy_type` to specify how `list_policy` behaves at this resource. `
814
+ # ListPolicy` can define specific values and subtrees of Cloud Resource Manager
815
+ # resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed
816
+ # or denied by setting the `allowed_values` and `denied_values` fields. This is
817
+ # achieved by using the `under:` and optional `is:` prefixes. The `under:`
818
+ # prefix is used to denote resource subtree values. The `is:` prefix is used to
819
+ # denote specific values, and is required only if the value contains a ":".
820
+ # Values prefixed with "is:" are treated the same as values with no prefix.
821
+ # Ancestry subtrees must be in one of the following formats: - "projects/", e.g.
822
+ # "projects/tokyo-rain-123" - "folders/", e.g. "folders/1234" - "organizations/",
823
+ # e.g. "organizations/1234" The `supports_under` field of the associated `
824
+ # Constraint` defines whether ancestry prefixes can be used. You can set `
825
+ # allowed_values` and `denied_values` in the same `Policy` if `all_values` is `
826
+ # ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all
827
+ # values. If `all_values` is set to either `ALLOW` or `DENY`, `allowed_values`
828
+ # and `denied_values` must be unset.
829
+ class GoogleCloudOrgpolicyV1ListPolicy
830
+ include Google::Apis::Core::Hashable
831
+
832
+ # The policy all_values state.
833
+ # Corresponds to the JSON property `allValues`
834
+ # @return [String]
835
+ attr_accessor :all_values
836
+
837
+ # List of values allowed at this resource. Can only be set if `all_values` is
838
+ # set to `ALL_VALUES_UNSPECIFIED`.
839
+ # Corresponds to the JSON property `allowedValues`
840
+ # @return [Array<String>]
841
+ attr_accessor :allowed_values
842
+
843
+ # List of values denied at this resource. Can only be set if `all_values` is set
844
+ # to `ALL_VALUES_UNSPECIFIED`.
845
+ # Corresponds to the JSON property `deniedValues`
846
+ # @return [Array<String>]
847
+ attr_accessor :denied_values
848
+
849
+ # Determines the inheritance behavior for this `Policy`. By default, a `
850
+ # ListPolicy` set at a resource supersedes any `Policy` set anywhere up the
851
+ # resource hierarchy. However, if `inherit_from_parent` is set to `true`, then
852
+ # the values from the effective `Policy` of the parent resource are inherited,
853
+ # meaning the values set in this `Policy` are added to the values inherited up
854
+ # the hierarchy. Setting `Policy` hierarchies that inherit both allowed values
855
+ # and denied values isn't recommended in most circumstances to keep the
856
+ # configuration simple and understandable. However, it is possible to set a `
857
+ # Policy` with `allowed_values` set that inherits a `Policy` with `denied_values`
858
+ # set. In this case, the values that are allowed must be in `allowed_values`
859
+ # and not present in `denied_values`. For example, suppose you have a `
860
+ # Constraint` `constraints/serviceuser.services`, which has a `constraint_type`
861
+ # of `list_constraint`, and with `constraint_default` set to `ALLOW`. Suppose
862
+ # that at the Organization level, a `Policy` is applied that restricts the
863
+ # allowed API activations to ``E1`, `E2``. Then, if a `Policy` is applied to a
864
+ # project below the Organization that has `inherit_from_parent` set to `false`
865
+ # and field all_values set to DENY, then an attempt to activate any API will be
866
+ # denied. The following examples demonstrate different possible layerings for `
867
+ # projects/bar` parented by `organizations/foo`: Example 1 (no inherited values):
868
+ # `organizations/foo` has a `Policy` with values: `allowed_values: "E1"
869
+ # allowed_values:"E2"` `projects/bar` has `inherit_from_parent` `false` and
870
+ # values: `allowed_values: "E3" allowed_values: "E4"` The accepted values at `
871
+ # organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are `
872
+ # E3`, and `E4`. Example 2 (inherited values): `organizations/foo` has a `Policy`
873
+ # with values: `allowed_values: "E1" allowed_values:"E2"` `projects/bar` has a `
874
+ # Policy` with values: `value: "E3" value: "E4" inherit_from_parent: true` The
875
+ # accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `
876
+ # projects/bar` are `E1`, `E2`, `E3`, and `E4`. Example 3 (inheriting both
877
+ # allowed and denied values): `organizations/foo` has a `Policy` with values: `
878
+ # allowed_values: "E1" allowed_values: "E2"` `projects/bar` has a `Policy` with:
879
+ # `denied_values: "E1"` The accepted values at `organizations/foo` are `E1`, `E2`
880
+ # . The value accepted at `projects/bar` is `E2`. Example 4 (RestoreDefault): `
881
+ # organizations/foo` has a `Policy` with values: `allowed_values: "E1"
882
+ # allowed_values:"E2"` `projects/bar` has a `Policy` with values: `
883
+ # RestoreDefault: ``` The accepted values at `organizations/foo` are `E1`, `E2`.
884
+ # The accepted values at `projects/bar` are either all or none depending on the
885
+ # value of `constraint_default` (if `ALLOW`, all; if `DENY`, none). Example 5 (
886
+ # no policy inherits parent policy): `organizations/foo` has no `Policy` set. `
887
+ # projects/bar` has no `Policy` set. The accepted values at both levels are
888
+ # either all or none depending on the value of `constraint_default` (if `ALLOW`,
889
+ # all; if `DENY`, none). Example 6 (ListConstraint allowing all): `organizations/
890
+ # foo` has a `Policy` with values: `allowed_values: "E1" allowed_values: "E2"` `
891
+ # projects/bar` has a `Policy` with: `all: ALLOW` The accepted values at `
892
+ # organizations/foo` are `E1`, E2`. Any value is accepted at `projects/bar`.
893
+ # Example 7 (ListConstraint allowing none): `organizations/foo` has a `Policy`
894
+ # with values: `allowed_values: "E1" allowed_values: "E2"` `projects/bar` has a `
895
+ # Policy` with: `all: DENY` The accepted values at `organizations/foo` are `E1`,
896
+ # E2`. No value is accepted at `projects/bar`. Example 10 (allowed and denied
897
+ # subtrees of Resource Manager hierarchy): Given the following resource
898
+ # hierarchy O1->`F1, F2`; F1->`P1`; F2->`P2, P3`, `organizations/foo` has a `
899
+ # Policy` with values: `allowed_values: "under:organizations/O1"` `projects/bar`
900
+ # has a `Policy` with: `allowed_values: "under:projects/P3"` `denied_values: "
901
+ # under:folders/F2"` The accepted values at `organizations/foo` are `
902
+ # organizations/O1`, `folders/F1`, `folders/F2`, `projects/P1`, `projects/P2`, `
903
+ # projects/P3`. The accepted values at `projects/bar` are `organizations/O1`, `
904
+ # folders/F1`, `projects/P1`.
905
+ # Corresponds to the JSON property `inheritFromParent`
906
+ # @return [Boolean]
907
+ attr_accessor :inherit_from_parent
908
+ alias_method :inherit_from_parent?, :inherit_from_parent
909
+
910
+ # Optional. The Google Cloud Console will try to default to a configuration that
911
+ # matches the value specified in this `Policy`. If `suggested_value` is not set,
912
+ # it will inherit the value specified higher in the hierarchy, unless `
913
+ # inherit_from_parent` is `false`.
914
+ # Corresponds to the JSON property `suggestedValue`
915
+ # @return [String]
916
+ attr_accessor :suggested_value
917
+
918
+ def initialize(**args)
919
+ update!(**args)
920
+ end
921
+
922
+ # Update properties of this object
923
+ def update!(**args)
924
+ @all_values = args[:all_values] if args.key?(:all_values)
925
+ @allowed_values = args[:allowed_values] if args.key?(:allowed_values)
926
+ @denied_values = args[:denied_values] if args.key?(:denied_values)
927
+ @inherit_from_parent = args[:inherit_from_parent] if args.key?(:inherit_from_parent)
928
+ @suggested_value = args[:suggested_value] if args.key?(:suggested_value)
929
+ end
930
+ end
931
+
932
+ # Defines a Cloud Organization `Policy` which is used to specify `Constraints`
933
+ # for configurations of Cloud Platform resources.
934
+ class GoogleCloudOrgpolicyV1Policy
935
+ include Google::Apis::Core::Hashable
936
+
937
+ # Used in `policy_type` to specify how `boolean_policy` will behave at this
938
+ # resource.
939
+ # Corresponds to the JSON property `booleanPolicy`
940
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1BooleanPolicy]
941
+ attr_accessor :boolean_policy
942
+
943
+ # The name of the `Constraint` the `Policy` is configuring, for example, `
944
+ # constraints/serviceuser.services`. A [list of available constraints](/resource-
945
+ # manager/docs/organization-policy/org-policy-constraints) is available.
946
+ # Immutable after creation.
947
+ # Corresponds to the JSON property `constraint`
948
+ # @return [String]
949
+ attr_accessor :constraint
950
+
951
+ # An opaque tag indicating the current version of the `Policy`, used for
952
+ # concurrency control. When the `Policy` is returned from either a `GetPolicy`
953
+ # or a `ListOrgPolicy` request, this `etag` indicates the version of the current
954
+ # `Policy` to use when executing a read-modify-write loop. When the `Policy` is
955
+ # returned from a `GetEffectivePolicy` request, the `etag` will be unset. When
956
+ # the `Policy` is used in a `SetOrgPolicy` method, use the `etag` value that was
957
+ # returned from a `GetOrgPolicy` request as part of a read-modify-write loop for
958
+ # concurrency control. Not setting the `etag`in a `SetOrgPolicy` request will
959
+ # result in an unconditional write of the `Policy`.
960
+ # Corresponds to the JSON property `etag`
961
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
962
+ # @return [String]
963
+ attr_accessor :etag
964
+
965
+ # Used in `policy_type` to specify how `list_policy` behaves at this resource. `
966
+ # ListPolicy` can define specific values and subtrees of Cloud Resource Manager
967
+ # resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed
968
+ # or denied by setting the `allowed_values` and `denied_values` fields. This is
969
+ # achieved by using the `under:` and optional `is:` prefixes. The `under:`
970
+ # prefix is used to denote resource subtree values. The `is:` prefix is used to
971
+ # denote specific values, and is required only if the value contains a ":".
972
+ # Values prefixed with "is:" are treated the same as values with no prefix.
973
+ # Ancestry subtrees must be in one of the following formats: - "projects/", e.g.
974
+ # "projects/tokyo-rain-123" - "folders/", e.g. "folders/1234" - "organizations/",
975
+ # e.g. "organizations/1234" The `supports_under` field of the associated `
976
+ # Constraint` defines whether ancestry prefixes can be used. You can set `
977
+ # allowed_values` and `denied_values` in the same `Policy` if `all_values` is `
978
+ # ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all
979
+ # values. If `all_values` is set to either `ALLOW` or `DENY`, `allowed_values`
980
+ # and `denied_values` must be unset.
981
+ # Corresponds to the JSON property `listPolicy`
982
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1ListPolicy]
983
+ attr_accessor :list_policy
984
+
985
+ # Ignores policies set above this resource and restores the `constraint_default`
986
+ # enforcement behavior of the specific `Constraint` at this resource. Suppose
987
+ # that `constraint_default` is set to `ALLOW` for the `Constraint` `constraints/
988
+ # serviceuser.services`. Suppose that organization foo.com sets a `Policy` at
989
+ # their Organization resource node that restricts the allowed service
990
+ # activations to deny all service activations. They could then set a `Policy`
991
+ # with the `policy_type` `restore_default` on several experimental projects,
992
+ # restoring the `constraint_default` enforcement of the `Constraint` for only
993
+ # those projects, allowing those projects to have all services activated.
994
+ # Corresponds to the JSON property `restoreDefault`
995
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1RestoreDefault]
996
+ attr_accessor :restore_default
997
+
998
+ # The time stamp the `Policy` was previously updated. This is set by the server,
999
+ # not specified by the caller, and represents the last time a call to `
1000
+ # SetOrgPolicy` was made for that `Policy`. Any value set by the client will be
1001
+ # ignored.
1002
+ # Corresponds to the JSON property `updateTime`
1003
+ # @return [String]
1004
+ attr_accessor :update_time
1005
+
1006
+ # Version of the `Policy`. Default version is 0;
1007
+ # Corresponds to the JSON property `version`
1008
+ # @return [Fixnum]
1009
+ attr_accessor :version
1010
+
1011
+ def initialize(**args)
1012
+ update!(**args)
1013
+ end
1014
+
1015
+ # Update properties of this object
1016
+ def update!(**args)
1017
+ @boolean_policy = args[:boolean_policy] if args.key?(:boolean_policy)
1018
+ @constraint = args[:constraint] if args.key?(:constraint)
1019
+ @etag = args[:etag] if args.key?(:etag)
1020
+ @list_policy = args[:list_policy] if args.key?(:list_policy)
1021
+ @restore_default = args[:restore_default] if args.key?(:restore_default)
1022
+ @update_time = args[:update_time] if args.key?(:update_time)
1023
+ @version = args[:version] if args.key?(:version)
1024
+ end
1025
+ end
1026
+
1027
+ # Ignores policies set above this resource and restores the `constraint_default`
1028
+ # enforcement behavior of the specific `Constraint` at this resource. Suppose
1029
+ # that `constraint_default` is set to `ALLOW` for the `Constraint` `constraints/
1030
+ # serviceuser.services`. Suppose that organization foo.com sets a `Policy` at
1031
+ # their Organization resource node that restricts the allowed service
1032
+ # activations to deny all service activations. They could then set a `Policy`
1033
+ # with the `policy_type` `restore_default` on several experimental projects,
1034
+ # restoring the `constraint_default` enforcement of the `Constraint` for only
1035
+ # those projects, allowing those projects to have all services activated.
1036
+ class GoogleCloudOrgpolicyV1RestoreDefault
1037
+ include Google::Apis::Core::Hashable
1038
+
1039
+ def initialize(**args)
1040
+ update!(**args)
1041
+ end
1042
+
1043
+ # Update properties of this object
1044
+ def update!(**args)
1045
+ end
1046
+ end
1047
+
1048
+ # An `AccessLevel` is a label that can be applied to requests to Google Cloud
1049
+ # services, along with a list of requirements necessary for the label to be
1050
+ # applied.
1051
+ class GoogleIdentityAccesscontextmanagerV1AccessLevel
1052
+ include Google::Apis::Core::Hashable
1053
+
1054
+ # `BasicLevel` is an `AccessLevel` using a set of recommended features.
1055
+ # Corresponds to the JSON property `basic`
1056
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1BasicLevel]
1057
+ attr_accessor :basic
1058
+
1059
+ # `CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language
1060
+ # to represent the necessary conditions for the level to apply to a request. See
1061
+ # CEL spec at: https://github.com/google/cel-spec
1062
+ # Corresponds to the JSON property `custom`
1063
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1CustomLevel]
1064
+ attr_accessor :custom
1065
+
1066
+ # Description of the `AccessLevel` and its use. Does not affect behavior.
1067
+ # Corresponds to the JSON property `description`
1068
+ # @return [String]
1069
+ attr_accessor :description
1070
+
1071
+ # Required. Resource name for the Access Level. The `short_name` component must
1072
+ # begin with a letter and only include alphanumeric and '_'. Format: `
1073
+ # accessPolicies/`policy_id`/accessLevels/`short_name``. The maximum length of
1074
+ # the `short_name` component is 50 characters.
1075
+ # Corresponds to the JSON property `name`
1076
+ # @return [String]
1077
+ attr_accessor :name
1078
+
1079
+ # Human readable title. Must be unique within the Policy.
1080
+ # Corresponds to the JSON property `title`
1081
+ # @return [String]
1082
+ attr_accessor :title
1083
+
1084
+ def initialize(**args)
1085
+ update!(**args)
1086
+ end
1087
+
1088
+ # Update properties of this object
1089
+ def update!(**args)
1090
+ @basic = args[:basic] if args.key?(:basic)
1091
+ @custom = args[:custom] if args.key?(:custom)
1092
+ @description = args[:description] if args.key?(:description)
1093
+ @name = args[:name] if args.key?(:name)
1094
+ @title = args[:title] if args.key?(:title)
1095
+ end
1096
+ end
1097
+
1098
+ # `AccessPolicy` is a container for `AccessLevels` (which define the necessary
1099
+ # attributes to use Google Cloud services) and `ServicePerimeters` (which define
1100
+ # regions of services able to freely pass data within a perimeter). An access
1101
+ # policy is globally visible within an organization, and the restrictions it
1102
+ # specifies apply to all projects within an organization.
1103
+ class GoogleIdentityAccesscontextmanagerV1AccessPolicy
1104
+ include Google::Apis::Core::Hashable
1105
+
1106
+ # Output only. An opaque identifier for the current version of the `AccessPolicy`
1107
+ # . This will always be a strongly validated etag, meaning that two Access
1108
+ # Polices will be identical if and only if their etags are identical. Clients
1109
+ # should not expect this to be in any specific format.
1110
+ # Corresponds to the JSON property `etag`
1111
+ # @return [String]
1112
+ attr_accessor :etag
1113
+
1114
+ # Output only. Resource name of the `AccessPolicy`. Format: `accessPolicies/`
1115
+ # policy_id``
1116
+ # Corresponds to the JSON property `name`
1117
+ # @return [String]
1118
+ attr_accessor :name
1119
+
1120
+ # Required. The parent of this `AccessPolicy` in the Cloud Resource Hierarchy.
1121
+ # Currently immutable once created. Format: `organizations/`organization_id``
1122
+ # Corresponds to the JSON property `parent`
1123
+ # @return [String]
1124
+ attr_accessor :parent
1125
+
1126
+ # Required. Human readable title. Does not affect behavior.
1127
+ # Corresponds to the JSON property `title`
1128
+ # @return [String]
1129
+ attr_accessor :title
1130
+
1131
+ def initialize(**args)
1132
+ update!(**args)
1133
+ end
1134
+
1135
+ # Update properties of this object
1136
+ def update!(**args)
1137
+ @etag = args[:etag] if args.key?(:etag)
1138
+ @name = args[:name] if args.key?(:name)
1139
+ @parent = args[:parent] if args.key?(:parent)
1140
+ @title = args[:title] if args.key?(:title)
1141
+ end
1142
+ end
1143
+
1144
+ # Identification for an API Operation.
1145
+ class GoogleIdentityAccesscontextmanagerV1ApiOperation
1146
+ include Google::Apis::Core::Hashable
1147
+
1148
+ # API methods or permissions to allow. Method or permission must belong to the
1149
+ # service specified by `service_name` field. A single MethodSelector entry with `
1150
+ # *` specified for the `method` field will allow all methods AND permissions for
1151
+ # the service specified in `service_name`.
1152
+ # Corresponds to the JSON property `methodSelectors`
1153
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1MethodSelector>]
1154
+ attr_accessor :method_selectors
1155
+
1156
+ # The name of the API whose methods or permissions the IngressPolicy or
1157
+ # EgressPolicy want to allow. A single ApiOperation with `service_name` field
1158
+ # set to `*` will allow all methods AND permissions for all services.
1159
+ # Corresponds to the JSON property `serviceName`
1160
+ # @return [String]
1161
+ attr_accessor :service_name
1162
+
1163
+ def initialize(**args)
1164
+ update!(**args)
1165
+ end
1166
+
1167
+ # Update properties of this object
1168
+ def update!(**args)
1169
+ @method_selectors = args[:method_selectors] if args.key?(:method_selectors)
1170
+ @service_name = args[:service_name] if args.key?(:service_name)
1171
+ end
1172
+ end
1173
+
1174
+ # `BasicLevel` is an `AccessLevel` using a set of recommended features.
1175
+ class GoogleIdentityAccesscontextmanagerV1BasicLevel
1176
+ include Google::Apis::Core::Hashable
1177
+
1178
+ # How the `conditions` list should be combined to determine if a request is
1179
+ # granted this `AccessLevel`. If AND is used, each `Condition` in `conditions`
1180
+ # must be satisfied for the `AccessLevel` to be applied. If OR is used, at least
1181
+ # one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be
1182
+ # applied. Default behavior is AND.
1183
+ # Corresponds to the JSON property `combiningFunction`
1184
+ # @return [String]
1185
+ attr_accessor :combining_function
1186
+
1187
+ # Required. A list of requirements for the `AccessLevel` to be granted.
1188
+ # Corresponds to the JSON property `conditions`
1189
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1Condition>]
1190
+ attr_accessor :conditions
1191
+
1192
+ def initialize(**args)
1193
+ update!(**args)
1194
+ end
1195
+
1196
+ # Update properties of this object
1197
+ def update!(**args)
1198
+ @combining_function = args[:combining_function] if args.key?(:combining_function)
1199
+ @conditions = args[:conditions] if args.key?(:conditions)
1200
+ end
1201
+ end
1202
+
1203
+ # A condition necessary for an `AccessLevel` to be granted. The Condition is an
1204
+ # AND over its fields. So a Condition is true if: 1) the request IP is from one
1205
+ # of the listed subnetworks AND 2) the originating device complies with the
1206
+ # listed device policy AND 3) all listed access levels are granted AND 4) the
1207
+ # request was sent at a time allowed by the DateTimeRestriction.
1208
+ class GoogleIdentityAccesscontextmanagerV1Condition
1209
+ include Google::Apis::Core::Hashable
1210
+
1211
+ # `DevicePolicy` specifies device specific restrictions necessary to acquire a
1212
+ # given access level. A `DevicePolicy` specifies requirements for requests from
1213
+ # devices to be granted access levels, it does not do any enforcement on the
1214
+ # device. `DevicePolicy` acts as an AND over all specified fields, and each
1215
+ # repeated field is an OR over its elements. Any unset fields are ignored. For
1216
+ # example, if the proto is ` os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX,
1217
+ # encryption_status: ENCRYPTED`, then the DevicePolicy will be true for requests
1218
+ # originating from encrypted Linux desktops and encrypted Windows desktops.
1219
+ # Corresponds to the JSON property `devicePolicy`
1220
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1DevicePolicy]
1221
+ attr_accessor :device_policy
1222
+
1223
+ # CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for a
1224
+ # CIDR IP address block, the specified IP address portion must be properly
1225
+ # truncated (i.e. all the host bits must be zero) or the input is considered
1226
+ # malformed. For example, "192.0.2.0/24" is accepted but "192.0.2.1/24" is not.
1227
+ # Similarly, for IPv6, "2001:db8::/32" is accepted whereas "2001:db8::1/32" is
1228
+ # not. The originating IP of a request must be in one of the listed subnets in
1229
+ # order for this Condition to be true. If empty, all IP addresses are allowed.
1230
+ # Corresponds to the JSON property `ipSubnetworks`
1231
+ # @return [Array<String>]
1232
+ attr_accessor :ip_subnetworks
1233
+
1234
+ # The request must be made by one of the provided user or service accounts.
1235
+ # Groups are not supported. Syntax: `user:`emailid`` `serviceAccount:`emailid``
1236
+ # If not specified, a request may come from any user.
1237
+ # Corresponds to the JSON property `members`
1238
+ # @return [Array<String>]
1239
+ attr_accessor :members
1240
+
1241
+ # Whether to negate the Condition. If true, the Condition becomes a NAND over
1242
+ # its non-empty fields, each field must be false for the Condition overall to be
1243
+ # satisfied. Defaults to false.
1244
+ # Corresponds to the JSON property `negate`
1245
+ # @return [Boolean]
1246
+ attr_accessor :negate
1247
+ alias_method :negate?, :negate
1248
+
1249
+ # The request must originate from one of the provided countries/regions. Must be
1250
+ # valid ISO 3166-1 alpha-2 codes.
1251
+ # Corresponds to the JSON property `regions`
1252
+ # @return [Array<String>]
1253
+ attr_accessor :regions
1254
+
1255
+ # A list of other access levels defined in the same `Policy`, referenced by
1256
+ # resource name. Referencing an `AccessLevel` which does not exist is an error.
1257
+ # All access levels listed must be granted for the Condition to be true. Example:
1258
+ # "`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME"`
1259
+ # Corresponds to the JSON property `requiredAccessLevels`
1260
+ # @return [Array<String>]
1261
+ attr_accessor :required_access_levels
1262
+
1263
+ def initialize(**args)
1264
+ update!(**args)
1265
+ end
1266
+
1267
+ # Update properties of this object
1268
+ def update!(**args)
1269
+ @device_policy = args[:device_policy] if args.key?(:device_policy)
1270
+ @ip_subnetworks = args[:ip_subnetworks] if args.key?(:ip_subnetworks)
1271
+ @members = args[:members] if args.key?(:members)
1272
+ @negate = args[:negate] if args.key?(:negate)
1273
+ @regions = args[:regions] if args.key?(:regions)
1274
+ @required_access_levels = args[:required_access_levels] if args.key?(:required_access_levels)
1275
+ end
1276
+ end
1277
+
1278
+ # `CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language
1279
+ # to represent the necessary conditions for the level to apply to a request. See
1280
+ # CEL spec at: https://github.com/google/cel-spec
1281
+ class GoogleIdentityAccesscontextmanagerV1CustomLevel
1282
+ include Google::Apis::Core::Hashable
1283
+
1284
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
1285
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
1286
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
1287
+ # "Summary size limit" description: "Determines if a summary is less than 100
1288
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
1289
+ # Requestor is owner" description: "Determines if requestor is the document
1290
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
1291
+ # Logic): title: "Public documents" description: "Determine whether the document
1292
+ # should be publicly visible" expression: "document.type != 'private' &&
1293
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
1294
+ # string" description: "Create a notification string with a timestamp."
1295
+ # expression: "'New message received at ' + string(document.create_time)" The
1296
+ # exact variables and functions that may be referenced within an expression are
1297
+ # determined by the service that evaluates it. See the service documentation for
1298
+ # additional information.
1299
+ # Corresponds to the JSON property `expr`
1300
+ # @return [Google::Apis::CloudassetV1p7beta1::Expr]
1301
+ attr_accessor :expr
1302
+
1303
+ def initialize(**args)
1304
+ update!(**args)
1305
+ end
1306
+
1307
+ # Update properties of this object
1308
+ def update!(**args)
1309
+ @expr = args[:expr] if args.key?(:expr)
1310
+ end
1311
+ end
1312
+
1313
+ # `DevicePolicy` specifies device specific restrictions necessary to acquire a
1314
+ # given access level. A `DevicePolicy` specifies requirements for requests from
1315
+ # devices to be granted access levels, it does not do any enforcement on the
1316
+ # device. `DevicePolicy` acts as an AND over all specified fields, and each
1317
+ # repeated field is an OR over its elements. Any unset fields are ignored. For
1318
+ # example, if the proto is ` os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX,
1319
+ # encryption_status: ENCRYPTED`, then the DevicePolicy will be true for requests
1320
+ # originating from encrypted Linux desktops and encrypted Windows desktops.
1321
+ class GoogleIdentityAccesscontextmanagerV1DevicePolicy
1322
+ include Google::Apis::Core::Hashable
1323
+
1324
+ # Allowed device management levels, an empty list allows all management levels.
1325
+ # Corresponds to the JSON property `allowedDeviceManagementLevels`
1326
+ # @return [Array<String>]
1327
+ attr_accessor :allowed_device_management_levels
1328
+
1329
+ # Allowed encryptions statuses, an empty list allows all statuses.
1330
+ # Corresponds to the JSON property `allowedEncryptionStatuses`
1331
+ # @return [Array<String>]
1332
+ attr_accessor :allowed_encryption_statuses
1333
+
1334
+ # Allowed OS versions, an empty list allows all types and all versions.
1335
+ # Corresponds to the JSON property `osConstraints`
1336
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1OsConstraint>]
1337
+ attr_accessor :os_constraints
1338
+
1339
+ # Whether the device needs to be approved by the customer admin.
1340
+ # Corresponds to the JSON property `requireAdminApproval`
1341
+ # @return [Boolean]
1342
+ attr_accessor :require_admin_approval
1343
+ alias_method :require_admin_approval?, :require_admin_approval
1344
+
1345
+ # Whether the device needs to be corp owned.
1346
+ # Corresponds to the JSON property `requireCorpOwned`
1347
+ # @return [Boolean]
1348
+ attr_accessor :require_corp_owned
1349
+ alias_method :require_corp_owned?, :require_corp_owned
1350
+
1351
+ # Whether or not screenlock is required for the DevicePolicy to be true.
1352
+ # Defaults to `false`.
1353
+ # Corresponds to the JSON property `requireScreenlock`
1354
+ # @return [Boolean]
1355
+ attr_accessor :require_screenlock
1356
+ alias_method :require_screenlock?, :require_screenlock
1357
+
1358
+ def initialize(**args)
1359
+ update!(**args)
1360
+ end
1361
+
1362
+ # Update properties of this object
1363
+ def update!(**args)
1364
+ @allowed_device_management_levels = args[:allowed_device_management_levels] if args.key?(:allowed_device_management_levels)
1365
+ @allowed_encryption_statuses = args[:allowed_encryption_statuses] if args.key?(:allowed_encryption_statuses)
1366
+ @os_constraints = args[:os_constraints] if args.key?(:os_constraints)
1367
+ @require_admin_approval = args[:require_admin_approval] if args.key?(:require_admin_approval)
1368
+ @require_corp_owned = args[:require_corp_owned] if args.key?(:require_corp_owned)
1369
+ @require_screenlock = args[:require_screenlock] if args.key?(:require_screenlock)
1370
+ end
1371
+ end
1372
+
1373
+ # Defines the conditions under which an EgressPolicy matches a request.
1374
+ # Conditions based on information about the source of the request. Note that if
1375
+ # the destination of the request is also protected by a ServicePerimeter, then
1376
+ # that ServicePerimeter must have an IngressPolicy which allows access in order
1377
+ # for this request to succeed.
1378
+ class GoogleIdentityAccesscontextmanagerV1EgressFrom
1379
+ include Google::Apis::Core::Hashable
1380
+
1381
+ # A list of identities that are allowed access through this [EgressPolicy].
1382
+ # Should be in the format of email address. The email address should represent
1383
+ # individual user or service account only.
1384
+ # Corresponds to the JSON property `identities`
1385
+ # @return [Array<String>]
1386
+ attr_accessor :identities
1387
+
1388
+ # Specifies the type of identities that are allowed access to outside the
1389
+ # perimeter. If left unspecified, then members of `identities` field will be
1390
+ # allowed access.
1391
+ # Corresponds to the JSON property `identityType`
1392
+ # @return [String]
1393
+ attr_accessor :identity_type
1394
+
1395
+ def initialize(**args)
1396
+ update!(**args)
1397
+ end
1398
+
1399
+ # Update properties of this object
1400
+ def update!(**args)
1401
+ @identities = args[:identities] if args.key?(:identities)
1402
+ @identity_type = args[:identity_type] if args.key?(:identity_type)
1403
+ end
1404
+ end
1405
+
1406
+ # Policy for egress from perimeter. EgressPolicies match requests based on `
1407
+ # egress_from` and `egress_to` stanzas. For an EgressPolicy to match, both `
1408
+ # egress_from` and `egress_to` stanzas must be matched. If an EgressPolicy
1409
+ # matches a request, the request is allowed to span the ServicePerimeter
1410
+ # boundary. For example, an EgressPolicy can be used to allow VMs on networks
1411
+ # within the ServicePerimeter to access a defined set of projects outside the
1412
+ # perimeter in certain contexts (e.g. to read data from a Cloud Storage bucket
1413
+ # or query against a BigQuery dataset). EgressPolicies are concerned with the *
1414
+ # resources* that a request relates as well as the API services and API actions
1415
+ # being used. They do not related to the direction of data movement. More
1416
+ # detailed documentation for this concept can be found in the descriptions of
1417
+ # EgressFrom and EgressTo.
1418
+ class GoogleIdentityAccesscontextmanagerV1EgressPolicy
1419
+ include Google::Apis::Core::Hashable
1420
+
1421
+ # Defines the conditions under which an EgressPolicy matches a request.
1422
+ # Conditions based on information about the source of the request. Note that if
1423
+ # the destination of the request is also protected by a ServicePerimeter, then
1424
+ # that ServicePerimeter must have an IngressPolicy which allows access in order
1425
+ # for this request to succeed.
1426
+ # Corresponds to the JSON property `egressFrom`
1427
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1EgressFrom]
1428
+ attr_accessor :egress_from
1429
+
1430
+ # Defines the conditions under which an EgressPolicy matches a request.
1431
+ # Conditions are based on information about the ApiOperation intended to be
1432
+ # performed on the `resources` specified. Note that if the destination of the
1433
+ # request is also protected by a ServicePerimeter, then that ServicePerimeter
1434
+ # must have an IngressPolicy which allows access in order for this request to
1435
+ # succeed. The request must match `operations` AND `resources` fields in order
1436
+ # to be allowed egress out of the perimeter.
1437
+ # Corresponds to the JSON property `egressTo`
1438
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1EgressTo]
1439
+ attr_accessor :egress_to
1440
+
1441
+ def initialize(**args)
1442
+ update!(**args)
1443
+ end
1444
+
1445
+ # Update properties of this object
1446
+ def update!(**args)
1447
+ @egress_from = args[:egress_from] if args.key?(:egress_from)
1448
+ @egress_to = args[:egress_to] if args.key?(:egress_to)
1449
+ end
1450
+ end
1451
+
1452
+ # Defines the conditions under which an EgressPolicy matches a request.
1453
+ # Conditions are based on information about the ApiOperation intended to be
1454
+ # performed on the `resources` specified. Note that if the destination of the
1455
+ # request is also protected by a ServicePerimeter, then that ServicePerimeter
1456
+ # must have an IngressPolicy which allows access in order for this request to
1457
+ # succeed. The request must match `operations` AND `resources` fields in order
1458
+ # to be allowed egress out of the perimeter.
1459
+ class GoogleIdentityAccesscontextmanagerV1EgressTo
1460
+ include Google::Apis::Core::Hashable
1461
+
1462
+ # A list of ApiOperations allowed to be performed by the sources specified in
1463
+ # the corresponding EgressFrom. A request matches if it uses an operation/
1464
+ # service in this list.
1465
+ # Corresponds to the JSON property `operations`
1466
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ApiOperation>]
1467
+ attr_accessor :operations
1468
+
1469
+ # A list of resources, currently only projects in the form `projects/`, that are
1470
+ # allowed to be accessed by sources defined in the corresponding EgressFrom. A
1471
+ # request matches if it contains a resource in this list. If `*` is specified
1472
+ # for `resources`, then this EgressTo rule will authorize access to all
1473
+ # resources outside the perimeter.
1474
+ # Corresponds to the JSON property `resources`
1475
+ # @return [Array<String>]
1476
+ attr_accessor :resources
1477
+
1478
+ def initialize(**args)
1479
+ update!(**args)
1480
+ end
1481
+
1482
+ # Update properties of this object
1483
+ def update!(**args)
1484
+ @operations = args[:operations] if args.key?(:operations)
1485
+ @resources = args[:resources] if args.key?(:resources)
1486
+ end
1487
+ end
1488
+
1489
+ # Defines the conditions under which an IngressPolicy matches a request.
1490
+ # Conditions are based on information about the source of the request. The
1491
+ # request must satisfy what is defined in `sources` AND identity related fields
1492
+ # in order to match.
1493
+ class GoogleIdentityAccesscontextmanagerV1IngressFrom
1494
+ include Google::Apis::Core::Hashable
1495
+
1496
+ # A list of identities that are allowed access through this ingress policy.
1497
+ # Should be in the format of email address. The email address should represent
1498
+ # individual user or service account only.
1499
+ # Corresponds to the JSON property `identities`
1500
+ # @return [Array<String>]
1501
+ attr_accessor :identities
1502
+
1503
+ # Specifies the type of identities that are allowed access from outside the
1504
+ # perimeter. If left unspecified, then members of `identities` field will be
1505
+ # allowed access.
1506
+ # Corresponds to the JSON property `identityType`
1507
+ # @return [String]
1508
+ attr_accessor :identity_type
1509
+
1510
+ # Sources that this IngressPolicy authorizes access from.
1511
+ # Corresponds to the JSON property `sources`
1512
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressSource>]
1513
+ attr_accessor :sources
1514
+
1515
+ def initialize(**args)
1516
+ update!(**args)
1517
+ end
1518
+
1519
+ # Update properties of this object
1520
+ def update!(**args)
1521
+ @identities = args[:identities] if args.key?(:identities)
1522
+ @identity_type = args[:identity_type] if args.key?(:identity_type)
1523
+ @sources = args[:sources] if args.key?(:sources)
1524
+ end
1525
+ end
1526
+
1527
+ # Policy for ingress into ServicePerimeter. IngressPolicies match requests based
1528
+ # on `ingress_from` and `ingress_to` stanzas. For an ingress policy to match,
1529
+ # both the `ingress_from` and `ingress_to` stanzas must be matched. If an
1530
+ # IngressPolicy matches a request, the request is allowed through the perimeter
1531
+ # boundary from outside the perimeter. For example, access from the internet can
1532
+ # be allowed either based on an AccessLevel or, for traffic hosted on Google
1533
+ # Cloud, the project of the source network. For access from private networks,
1534
+ # using the project of the hosting network is required. Individual ingress
1535
+ # policies can be limited by restricting which services and/or actions they
1536
+ # match using the `ingress_to` field.
1537
+ class GoogleIdentityAccesscontextmanagerV1IngressPolicy
1538
+ include Google::Apis::Core::Hashable
1539
+
1540
+ # Defines the conditions under which an IngressPolicy matches a request.
1541
+ # Conditions are based on information about the source of the request. The
1542
+ # request must satisfy what is defined in `sources` AND identity related fields
1543
+ # in order to match.
1544
+ # Corresponds to the JSON property `ingressFrom`
1545
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressFrom]
1546
+ attr_accessor :ingress_from
1547
+
1548
+ # Defines the conditions under which an IngressPolicy matches a request.
1549
+ # Conditions are based on information about the ApiOperation intended to be
1550
+ # performed on the target resource of the request. The request must satisfy what
1551
+ # is defined in `operations` AND `resources` in order to match.
1552
+ # Corresponds to the JSON property `ingressTo`
1553
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressTo]
1554
+ attr_accessor :ingress_to
1555
+
1556
+ def initialize(**args)
1557
+ update!(**args)
1558
+ end
1559
+
1560
+ # Update properties of this object
1561
+ def update!(**args)
1562
+ @ingress_from = args[:ingress_from] if args.key?(:ingress_from)
1563
+ @ingress_to = args[:ingress_to] if args.key?(:ingress_to)
1564
+ end
1565
+ end
1566
+
1567
+ # The source that IngressPolicy authorizes access from.
1568
+ class GoogleIdentityAccesscontextmanagerV1IngressSource
1569
+ include Google::Apis::Core::Hashable
1570
+
1571
+ # An AccessLevel resource name that allow resources within the ServicePerimeters
1572
+ # to be accessed from the internet. AccessLevels listed must be in the same
1573
+ # policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will
1574
+ # cause an error. If no AccessLevel names are listed, resources within the
1575
+ # perimeter can only be accessed via Google Cloud calls with request origins
1576
+ # within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`
1577
+ # . If a single `*` is specified for `access_level`, then all IngressSources
1578
+ # will be allowed.
1579
+ # Corresponds to the JSON property `accessLevel`
1580
+ # @return [String]
1581
+ attr_accessor :access_level
1582
+
1583
+ # A Google Cloud resource that is allowed to ingress the perimeter. Requests
1584
+ # from these resources will be allowed to access perimeter data. Currently only
1585
+ # projects are allowed. Format: `projects/`project_number`` The project may be
1586
+ # in any Google Cloud organization, not just the organization that the perimeter
1587
+ # is defined in. `*` is not allowed, the case of allowing all Google Cloud
1588
+ # resources only is not supported.
1589
+ # Corresponds to the JSON property `resource`
1590
+ # @return [String]
1591
+ attr_accessor :resource
1592
+
1593
+ def initialize(**args)
1594
+ update!(**args)
1595
+ end
1596
+
1597
+ # Update properties of this object
1598
+ def update!(**args)
1599
+ @access_level = args[:access_level] if args.key?(:access_level)
1600
+ @resource = args[:resource] if args.key?(:resource)
1601
+ end
1602
+ end
1603
+
1604
+ # Defines the conditions under which an IngressPolicy matches a request.
1605
+ # Conditions are based on information about the ApiOperation intended to be
1606
+ # performed on the target resource of the request. The request must satisfy what
1607
+ # is defined in `operations` AND `resources` in order to match.
1608
+ class GoogleIdentityAccesscontextmanagerV1IngressTo
1609
+ include Google::Apis::Core::Hashable
1610
+
1611
+ # A list of ApiOperations allowed to be performed by the sources specified in
1612
+ # corresponding IngressFrom in this ServicePerimeter.
1613
+ # Corresponds to the JSON property `operations`
1614
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ApiOperation>]
1615
+ attr_accessor :operations
1616
+
1617
+ # A list of resources, currently only projects in the form `projects/`,
1618
+ # protected by this ServicePerimeter that are allowed to be accessed by sources
1619
+ # defined in the corresponding IngressFrom. If a single `*` is specified, then
1620
+ # access to all resources inside the perimeter are allowed.
1621
+ # Corresponds to the JSON property `resources`
1622
+ # @return [Array<String>]
1623
+ attr_accessor :resources
1624
+
1625
+ def initialize(**args)
1626
+ update!(**args)
1627
+ end
1628
+
1629
+ # Update properties of this object
1630
+ def update!(**args)
1631
+ @operations = args[:operations] if args.key?(:operations)
1632
+ @resources = args[:resources] if args.key?(:resources)
1633
+ end
1634
+ end
1635
+
1636
+ # An allowed method or permission of a service specified in ApiOperation.
1637
+ class GoogleIdentityAccesscontextmanagerV1MethodSelector
1638
+ include Google::Apis::Core::Hashable
1639
+
1640
+ # Value for `method` should be a valid method name for the corresponding `
1641
+ # service_name` in ApiOperation. If `*` used as value for `method`, then ALL
1642
+ # methods and permissions are allowed.
1643
+ # Corresponds to the JSON property `method`
1644
+ # @return [String]
1645
+ attr_accessor :method_prop
1646
+
1647
+ # Value for `permission` should be a valid Cloud IAM permission for the
1648
+ # corresponding `service_name` in ApiOperation.
1649
+ # Corresponds to the JSON property `permission`
1650
+ # @return [String]
1651
+ attr_accessor :permission
1652
+
1653
+ def initialize(**args)
1654
+ update!(**args)
1655
+ end
1656
+
1657
+ # Update properties of this object
1658
+ def update!(**args)
1659
+ @method_prop = args[:method_prop] if args.key?(:method_prop)
1660
+ @permission = args[:permission] if args.key?(:permission)
1661
+ end
1662
+ end
1663
+
1664
+ # A restriction on the OS type and version of devices making requests.
1665
+ class GoogleIdentityAccesscontextmanagerV1OsConstraint
1666
+ include Google::Apis::Core::Hashable
1667
+
1668
+ # The minimum allowed OS version. If not set, any version of this OS satisfies
1669
+ # the constraint. Format: `"major.minor.patch"`. Examples: `"10.5.301"`, `"9.2.1"
1670
+ # `.
1671
+ # Corresponds to the JSON property `minimumVersion`
1672
+ # @return [String]
1673
+ attr_accessor :minimum_version
1674
+
1675
+ # Required. The allowed OS type.
1676
+ # Corresponds to the JSON property `osType`
1677
+ # @return [String]
1678
+ attr_accessor :os_type
1679
+
1680
+ # Only allows requests from devices with a verified Chrome OS. Verifications
1681
+ # includes requirements that the device is enterprise-managed, conformant to
1682
+ # domain policies, and the caller has permission to call the API targeted by the
1683
+ # request.
1684
+ # Corresponds to the JSON property `requireVerifiedChromeOs`
1685
+ # @return [Boolean]
1686
+ attr_accessor :require_verified_chrome_os
1687
+ alias_method :require_verified_chrome_os?, :require_verified_chrome_os
1688
+
1689
+ def initialize(**args)
1690
+ update!(**args)
1691
+ end
1692
+
1693
+ # Update properties of this object
1694
+ def update!(**args)
1695
+ @minimum_version = args[:minimum_version] if args.key?(:minimum_version)
1696
+ @os_type = args[:os_type] if args.key?(:os_type)
1697
+ @require_verified_chrome_os = args[:require_verified_chrome_os] if args.key?(:require_verified_chrome_os)
1698
+ end
1699
+ end
1700
+
1701
+ # `ServicePerimeter` describes a set of Google Cloud resources which can freely
1702
+ # import and export data amongst themselves, but not export outside of the `
1703
+ # ServicePerimeter`. If a request with a source within this `ServicePerimeter`
1704
+ # has a target outside of the `ServicePerimeter`, the request will be blocked.
1705
+ # Otherwise the request is allowed. There are two types of Service Perimeter -
1706
+ # Regular and Bridge. Regular Service Perimeters cannot overlap, a single Google
1707
+ # Cloud project can only belong to a single regular Service Perimeter. Service
1708
+ # Perimeter Bridges can contain only Google Cloud projects as members, a single
1709
+ # Google Cloud project may belong to multiple Service Perimeter Bridges.
1710
+ class GoogleIdentityAccesscontextmanagerV1ServicePerimeter
1711
+ include Google::Apis::Core::Hashable
1712
+
1713
+ # Description of the `ServicePerimeter` and its use. Does not affect behavior.
1714
+ # Corresponds to the JSON property `description`
1715
+ # @return [String]
1716
+ attr_accessor :description
1717
+
1718
+ # Required. Resource name for the ServicePerimeter. The `short_name` component
1719
+ # must begin with a letter and only include alphanumeric and '_'. Format: `
1720
+ # accessPolicies/`policy_id`/servicePerimeters/`short_name``
1721
+ # Corresponds to the JSON property `name`
1722
+ # @return [String]
1723
+ attr_accessor :name
1724
+
1725
+ # Perimeter type indicator. A single project is allowed to be a member of single
1726
+ # regular perimeter, but multiple service perimeter bridges. A project cannot be
1727
+ # a included in a perimeter bridge without being included in regular perimeter.
1728
+ # For perimeter bridges, the restricted service list as well as access level
1729
+ # lists must be empty.
1730
+ # Corresponds to the JSON property `perimeterType`
1731
+ # @return [String]
1732
+ attr_accessor :perimeter_type
1733
+
1734
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1735
+ # describe specific Service Perimeter configuration.
1736
+ # Corresponds to the JSON property `spec`
1737
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig]
1738
+ attr_accessor :spec
1739
+
1740
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1741
+ # describe specific Service Perimeter configuration.
1742
+ # Corresponds to the JSON property `status`
1743
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig]
1744
+ attr_accessor :status
1745
+
1746
+ # Human readable title. Must be unique within the Policy.
1747
+ # Corresponds to the JSON property `title`
1748
+ # @return [String]
1749
+ attr_accessor :title
1750
+
1751
+ # Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists
1752
+ # for all Service Perimeters, and that spec is identical to the status for those
1753
+ # Service Perimeters. When this flag is set, it inhibits the generation of the
1754
+ # implicit spec, thereby allowing the user to explicitly provide a configuration
1755
+ # ("spec") to use in a dry-run version of the Service Perimeter. This allows the
1756
+ # user to test changes to the enforced config ("status") without actually
1757
+ # enforcing them. This testing is done through analyzing the differences between
1758
+ # currently enforced and suggested restrictions. use_explicit_dry_run_spec must
1759
+ # bet set to True if any of the fields in the spec are set to non-default values.
1760
+ # Corresponds to the JSON property `useExplicitDryRunSpec`
1761
+ # @return [Boolean]
1762
+ attr_accessor :use_explicit_dry_run_spec
1763
+ alias_method :use_explicit_dry_run_spec?, :use_explicit_dry_run_spec
1764
+
1765
+ def initialize(**args)
1766
+ update!(**args)
1767
+ end
1768
+
1769
+ # Update properties of this object
1770
+ def update!(**args)
1771
+ @description = args[:description] if args.key?(:description)
1772
+ @name = args[:name] if args.key?(:name)
1773
+ @perimeter_type = args[:perimeter_type] if args.key?(:perimeter_type)
1774
+ @spec = args[:spec] if args.key?(:spec)
1775
+ @status = args[:status] if args.key?(:status)
1776
+ @title = args[:title] if args.key?(:title)
1777
+ @use_explicit_dry_run_spec = args[:use_explicit_dry_run_spec] if args.key?(:use_explicit_dry_run_spec)
1778
+ end
1779
+ end
1780
+
1781
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1782
+ # describe specific Service Perimeter configuration.
1783
+ class GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig
1784
+ include Google::Apis::Core::Hashable
1785
+
1786
+ # A list of `AccessLevel` resource names that allow resources within the `
1787
+ # ServicePerimeter` to be accessed from the internet. `AccessLevels` listed must
1788
+ # be in the same policy as this `ServicePerimeter`. Referencing a nonexistent `
1789
+ # AccessLevel` is a syntax error. If no `AccessLevel` names are listed,
1790
+ # resources within the perimeter can only be accessed via Google Cloud calls
1791
+ # with request origins within the perimeter. Example: `"accessPolicies/MY_POLICY/
1792
+ # accessLevels/MY_LEVEL"`. For Service Perimeter Bridge, must be empty.
1793
+ # Corresponds to the JSON property `accessLevels`
1794
+ # @return [Array<String>]
1795
+ attr_accessor :access_levels
1796
+
1797
+ # List of EgressPolicies to apply to the perimeter. A perimeter may have
1798
+ # multiple EgressPolicies, each of which is evaluated separately. Access is
1799
+ # granted if any EgressPolicy grants it. Must be empty for a perimeter bridge.
1800
+ # Corresponds to the JSON property `egressPolicies`
1801
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1EgressPolicy>]
1802
+ attr_accessor :egress_policies
1803
+
1804
+ # List of IngressPolicies to apply to the perimeter. A perimeter may have
1805
+ # multiple IngressPolicies, each of which is evaluated separately. Access is
1806
+ # granted if any Ingress Policy grants it. Must be empty for a perimeter bridge.
1807
+ # Corresponds to the JSON property `ingressPolicies`
1808
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressPolicy>]
1809
+ attr_accessor :ingress_policies
1810
+
1811
+ # A list of Google Cloud resources that are inside of the service perimeter.
1812
+ # Currently only projects are allowed. Format: `projects/`project_number``
1813
+ # Corresponds to the JSON property `resources`
1814
+ # @return [Array<String>]
1815
+ attr_accessor :resources
1816
+
1817
+ # Google Cloud services that are subject to the Service Perimeter restrictions.
1818
+ # For example, if `storage.googleapis.com` is specified, access to the storage
1819
+ # buckets inside the perimeter must meet the perimeter's access restrictions.
1820
+ # Corresponds to the JSON property `restrictedServices`
1821
+ # @return [Array<String>]
1822
+ attr_accessor :restricted_services
1823
+
1824
+ # Specifies how APIs are allowed to communicate within the Service Perimeter.
1825
+ # Corresponds to the JSON property `vpcAccessibleServices`
1826
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices]
1827
+ attr_accessor :vpc_accessible_services
1828
+
1829
+ def initialize(**args)
1830
+ update!(**args)
1831
+ end
1832
+
1833
+ # Update properties of this object
1834
+ def update!(**args)
1835
+ @access_levels = args[:access_levels] if args.key?(:access_levels)
1836
+ @egress_policies = args[:egress_policies] if args.key?(:egress_policies)
1837
+ @ingress_policies = args[:ingress_policies] if args.key?(:ingress_policies)
1838
+ @resources = args[:resources] if args.key?(:resources)
1839
+ @restricted_services = args[:restricted_services] if args.key?(:restricted_services)
1840
+ @vpc_accessible_services = args[:vpc_accessible_services] if args.key?(:vpc_accessible_services)
1841
+ end
1842
+ end
1843
+
1844
+ # Specifies how APIs are allowed to communicate within the Service Perimeter.
1845
+ class GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices
1846
+ include Google::Apis::Core::Hashable
1847
+
1848
+ # The list of APIs usable within the Service Perimeter. Must be empty unless '
1849
+ # enable_restriction' is True. You can specify a list of individual services, as
1850
+ # well as include the 'RESTRICTED-SERVICES' value, which automatically includes
1851
+ # all of the services protected by the perimeter.
1852
+ # Corresponds to the JSON property `allowedServices`
1853
+ # @return [Array<String>]
1854
+ attr_accessor :allowed_services
1855
+
1856
+ # Whether to restrict API calls within the Service Perimeter to the list of APIs
1857
+ # specified in 'allowed_services'.
1858
+ # Corresponds to the JSON property `enableRestriction`
1859
+ # @return [Boolean]
1860
+ attr_accessor :enable_restriction
1861
+ alias_method :enable_restriction?, :enable_restriction
1862
+
1863
+ def initialize(**args)
1864
+ update!(**args)
1865
+ end
1866
+
1867
+ # Update properties of this object
1868
+ def update!(**args)
1869
+ @allowed_services = args[:allowed_services] if args.key?(:allowed_services)
1870
+ @enable_restriction = args[:enable_restriction] if args.key?(:enable_restriction)
1871
+ end
1872
+ end
1873
+
1874
+ # This resource represents a long-running operation that is the result of a
1875
+ # network API call.
1876
+ class Operation
1877
+ include Google::Apis::Core::Hashable
1878
+
1879
+ # If the value is `false`, it means the operation is still in progress. If `true`
1880
+ # , the operation is completed, and either `error` or `response` is available.
1881
+ # Corresponds to the JSON property `done`
1882
+ # @return [Boolean]
1883
+ attr_accessor :done
1884
+ alias_method :done?, :done
1885
+
1886
+ # The `Status` type defines a logical error model that is suitable for different
1887
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1888
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1889
+ # data: error code, error message, and error details. You can find out more
1890
+ # about this error model and how to work with it in the [API Design Guide](https:
1891
+ # //cloud.google.com/apis/design/errors).
1892
+ # Corresponds to the JSON property `error`
1893
+ # @return [Google::Apis::CloudassetV1p7beta1::Status]
1894
+ attr_accessor :error
1895
+
1896
+ # Service-specific metadata associated with the operation. It typically contains
1897
+ # progress information and common metadata such as create time. Some services
1898
+ # might not provide such metadata. Any method that returns a long-running
1899
+ # operation should document the metadata type, if any.
1900
+ # Corresponds to the JSON property `metadata`
1901
+ # @return [Hash<String,Object>]
1902
+ attr_accessor :metadata
1903
+
1904
+ # The server-assigned name, which is only unique within the same service that
1905
+ # originally returns it. If you use the default HTTP mapping, the `name` should
1906
+ # be a resource name ending with `operations/`unique_id``.
1907
+ # Corresponds to the JSON property `name`
1908
+ # @return [String]
1909
+ attr_accessor :name
1910
+
1911
+ # The normal response of the operation in case of success. If the original
1912
+ # method returns no data on success, such as `Delete`, the response is `google.
1913
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
1914
+ # the response should be the resource. For other methods, the response should
1915
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
1916
+ # example, if the original method name is `TakeSnapshot()`, the inferred
1917
+ # response type is `TakeSnapshotResponse`.
1918
+ # Corresponds to the JSON property `response`
1919
+ # @return [Hash<String,Object>]
1920
+ attr_accessor :response
1921
+
1922
+ def initialize(**args)
1923
+ update!(**args)
1924
+ end
1925
+
1926
+ # Update properties of this object
1927
+ def update!(**args)
1928
+ @done = args[:done] if args.key?(:done)
1929
+ @error = args[:error] if args.key?(:error)
1930
+ @metadata = args[:metadata] if args.key?(:metadata)
1931
+ @name = args[:name] if args.key?(:name)
1932
+ @response = args[:response] if args.key?(:response)
1933
+ end
1934
+ end
1935
+
1936
+ # An Identity and Access Management (IAM) policy, which specifies access
1937
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1938
+ # A `binding` binds one or more `members` to a single `role`. Members can be
1939
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
1940
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
1941
+ # role or a user-created custom role. For some types of Google Cloud resources,
1942
+ # a `binding` can also specify a `condition`, which is a logical expression that
1943
+ # allows access to a resource only if the expression evaluates to `true`. A
1944
+ # condition can add constraints based on attributes of the request, the resource,
1945
+ # or both. To learn which resources support conditions in their IAM policies,
1946
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
1947
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
1948
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
1949
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
1950
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
1951
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
1952
+ # title": "expirable access", "description": "Does not grant access after Sep
1953
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
1954
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
1955
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
1956
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
1957
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
1958
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
1959
+ # description: Does not grant access after Sep 2020 expression: request.time <
1960
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
1961
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
1962
+ # google.com/iam/docs/).
1963
+ class Policy
1964
+ include Google::Apis::Core::Hashable
1965
+
1966
+ # Specifies cloud audit logging configuration for this policy.
1967
+ # Corresponds to the JSON property `auditConfigs`
1968
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::AuditConfig>]
1969
+ attr_accessor :audit_configs
1970
+
1971
+ # Associates a list of `members` to a `role`. Optionally, may specify a `
1972
+ # condition` that determines how and when the `bindings` are applied. Each of
1973
+ # the `bindings` must contain at least one member.
1974
+ # Corresponds to the JSON property `bindings`
1975
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::Binding>]
1976
+ attr_accessor :bindings
1977
+
1978
+ # `etag` is used for optimistic concurrency control as a way to help prevent
1979
+ # simultaneous updates of a policy from overwriting each other. It is strongly
1980
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
1981
+ # to perform policy updates in order to avoid race conditions: An `etag` is
1982
+ # returned in the response to `getIamPolicy`, and systems are expected to put
1983
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
1984
+ # applied to the same version of the policy. **Important:** If you use IAM
1985
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
1986
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
1987
+ # with a version `1` policy, and all of the conditions in the version `3` policy
1988
+ # are lost.
1989
+ # Corresponds to the JSON property `etag`
1990
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1991
+ # @return [String]
1992
+ attr_accessor :etag
1993
+
1994
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
1995
+ # Requests that specify an invalid value are rejected. Any operation that
1996
+ # affects conditional role bindings must specify version `3`. This requirement
1997
+ # applies to the following operations: * Getting a policy that includes a
1998
+ # conditional role binding * Adding a conditional role binding to a policy *
1999
+ # Changing a conditional role binding in a policy * Removing any role binding,
2000
+ # with or without a condition, from a policy that includes conditions **
2001
+ # Important:** If you use IAM Conditions, you must include the `etag` field
2002
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
2003
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
2004
+ # conditions in the version `3` policy are lost. If a policy does not include
2005
+ # any conditions, operations on that policy may specify any valid version or
2006
+ # leave the field unset. To learn which resources support conditions in their
2007
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
2008
+ # conditions/resource-policies).
2009
+ # Corresponds to the JSON property `version`
2010
+ # @return [Fixnum]
2011
+ attr_accessor :version
2012
+
2013
+ def initialize(**args)
2014
+ update!(**args)
2015
+ end
2016
+
2017
+ # Update properties of this object
2018
+ def update!(**args)
2019
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
2020
+ @bindings = args[:bindings] if args.key?(:bindings)
2021
+ @etag = args[:etag] if args.key?(:etag)
2022
+ @version = args[:version] if args.key?(:version)
300
2023
  end
301
2024
  end
302
2025