google-apis-cloudasset_v1p7beta1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d9137af7237d6ebd7efa85dc88754c0a458df63cfa6e2c20615f448fd0f7a742
4
+ data.tar.gz: 34cffd3dd83bff6741cbc856cf9c6855fd3c4050e4247ba3c03c4171e6772b23
5
+ SHA512:
6
+ metadata.gz: 542d47275687f8ed7910b3530686cb579cbd4cf545e9c85c7c3fe5208dbf133572644ae4a638b7f1ed2030adc994c0866bc08f6734923998d39b17ae2ae38b5d
7
+ data.tar.gz: 2b024dcd41417c33a8b21b6affeececea4d7e85092cecacd2b10e0e00ae26cd647f7a2f670286195b3b2f5a0f8ebdb453234852c8338dd3740ed7eaab699778d
data/.yardopts ADDED
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-cloudasset_v1p7beta1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/cloudasset_v1p7beta1/*.rb
9
+ lib/google/apis/cloudasset_v1p7beta1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-cloudasset_v1p7beta1
2
+
3
+ ### v0.1.0 (2021-02-03)
4
+
5
+ * Regenerated from discovery document revision 20210129
6
+ * Regenerated using generator version 0.1.2
7
+
data/LICENSE.md ADDED
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
data/OVERVIEW.md ADDED
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1p7beta1 of the Cloud Asset API
2
+
3
+ This is a simple client library for version V1p7beta1 of the Cloud Asset API. It provides:
4
+
5
+ * A client object that connects to the HTTP/JSON REST endpoint for the service.
6
+ * Ruby objects for data structures related to the service.
7
+ * Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
8
+ * Control of retry, pagination, and timeouts.
9
+
10
+ Note that although this client library is supported and will continue to be updated to track changes to the service, it is otherwise considered complete and not under active development. Many Google services, especially Google Cloud Platform services, may provide a more modern client that is under more active development and improvement. See the section below titled *Which client should I use?* for more information.
11
+
12
+ ## Getting started
13
+
14
+ ### Before you begin
15
+
16
+ There are a few setup steps you need to complete before you can use this library:
17
+
18
+ 1. If you don't already have a Google account, [sign up](https://www.google.com/accounts).
19
+ 2. If you have never created a Google APIs Console project, read about [Managing Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) and create a project in the [Google API Console](https://console.cloud.google.com/).
20
+ 3. Most APIs need to be enabled for your project. [Enable it](https://console.cloud.google.com/apis/library/cloudasset.googleapis.com) in the console.
21
+
22
+ ### Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'google-apis-cloudasset_v1p7beta1', '~> 0.1'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```
33
+ $ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```
39
+ $ gem install google-apis-cloudasset_v1p7beta1
40
+ ```
41
+
42
+ ### Creating a client object
43
+
44
+ Once the gem is installed, you can load the client code and instantiate a client.
45
+
46
+ ```ruby
47
+ # Load the client
48
+ require "google/apis/cloudasset_v1p7beta1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::CloudassetV1p7beta1::CloudAssetService.new
52
+
53
+ # Authenticate calls
54
+ client.authentication = # ... use the googleauth gem to create credentials
55
+ ```
56
+
57
+ See the class reference docs for information on the methods you can call from a client.
58
+
59
+ ## Documentation
60
+
61
+ More detailed descriptions of the Google simple REST clients are available in two documents.
62
+
63
+ * The [Usage Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/usage-guide.md) discusses how to make API calls, how to use the provided data structures, and how to work the various features of the client library, including media upload and download, error handling, retries, pagination, and logging.
64
+ * The [Auth Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/auth-guide.md) discusses authentication in the client libraries, including API keys, OAuth 2.0, service accounts, and environment variables.
65
+
66
+ (Note: the above documents are written for the simple REST clients in general, and their examples may not reflect the Cloudasset service in particular.)
67
+
68
+ For reference information on specific calls in the Cloud Asset API, see the {Google::Apis::CloudassetV1p7beta1::CloudAssetService class reference docs}.
69
+
70
+ ## Which client should I use?
71
+
72
+ Google provides two types of Ruby API client libraries: **simple REST clients** and **modern clients**.
73
+
74
+ This library, `google-apis-cloudasset_v1p7beta1`, is a simple REST client. You can identify these clients by their gem names, which are always in the form `google-apis-<servicename>_<serviceversion>`. The simple REST clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.
75
+
76
+ Modern clients are produced by a modern code generator, sometimes combined with hand-crafted functionality. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Google Cloud Platform services, but do not yet support all the services covered by the simple clients.
77
+
78
+ Gem names for modern clients are often of the form `google-cloud-<service_name>`. (For example, [google-cloud-pubsub](https://rubygems.org/gems/google-cloud-pubsub).) Note that most modern clients also have corresponding "versioned" gems with names like `google-cloud-<service_name>-<version>`. (For example, [google-cloud-pubsub-v1](https://rubygems.org/gems/google-cloud-pubsub-v1).) The "versioned" gems can be used directly, but often provide lower-level interfaces. In most cases, the main gem is recommended.
79
+
80
+ **For most users, we recommend the modern client, if one is available.** Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.
81
+
82
+ The [product documentation](https://cloud.google.com/asset-inventory/docs/quickstart) may provide guidance regarding the preferred client library to use.
83
+
84
+ ## Supported Ruby versions
85
+
86
+ This library is supported on Ruby 2.5+.
87
+
88
+ Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.
89
+
90
+ ## License
91
+
92
+ This library is licensed under Apache 2.0. Full license text is available in the {file:LICENSE.md LICENSE}.
93
+
94
+ ## Support
95
+
96
+ Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
@@ -0,0 +1,15 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "google/apis/cloudasset_v1p7beta1"
@@ -0,0 +1,36 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/cloudasset_v1p7beta1/service.rb'
16
+ require 'google/apis/cloudasset_v1p7beta1/classes.rb'
17
+ require 'google/apis/cloudasset_v1p7beta1/representations.rb'
18
+ require 'google/apis/cloudasset_v1p7beta1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Cloud Asset API
23
+ #
24
+ # The cloud asset API manages the history and inventory of cloud resources.
25
+ #
26
+ # @see https://cloud.google.com/asset-inventory/docs/quickstart
27
+ module CloudassetV1p7beta1
28
+ # Version of the Cloud Asset API this client connects to.
29
+ # This is NOT the gem version.
30
+ VERSION = 'V1p7beta1'
31
+
32
+ # View and manage your data across Google Cloud Platform services
33
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,2319 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module CloudassetV1p7beta1
24
+
25
+ # An asset in Google Cloud. An asset can be any resource in the Google Cloud [
26
+ # resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-
27
+ # platform-resource-hierarchy), a resource outside the Google Cloud resource
28
+ # hierarchy (such as Google Kubernetes Engine clusters and objects), or a policy
29
+ # (e.g. Cloud IAM policy). See [Supported asset types](https://cloud.google.com/
30
+ # asset-inventory/docs/supported-asset-types) for more information.
31
+ class Asset
32
+ include Google::Apis::Core::Hashable
33
+
34
+ # An `AccessLevel` is a label that can be applied to requests to Google Cloud
35
+ # services, along with a list of requirements necessary for the label to be
36
+ # applied.
37
+ # Corresponds to the JSON property `accessLevel`
38
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1AccessLevel]
39
+ attr_accessor :access_level
40
+
41
+ # `AccessPolicy` is a container for `AccessLevels` (which define the necessary
42
+ # attributes to use Google Cloud services) and `ServicePerimeters` (which define
43
+ # regions of services able to freely pass data within a perimeter). An access
44
+ # policy is globally visible within an organization, and the restrictions it
45
+ # specifies apply to all projects within an organization.
46
+ # Corresponds to the JSON property `accessPolicy`
47
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1AccessPolicy]
48
+ attr_accessor :access_policy
49
+
50
+ # The ancestry path of an asset in Google Cloud [resource hierarchy](https://
51
+ # cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy),
52
+ # represented as a list of relative resource names. An ancestry path starts with
53
+ # the closest ancestor in the hierarchy and ends at root. If the asset is a
54
+ # project, folder, or organization, the ancestry path starts from the asset
55
+ # itself. Example: `["projects/123456789", "folders/5432", "organizations/1234"]`
56
+ # Corresponds to the JSON property `ancestors`
57
+ # @return [Array<String>]
58
+ attr_accessor :ancestors
59
+
60
+ # The type of the asset. Example: `compute.googleapis.com/Disk` See [Supported
61
+ # asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-
62
+ # types) for more information.
63
+ # Corresponds to the JSON property `assetType`
64
+ # @return [String]
65
+ attr_accessor :asset_type
66
+
67
+ # Whether the asset has been deleted or not.
68
+ # Corresponds to the JSON property `deleted`
69
+ # @return [Boolean]
70
+ attr_accessor :deleted
71
+ alias_method :deleted?, :deleted
72
+
73
+ # An Identity and Access Management (IAM) policy, which specifies access
74
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
75
+ # A `binding` binds one or more `members` to a single `role`. Members can be
76
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
77
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
78
+ # role or a user-created custom role. For some types of Google Cloud resources,
79
+ # a `binding` can also specify a `condition`, which is a logical expression that
80
+ # allows access to a resource only if the expression evaluates to `true`. A
81
+ # condition can add constraints based on attributes of the request, the resource,
82
+ # or both. To learn which resources support conditions in their IAM policies,
83
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
84
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
85
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
86
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
87
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
88
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
89
+ # title": "expirable access", "description": "Does not grant access after Sep
90
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
91
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
92
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
93
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
94
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
95
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
96
+ # description: Does not grant access after Sep 2020 expression: request.time <
97
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
98
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
99
+ # google.com/iam/docs/).
100
+ # Corresponds to the JSON property `iamPolicy`
101
+ # @return [Google::Apis::CloudassetV1p7beta1::Policy]
102
+ attr_accessor :iam_policy
103
+
104
+ # The full name of the asset. Example: `//compute.googleapis.com/projects/
105
+ # my_project_123/zones/zone1/instances/instance1` See [Resource names](https://
106
+ # cloud.google.com/apis/design/resource_names#full_resource_name) for more
107
+ # information.
108
+ # Corresponds to the JSON property `name`
109
+ # @return [String]
110
+ attr_accessor :name
111
+
112
+ # A representation of an [organization policy](https://cloud.google.com/resource-
113
+ # manager/docs/organization-policy/overview#organization_policy). There can be
114
+ # more than one organization policy with different constraints set on a given
115
+ # resource.
116
+ # Corresponds to the JSON property `orgPolicy`
117
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1Policy>]
118
+ attr_accessor :org_policy
119
+
120
+ # A representation of a Google Cloud resource.
121
+ # Corresponds to the JSON property `resource`
122
+ # @return [Google::Apis::CloudassetV1p7beta1::Resource]
123
+ attr_accessor :resource
124
+
125
+ # `ServicePerimeter` describes a set of Google Cloud resources which can freely
126
+ # import and export data amongst themselves, but not export outside of the `
127
+ # ServicePerimeter`. If a request with a source within this `ServicePerimeter`
128
+ # has a target outside of the `ServicePerimeter`, the request will be blocked.
129
+ # Otherwise the request is allowed. There are two types of Service Perimeter -
130
+ # Regular and Bridge. Regular Service Perimeters cannot overlap, a single Google
131
+ # Cloud project can only belong to a single regular Service Perimeter. Service
132
+ # Perimeter Bridges can contain only Google Cloud projects as members, a single
133
+ # Google Cloud project may belong to multiple Service Perimeter Bridges.
134
+ # Corresponds to the JSON property `servicePerimeter`
135
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeter]
136
+ attr_accessor :service_perimeter
137
+
138
+ # The last update timestamp of an asset. update_time is updated when create/
139
+ # update/delete operation is performed.
140
+ # Corresponds to the JSON property `updateTime`
141
+ # @return [String]
142
+ attr_accessor :update_time
143
+
144
+ def initialize(**args)
145
+ update!(**args)
146
+ end
147
+
148
+ # Update properties of this object
149
+ def update!(**args)
150
+ @access_level = args[:access_level] if args.key?(:access_level)
151
+ @access_policy = args[:access_policy] if args.key?(:access_policy)
152
+ @ancestors = args[:ancestors] if args.key?(:ancestors)
153
+ @asset_type = args[:asset_type] if args.key?(:asset_type)
154
+ @deleted = args[:deleted] if args.key?(:deleted)
155
+ @iam_policy = args[:iam_policy] if args.key?(:iam_policy)
156
+ @name = args[:name] if args.key?(:name)
157
+ @org_policy = args[:org_policy] if args.key?(:org_policy)
158
+ @resource = args[:resource] if args.key?(:resource)
159
+ @service_perimeter = args[:service_perimeter] if args.key?(:service_perimeter)
160
+ @update_time = args[:update_time] if args.key?(:update_time)
161
+ end
162
+ end
163
+
164
+ # Specifies the audit configuration for a service. The configuration determines
165
+ # which permission types are logged, and what identities, if any, are exempted
166
+ # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
167
+ # are AuditConfigs for both `allServices` and a specific service, the union of
168
+ # the two AuditConfigs is used for that service: the log_types specified in each
169
+ # AuditConfig are enabled, and the exempted_members in each AuditLogConfig are
170
+ # exempted. Example Policy with multiple AuditConfigs: ` "audit_configs": [ ` "
171
+ # service": "allServices", "audit_log_configs": [ ` "log_type": "DATA_READ", "
172
+ # exempted_members": [ "user:jose@example.com" ] `, ` "log_type": "DATA_WRITE" `,
173
+ # ` "log_type": "ADMIN_READ" ` ] `, ` "service": "sampleservice.googleapis.com",
174
+ # "audit_log_configs": [ ` "log_type": "DATA_READ" `, ` "log_type": "DATA_WRITE"
175
+ # , "exempted_members": [ "user:aliya@example.com" ] ` ] ` ] ` For sampleservice,
176
+ # this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
177
+ # exempts jose@example.com from DATA_READ logging, and aliya@example.com from
178
+ # DATA_WRITE logging.
179
+ class AuditConfig
180
+ include Google::Apis::Core::Hashable
181
+
182
+ # The configuration for logging of each type of permission.
183
+ # Corresponds to the JSON property `auditLogConfigs`
184
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::AuditLogConfig>]
185
+ attr_accessor :audit_log_configs
186
+
187
+ # Specifies a service that will be enabled for audit logging. For example, `
188
+ # storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special
189
+ # value that covers all services.
190
+ # Corresponds to the JSON property `service`
191
+ # @return [String]
192
+ attr_accessor :service
193
+
194
+ def initialize(**args)
195
+ update!(**args)
196
+ end
197
+
198
+ # Update properties of this object
199
+ def update!(**args)
200
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
201
+ @service = args[:service] if args.key?(:service)
202
+ end
203
+ end
204
+
205
+ # Provides the configuration for logging a type of permissions. Example: ` "
206
+ # audit_log_configs": [ ` "log_type": "DATA_READ", "exempted_members": [ "user:
207
+ # jose@example.com" ] `, ` "log_type": "DATA_WRITE" ` ] ` This enables '
208
+ # DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from
209
+ # DATA_READ logging.
210
+ class AuditLogConfig
211
+ include Google::Apis::Core::Hashable
212
+
213
+ # Specifies the identities that do not cause logging for this type of permission.
214
+ # Follows the same format of Binding.members.
215
+ # Corresponds to the JSON property `exemptedMembers`
216
+ # @return [Array<String>]
217
+ attr_accessor :exempted_members
218
+
219
+ # The log type that this config enables.
220
+ # Corresponds to the JSON property `logType`
221
+ # @return [String]
222
+ attr_accessor :log_type
223
+
224
+ def initialize(**args)
225
+ update!(**args)
226
+ end
227
+
228
+ # Update properties of this object
229
+ def update!(**args)
230
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
231
+ @log_type = args[:log_type] if args.key?(:log_type)
232
+ end
233
+ end
234
+
235
+ # A BigQuery destination for exporting assets to.
236
+ class BigQueryDestination
237
+ include Google::Apis::Core::Hashable
238
+
239
+ # Required. The BigQuery dataset in format "projects/projectId/datasets/
240
+ # datasetId", to which the snapshot result should be exported. If this dataset
241
+ # does not exist, the export call returns an INVALID_ARGUMENT error.
242
+ # Corresponds to the JSON property `dataset`
243
+ # @return [String]
244
+ attr_accessor :dataset
245
+
246
+ # If the destination table already exists and this flag is `TRUE`, the table
247
+ # will be overwritten by the contents of assets snapshot. If the flag is `FALSE`
248
+ # or unset and the destination table already exists, the export call returns an
249
+ # INVALID_ARGUMEMT error.
250
+ # Corresponds to the JSON property `force`
251
+ # @return [Boolean]
252
+ attr_accessor :force
253
+ alias_method :force?, :force
254
+
255
+ # Specifications of BigQuery partitioned table as export destination.
256
+ # Corresponds to the JSON property `partitionSpec`
257
+ # @return [Google::Apis::CloudassetV1p7beta1::PartitionSpec]
258
+ attr_accessor :partition_spec
259
+
260
+ # If this flag is `TRUE`, the snapshot results will be written to one or
261
+ # multiple tables, each of which contains results of one asset type. The [force]
262
+ # and [partition_spec] fields will apply to each of them. Field [table] will be
263
+ # concatenated with "_" and the asset type names (see https://cloud.google.com/
264
+ # asset-inventory/docs/supported-asset-types for supported asset types) to
265
+ # construct per-asset-type table names, in which all non-alphanumeric characters
266
+ # like "." and "/" will be substituted by "_". Example: if field [table] is "
267
+ # mytable" and snapshot results contain "storage.googleapis.com/Bucket" assets,
268
+ # the corresponding table name will be "mytable_storage_googleapis_com_Bucket".
269
+ # If any of these tables does not exist, a new table with the concatenated name
270
+ # will be created. When [content_type] in the ExportAssetsRequest is `RESOURCE`,
271
+ # the schema of each table will include RECORD-type columns mapped to the nested
272
+ # fields in the Asset.resource.data field of that asset type (up to the 15
273
+ # nested level BigQuery supports (https://cloud.google.com/bigquery/docs/nested-
274
+ # repeated#limitations)). The fields in >15 nested levels will be stored in JSON
275
+ # format string as a child column of its parent RECORD column. If error occurs
276
+ # when exporting to any table, the whole export call will return an error but
277
+ # the export results that already succeed will persist. Example: if exporting to
278
+ # table_type_A succeeds when exporting to table_type_B fails during one export
279
+ # call, the results in table_type_A will persist and there will not be partial
280
+ # results persisting in a table.
281
+ # Corresponds to the JSON property `separateTablesPerAssetType`
282
+ # @return [Boolean]
283
+ attr_accessor :separate_tables_per_asset_type
284
+ alias_method :separate_tables_per_asset_type?, :separate_tables_per_asset_type
285
+
286
+ # Required. The BigQuery table to which the snapshot result should be written.
287
+ # If this table does not exist, a new table with the given name will be created.
288
+ # In the case of scheduled export, the real destination is [table] appended with
289
+ # a suffix indicating the point-in-time of the snapshot. For example, suppose
290
+ # field [table] is "mytable". When [separate_tables_per_asset_type] and is `
291
+ # FALSE`, the destination will be "mytable_snapshot_20201122060000", and when [
292
+ # separate_tables_per_asset_type] and is `TRUE` and the [asset_types] contains "
293
+ # storage.googleapis.com/Bucket", the destination will be "
294
+ # mytable_snapshot_20201122060000_storage_googleapis_com_Bucket"
295
+ # Corresponds to the JSON property `table`
296
+ # @return [String]
297
+ attr_accessor :table
298
+
299
+ def initialize(**args)
300
+ update!(**args)
301
+ end
302
+
303
+ # Update properties of this object
304
+ def update!(**args)
305
+ @dataset = args[:dataset] if args.key?(:dataset)
306
+ @force = args[:force] if args.key?(:force)
307
+ @partition_spec = args[:partition_spec] if args.key?(:partition_spec)
308
+ @separate_tables_per_asset_type = args[:separate_tables_per_asset_type] if args.key?(:separate_tables_per_asset_type)
309
+ @table = args[:table] if args.key?(:table)
310
+ end
311
+ end
312
+
313
+ # Setting for scheduled export to BigQuery.
314
+ class BigQuerySetting
315
+ include Google::Apis::Core::Hashable
316
+
317
+ # A BigQuery destination for exporting assets to.
318
+ # Corresponds to the JSON property `destination`
319
+ # @return [Google::Apis::CloudassetV1p7beta1::BigQueryDestination]
320
+ attr_accessor :destination
321
+
322
+ # Schedule for scheduled export. This is used to configure scheduled export for
323
+ # both GCS and BigQuery.
324
+ # Corresponds to the JSON property `snapshotSchedule`
325
+ # @return [Google::Apis::CloudassetV1p7beta1::ScheduleConfig]
326
+ attr_accessor :snapshot_schedule
327
+
328
+ def initialize(**args)
329
+ update!(**args)
330
+ end
331
+
332
+ # Update properties of this object
333
+ def update!(**args)
334
+ @destination = args[:destination] if args.key?(:destination)
335
+ @snapshot_schedule = args[:snapshot_schedule] if args.key?(:snapshot_schedule)
336
+ end
337
+ end
338
+
339
+ # Associates `members` with a `role`.
340
+ class Binding
341
+ include Google::Apis::Core::Hashable
342
+
343
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
344
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
345
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
346
+ # "Summary size limit" description: "Determines if a summary is less than 100
347
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
348
+ # Requestor is owner" description: "Determines if requestor is the document
349
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
350
+ # Logic): title: "Public documents" description: "Determine whether the document
351
+ # should be publicly visible" expression: "document.type != 'private' &&
352
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
353
+ # string" description: "Create a notification string with a timestamp."
354
+ # expression: "'New message received at ' + string(document.create_time)" The
355
+ # exact variables and functions that may be referenced within an expression are
356
+ # determined by the service that evaluates it. See the service documentation for
357
+ # additional information.
358
+ # Corresponds to the JSON property `condition`
359
+ # @return [Google::Apis::CloudassetV1p7beta1::Expr]
360
+ attr_accessor :condition
361
+
362
+ # Specifies the identities requesting access for a Cloud Platform resource. `
363
+ # members` can have the following values: * `allUsers`: A special identifier
364
+ # that represents anyone who is on the internet; with or without a Google
365
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
366
+ # anyone who is authenticated with a Google account or a service account. * `
367
+ # user:`emailid``: An email address that represents a specific Google account.
368
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
369
+ # address that represents a service account. For example, `my-other-app@appspot.
370
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
371
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
372
+ # `uniqueid``: An email address (plus unique identifier) representing a user
373
+ # that has been recently deleted. For example, `alice@example.com?uid=
374
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
375
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
376
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
377
+ # identifier) representing a service account that has been recently deleted. For
378
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
379
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
380
+ # emailid`` and the undeleted service account retains the role in the binding. *
381
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
382
+ # identifier) representing a Google group that has been recently deleted. For
383
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
384
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
385
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
386
+ # primary) that represents all the users of that domain. For example, `google.
387
+ # com` or `example.com`.
388
+ # Corresponds to the JSON property `members`
389
+ # @return [Array<String>]
390
+ attr_accessor :members
391
+
392
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
393
+ # , or `roles/owner`.
394
+ # Corresponds to the JSON property `role`
395
+ # @return [String]
396
+ attr_accessor :role
397
+
398
+ def initialize(**args)
399
+ update!(**args)
400
+ end
401
+
402
+ # Update properties of this object
403
+ def update!(**args)
404
+ @condition = args[:condition] if args.key?(:condition)
405
+ @members = args[:members] if args.key?(:members)
406
+ @role = args[:role] if args.key?(:role)
407
+ end
408
+ end
409
+
410
+ #
411
+ class CreateExportSettingRequest
412
+ include Google::Apis::Core::Hashable
413
+
414
+ # Settings that configure CAI to export assets on given schedules. An [
415
+ # InventorySettings] might have multiple [ExportSetting], each with a unique
416
+ # identifier.
417
+ # Corresponds to the JSON property `exportSetting`
418
+ # @return [Google::Apis::CloudassetV1p7beta1::ExportSetting]
419
+ attr_accessor :export_setting
420
+
421
+ # Required. This is the client-assigned export setting identifier encoded in UTF-
422
+ # 8 and it needs to be unique under a specific [InventorySettings].
423
+ # Corresponds to the JSON property `exportSettingId`
424
+ # @return [String]
425
+ attr_accessor :export_setting_id
426
+
427
+ def initialize(**args)
428
+ update!(**args)
429
+ end
430
+
431
+ # Update properties of this object
432
+ def update!(**args)
433
+ @export_setting = args[:export_setting] if args.key?(:export_setting)
434
+ @export_setting_id = args[:export_setting_id] if args.key?(:export_setting_id)
435
+ end
436
+ end
437
+
438
+ # A generic empty message that you can re-use to avoid defining duplicated empty
439
+ # messages in your APIs. A typical example is to use it as the request or the
440
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
441
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
442
+ # `Empty` is empty JSON object ````.
443
+ class Empty
444
+ include Google::Apis::Core::Hashable
445
+
446
+ def initialize(**args)
447
+ update!(**args)
448
+ end
449
+
450
+ # Update properties of this object
451
+ def update!(**args)
452
+ end
453
+ end
454
+
455
+ # Export asset updates request.
456
+ class ExportAssetUpdatesRequest
457
+ include Google::Apis::Core::Hashable
458
+
459
+ # A list of the full names of the assets to export the updates for. See: https://
460
+ # cloud.google.com/asset-inventory/docs/resource-name-format Example: `//compute.
461
+ # googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. If
462
+ # specified, only assets in the list will be returned. At most one of
463
+ # asset_types and asset_names should be specified. If neither is specified, all
464
+ # assets under the parent will be returned.
465
+ # Corresponds to the JSON property `assetNames`
466
+ # @return [Array<String>]
467
+ attr_accessor :asset_names
468
+
469
+ # A list of asset types to export the updates for. For example: "compute.
470
+ # googleapis.com/Disk". Regular expressions are also supported. For example: * "
471
+ # compute.googleapis.com.*" snapshots resources whose asset type starts with "
472
+ # compute.googleapis.com". * ".*Instance" snapshots resources whose asset type
473
+ # ends with "Instance". * ".*Instance.*" snapshots resources whose asset type
474
+ # contains "Instance". See [RE2](https://github.com/google/re2/wiki/Syntax) for
475
+ # all supported regular expression syntax. If the regular expression does not
476
+ # match any supported asset type, an INVALID_ARGUMENT error will be returned. If
477
+ # specified, only matching assets will be returned. See [Introduction to Cloud
478
+ # Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for
479
+ # all supported asset types. At most one of asset_types and asset_names should
480
+ # be specified. If neither is specified, all assets under the parent will be
481
+ # returned.
482
+ # Corresponds to the JSON property `assetTypes`
483
+ # @return [Array<String>]
484
+ attr_accessor :asset_types
485
+
486
+ # Asset content type. If not specified, no content but the asset name will be
487
+ # returned.
488
+ # Corresponds to the JSON property `contentType`
489
+ # @return [String]
490
+ attr_accessor :content_type
491
+
492
+ # Output configuration for export assets destination.
493
+ # Corresponds to the JSON property `outputConfig`
494
+ # @return [Google::Apis::CloudassetV1p7beta1::OutputConfig]
495
+ attr_accessor :output_config
496
+
497
+ # Time window configuration for asset updates requests.
498
+ # Corresponds to the JSON property `updateTimeWindow`
499
+ # @return [Google::Apis::CloudassetV1p7beta1::UpdateTimeWindow]
500
+ attr_accessor :update_time_window
501
+
502
+ def initialize(**args)
503
+ update!(**args)
504
+ end
505
+
506
+ # Update properties of this object
507
+ def update!(**args)
508
+ @asset_names = args[:asset_names] if args.key?(:asset_names)
509
+ @asset_types = args[:asset_types] if args.key?(:asset_types)
510
+ @content_type = args[:content_type] if args.key?(:content_type)
511
+ @output_config = args[:output_config] if args.key?(:output_config)
512
+ @update_time_window = args[:update_time_window] if args.key?(:update_time_window)
513
+ end
514
+ end
515
+
516
+ # Export asset request.
517
+ class ExportAssetsRequest
518
+ include Google::Apis::Core::Hashable
519
+
520
+ # A list of asset types to take a snapshot for. For example: "compute.googleapis.
521
+ # com/Disk". Regular expressions are also supported. For example: * "compute.
522
+ # googleapis.com.*" snapshots resources whose asset type starts with "compute.
523
+ # googleapis.com". * ".*Instance" snapshots resources whose asset type ends with
524
+ # "Instance". * ".*Instance.*" snapshots resources whose asset type contains "
525
+ # Instance". See [RE2](https://github.com/google/re2/wiki/Syntax) for all
526
+ # supported regular expression syntax. If the regular expression does not match
527
+ # any supported asset type, an INVALID_ARGUMENT error will be returned. If
528
+ # specified, only matching assets will be returned, otherwise, it will snapshot
529
+ # all asset types. See [Introduction to Cloud Asset Inventory](https://cloud.
530
+ # google.com/asset-inventory/docs/overview) for all supported asset types.
531
+ # Corresponds to the JSON property `assetTypes`
532
+ # @return [Array<String>]
533
+ attr_accessor :asset_types
534
+
535
+ # Asset content type. If not specified, no content but the asset name will be
536
+ # returned.
537
+ # Corresponds to the JSON property `contentType`
538
+ # @return [String]
539
+ attr_accessor :content_type
540
+
541
+ # Output configuration for export assets destination.
542
+ # Corresponds to the JSON property `outputConfig`
543
+ # @return [Google::Apis::CloudassetV1p7beta1::OutputConfig]
544
+ attr_accessor :output_config
545
+
546
+ # Timestamp to take an asset snapshot. This can only be set to a timestamp
547
+ # between the current time and the current time minus 35 days (inclusive). If
548
+ # not specified, the current time will be used. Due to delays in resource data
549
+ # collection and indexing, there is a volatile window during which running the
550
+ # same query may get different results.
551
+ # Corresponds to the JSON property `readTime`
552
+ # @return [String]
553
+ attr_accessor :read_time
554
+
555
+ def initialize(**args)
556
+ update!(**args)
557
+ end
558
+
559
+ # Update properties of this object
560
+ def update!(**args)
561
+ @asset_types = args[:asset_types] if args.key?(:asset_types)
562
+ @content_type = args[:content_type] if args.key?(:content_type)
563
+ @output_config = args[:output_config] if args.key?(:output_config)
564
+ @read_time = args[:read_time] if args.key?(:read_time)
565
+ end
566
+ end
567
+
568
+ # Settings that configure CAI to export assets on given schedules. An [
569
+ # InventorySettings] might have multiple [ExportSetting], each with a unique
570
+ # identifier.
571
+ class ExportSetting
572
+ include Google::Apis::Core::Hashable
573
+
574
+ # Asset types of resources that will be exported on schedule. For example: "
575
+ # compute.googleapis.com/Disk". Regular expressions are also supported. For
576
+ # example: * "compute.googleapis.com.*" snapshots resources whose asset type
577
+ # starts with "compute.googleapis.com". * ".*Instance" snapshots resources whose
578
+ # asset type ends with "Instance". * ".*Instance.*" snapshots resources whose
579
+ # asset type contains "Instance". See [RE2](https://github.com/google/re2/wiki/
580
+ # Syntax) for all supported regular expression syntax. If the regular expression
581
+ # does not match any supported asset type, an INVALID_ARGUMENT error will be
582
+ # returned. If specified, only matching assets will be returned. See [
583
+ # Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-
584
+ # inventory/docs/overview) for all supported asset types.
585
+ # Corresponds to the JSON property `assetTypes`
586
+ # @return [Array<String>]
587
+ attr_accessor :asset_types
588
+
589
+ # Setting for scheduled export to BigQuery.
590
+ # Corresponds to the JSON property `bigquerySetting`
591
+ # @return [Google::Apis::CloudassetV1p7beta1::BigQuerySetting]
592
+ attr_accessor :bigquery_setting
593
+
594
+ # Required. Asset content type. Currently only `RESOURCE`, `IAM_POLICY`, `
595
+ # ORG_POLICY`, `ACCESS_POLICY` are supported.
596
+ # Corresponds to the JSON property `contentType`
597
+ # @return [String]
598
+ attr_accessor :content_type
599
+
600
+ # Setting for scheduled export to GCS.
601
+ # Corresponds to the JSON property `gcsSetting`
602
+ # @return [Google::Apis::CloudassetV1p7beta1::GcsSetting]
603
+ attr_accessor :gcs_setting
604
+
605
+ # The format will be: organizations/`ORGANIZATION_NUMBER`/inventorySettings/
606
+ # exportSettings/`exportSetting` or folders/`FOLDER_NUMBER`/inventorySettings/
607
+ # exportSettings/`exportSetting` or projects/`PROJECT_NUMBER`/inventorySettings/
608
+ # exportSettings/`exportSetting`
609
+ # Corresponds to the JSON property `name`
610
+ # @return [String]
611
+ attr_accessor :name
612
+
613
+ def initialize(**args)
614
+ update!(**args)
615
+ end
616
+
617
+ # Update properties of this object
618
+ def update!(**args)
619
+ @asset_types = args[:asset_types] if args.key?(:asset_types)
620
+ @bigquery_setting = args[:bigquery_setting] if args.key?(:bigquery_setting)
621
+ @content_type = args[:content_type] if args.key?(:content_type)
622
+ @gcs_setting = args[:gcs_setting] if args.key?(:gcs_setting)
623
+ @name = args[:name] if args.key?(:name)
624
+ end
625
+ end
626
+
627
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
628
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
629
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
630
+ # "Summary size limit" description: "Determines if a summary is less than 100
631
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
632
+ # Requestor is owner" description: "Determines if requestor is the document
633
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
634
+ # Logic): title: "Public documents" description: "Determine whether the document
635
+ # should be publicly visible" expression: "document.type != 'private' &&
636
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
637
+ # string" description: "Create a notification string with a timestamp."
638
+ # expression: "'New message received at ' + string(document.create_time)" The
639
+ # exact variables and functions that may be referenced within an expression are
640
+ # determined by the service that evaluates it. See the service documentation for
641
+ # additional information.
642
+ class Expr
643
+ include Google::Apis::Core::Hashable
644
+
645
+ # Optional. Description of the expression. This is a longer text which describes
646
+ # the expression, e.g. when hovered over it in a UI.
647
+ # Corresponds to the JSON property `description`
648
+ # @return [String]
649
+ attr_accessor :description
650
+
651
+ # Textual representation of an expression in Common Expression Language syntax.
652
+ # Corresponds to the JSON property `expression`
653
+ # @return [String]
654
+ attr_accessor :expression
655
+
656
+ # Optional. String indicating the location of the expression for error reporting,
657
+ # e.g. a file name and a position in the file.
658
+ # Corresponds to the JSON property `location`
659
+ # @return [String]
660
+ attr_accessor :location
661
+
662
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
663
+ # This can be used e.g. in UIs which allow to enter the expression.
664
+ # Corresponds to the JSON property `title`
665
+ # @return [String]
666
+ attr_accessor :title
667
+
668
+ def initialize(**args)
669
+ update!(**args)
670
+ end
671
+
672
+ # Update properties of this object
673
+ def update!(**args)
674
+ @description = args[:description] if args.key?(:description)
675
+ @expression = args[:expression] if args.key?(:expression)
676
+ @location = args[:location] if args.key?(:location)
677
+ @title = args[:title] if args.key?(:title)
678
+ end
679
+ end
680
+
681
+ # A Cloud Storage location.
682
+ class GcsDestination
683
+ include Google::Apis::Core::Hashable
684
+
685
+ # The uri of the Cloud Storage object. It's the same uri that is used by gsutil.
686
+ # Example: "gs://bucket_name/object_name". See [Viewing and Editing Object
687
+ # Metadata](https://cloud.google.com/storage/docs/viewing-editing-metadata) for
688
+ # more information. In the case of scheduled export, a path indiciating when the
689
+ # export happens will be added in between the bucket_name and object_name. For
690
+ # example: the real destination for an scheduled snapshot is: gs://bucket_name/`
691
+ # YYYY`/`MM`/`DD`/snapshot/`HHMMSS`/file
692
+ # Corresponds to the JSON property `uri`
693
+ # @return [String]
694
+ attr_accessor :uri
695
+
696
+ # The uri prefix of all generated Cloud Storage objects. Example: "gs://
697
+ # bucket_name/object_name_prefix". Each object uri is in format: "gs://
698
+ # bucket_name/object_name_prefix/`ASSET_TYPE`/`SHARD_NUMBER` and only contains
699
+ # assets for that type. starts from 0. Example: "gs://bucket_name/
700
+ # object_name_prefix/compute.googleapis.com/Disk/0" is the first shard of output
701
+ # objects containing all compute.googleapis.com/Disk assets. An INVALID_ARGUMENT
702
+ # error will be returned if file with the same name "gs://bucket_name/
703
+ # object_name_prefix" already exists. In the case of scheduled export, a path
704
+ # indiciating when the export happens will be appended. For example: the real
705
+ # destination for an scheduled snapshot is: gs://bucket_name/object_name_prefix/`
706
+ # YYYY`/`MM`/`DD`/snapshot/`HHMMSS`/`ASSET_TYPE`/`SHARD_NUMBER`
707
+ # Corresponds to the JSON property `uriPrefix`
708
+ # @return [String]
709
+ attr_accessor :uri_prefix
710
+
711
+ def initialize(**args)
712
+ update!(**args)
713
+ end
714
+
715
+ # Update properties of this object
716
+ def update!(**args)
717
+ @uri = args[:uri] if args.key?(:uri)
718
+ @uri_prefix = args[:uri_prefix] if args.key?(:uri_prefix)
719
+ end
720
+ end
721
+
722
+ # Setting for scheduled export to GCS.
723
+ class GcsSetting
724
+ include Google::Apis::Core::Hashable
725
+
726
+ # A Cloud Storage location.
727
+ # Corresponds to the JSON property `destination`
728
+ # @return [Google::Apis::CloudassetV1p7beta1::GcsDestination]
729
+ attr_accessor :destination
730
+
731
+ # Schedule for scheduled export. This is used to configure scheduled export for
732
+ # both GCS and BigQuery.
733
+ # Corresponds to the JSON property `snapshotSchedule`
734
+ # @return [Google::Apis::CloudassetV1p7beta1::ScheduleConfig]
735
+ attr_accessor :snapshot_schedule
736
+
737
+ def initialize(**args)
738
+ update!(**args)
739
+ end
740
+
741
+ # Update properties of this object
742
+ def update!(**args)
743
+ @destination = args[:destination] if args.key?(:destination)
744
+ @snapshot_schedule = args[:snapshot_schedule] if args.key?(:snapshot_schedule)
745
+ end
746
+ end
747
+
748
+ # Used in `policy_type` to specify how `boolean_policy` will behave at this
749
+ # resource.
750
+ class GoogleCloudOrgpolicyV1BooleanPolicy
751
+ include Google::Apis::Core::Hashable
752
+
753
+ # If `true`, then the `Policy` is enforced. If `false`, then any configuration
754
+ # is acceptable. Suppose you have a `Constraint` `constraints/compute.
755
+ # disableSerialPortAccess` with `constraint_default` set to `ALLOW`. A `Policy`
756
+ # for that `Constraint` exhibits the following behavior: - If the `Policy` at
757
+ # this resource has enforced set to `false`, serial port connection attempts
758
+ # will be allowed. - If the `Policy` at this resource has enforced set to `true`,
759
+ # serial port connection attempts will be refused. - If the `Policy` at this
760
+ # resource is `RestoreDefault`, serial port connection attempts will be allowed.
761
+ # - If no `Policy` is set at this resource or anywhere higher in the resource
762
+ # hierarchy, serial port connection attempts will be allowed. - If no `Policy`
763
+ # is set at this resource, but one exists higher in the resource hierarchy, the
764
+ # behavior is as if the`Policy` were set at this resource. The following
765
+ # examples demonstrate the different possible layerings: Example 1 (nearest `
766
+ # Constraint` wins): `organizations/foo` has a `Policy` with: `enforced: false` `
767
+ # projects/bar` has no `Policy` set. The constraint at `projects/bar` and `
768
+ # organizations/foo` will not be enforced. Example 2 (enforcement gets replaced):
769
+ # `organizations/foo` has a `Policy` with: `enforced: false` `projects/bar` has
770
+ # a `Policy` with: `enforced: true` The constraint at `organizations/foo` is not
771
+ # enforced. The constraint at `projects/bar` is enforced. Example 3 (
772
+ # RestoreDefault): `organizations/foo` has a `Policy` with: `enforced: true` `
773
+ # projects/bar` has a `Policy` with: `RestoreDefault: ``` The constraint at `
774
+ # organizations/foo` is enforced. The constraint at `projects/bar` is not
775
+ # enforced, because `constraint_default` for the `Constraint` is `ALLOW`.
776
+ # Corresponds to the JSON property `enforced`
777
+ # @return [Boolean]
778
+ attr_accessor :enforced
779
+ alias_method :enforced?, :enforced
780
+
781
+ def initialize(**args)
782
+ update!(**args)
783
+ end
784
+
785
+ # Update properties of this object
786
+ def update!(**args)
787
+ @enforced = args[:enforced] if args.key?(:enforced)
788
+ end
789
+ end
790
+
791
+ # Used in `policy_type` to specify how `list_policy` behaves at this resource. `
792
+ # ListPolicy` can define specific values and subtrees of Cloud Resource Manager
793
+ # resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed
794
+ # or denied by setting the `allowed_values` and `denied_values` fields. This is
795
+ # achieved by using the `under:` and optional `is:` prefixes. The `under:`
796
+ # prefix is used to denote resource subtree values. The `is:` prefix is used to
797
+ # denote specific values, and is required only if the value contains a ":".
798
+ # Values prefixed with "is:" are treated the same as values with no prefix.
799
+ # Ancestry subtrees must be in one of the following formats: - "projects/", e.g.
800
+ # "projects/tokyo-rain-123" - "folders/", e.g. "folders/1234" - "organizations/",
801
+ # e.g. "organizations/1234" The `supports_under` field of the associated `
802
+ # Constraint` defines whether ancestry prefixes can be used. You can set `
803
+ # allowed_values` and `denied_values` in the same `Policy` if `all_values` is `
804
+ # ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all
805
+ # values. If `all_values` is set to either `ALLOW` or `DENY`, `allowed_values`
806
+ # and `denied_values` must be unset.
807
+ class GoogleCloudOrgpolicyV1ListPolicy
808
+ include Google::Apis::Core::Hashable
809
+
810
+ # The policy all_values state.
811
+ # Corresponds to the JSON property `allValues`
812
+ # @return [String]
813
+ attr_accessor :all_values
814
+
815
+ # List of values allowed at this resource. Can only be set if `all_values` is
816
+ # set to `ALL_VALUES_UNSPECIFIED`.
817
+ # Corresponds to the JSON property `allowedValues`
818
+ # @return [Array<String>]
819
+ attr_accessor :allowed_values
820
+
821
+ # List of values denied at this resource. Can only be set if `all_values` is set
822
+ # to `ALL_VALUES_UNSPECIFIED`.
823
+ # Corresponds to the JSON property `deniedValues`
824
+ # @return [Array<String>]
825
+ attr_accessor :denied_values
826
+
827
+ # Determines the inheritance behavior for this `Policy`. By default, a `
828
+ # ListPolicy` set at a resource supersedes any `Policy` set anywhere up the
829
+ # resource hierarchy. However, if `inherit_from_parent` is set to `true`, then
830
+ # the values from the effective `Policy` of the parent resource are inherited,
831
+ # meaning the values set in this `Policy` are added to the values inherited up
832
+ # the hierarchy. Setting `Policy` hierarchies that inherit both allowed values
833
+ # and denied values isn't recommended in most circumstances to keep the
834
+ # configuration simple and understandable. However, it is possible to set a `
835
+ # Policy` with `allowed_values` set that inherits a `Policy` with `denied_values`
836
+ # set. In this case, the values that are allowed must be in `allowed_values`
837
+ # and not present in `denied_values`. For example, suppose you have a `
838
+ # Constraint` `constraints/serviceuser.services`, which has a `constraint_type`
839
+ # of `list_constraint`, and with `constraint_default` set to `ALLOW`. Suppose
840
+ # that at the Organization level, a `Policy` is applied that restricts the
841
+ # allowed API activations to ``E1`, `E2``. Then, if a `Policy` is applied to a
842
+ # project below the Organization that has `inherit_from_parent` set to `false`
843
+ # and field all_values set to DENY, then an attempt to activate any API will be
844
+ # denied. The following examples demonstrate different possible layerings for `
845
+ # projects/bar` parented by `organizations/foo`: Example 1 (no inherited values):
846
+ # `organizations/foo` has a `Policy` with values: `allowed_values: "E1"
847
+ # allowed_values:"E2"` `projects/bar` has `inherit_from_parent` `false` and
848
+ # values: `allowed_values: "E3" allowed_values: "E4"` The accepted values at `
849
+ # organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are `
850
+ # E3`, and `E4`. Example 2 (inherited values): `organizations/foo` has a `Policy`
851
+ # with values: `allowed_values: "E1" allowed_values:"E2"` `projects/bar` has a `
852
+ # Policy` with values: `value: "E3" value: "E4" inherit_from_parent: true` The
853
+ # accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `
854
+ # projects/bar` are `E1`, `E2`, `E3`, and `E4`. Example 3 (inheriting both
855
+ # allowed and denied values): `organizations/foo` has a `Policy` with values: `
856
+ # allowed_values: "E1" allowed_values: "E2"` `projects/bar` has a `Policy` with:
857
+ # `denied_values: "E1"` The accepted values at `organizations/foo` are `E1`, `E2`
858
+ # . The value accepted at `projects/bar` is `E2`. Example 4 (RestoreDefault): `
859
+ # organizations/foo` has a `Policy` with values: `allowed_values: "E1"
860
+ # allowed_values:"E2"` `projects/bar` has a `Policy` with values: `
861
+ # RestoreDefault: ``` The accepted values at `organizations/foo` are `E1`, `E2`.
862
+ # The accepted values at `projects/bar` are either all or none depending on the
863
+ # value of `constraint_default` (if `ALLOW`, all; if `DENY`, none). Example 5 (
864
+ # no policy inherits parent policy): `organizations/foo` has no `Policy` set. `
865
+ # projects/bar` has no `Policy` set. The accepted values at both levels are
866
+ # either all or none depending on the value of `constraint_default` (if `ALLOW`,
867
+ # all; if `DENY`, none). Example 6 (ListConstraint allowing all): `organizations/
868
+ # foo` has a `Policy` with values: `allowed_values: "E1" allowed_values: "E2"` `
869
+ # projects/bar` has a `Policy` with: `all: ALLOW` The accepted values at `
870
+ # organizations/foo` are `E1`, E2`. Any value is accepted at `projects/bar`.
871
+ # Example 7 (ListConstraint allowing none): `organizations/foo` has a `Policy`
872
+ # with values: `allowed_values: "E1" allowed_values: "E2"` `projects/bar` has a `
873
+ # Policy` with: `all: DENY` The accepted values at `organizations/foo` are `E1`,
874
+ # E2`. No value is accepted at `projects/bar`. Example 10 (allowed and denied
875
+ # subtrees of Resource Manager hierarchy): Given the following resource
876
+ # hierarchy O1->`F1, F2`; F1->`P1`; F2->`P2, P3`, `organizations/foo` has a `
877
+ # Policy` with values: `allowed_values: "under:organizations/O1"` `projects/bar`
878
+ # has a `Policy` with: `allowed_values: "under:projects/P3"` `denied_values: "
879
+ # under:folders/F2"` The accepted values at `organizations/foo` are `
880
+ # organizations/O1`, `folders/F1`, `folders/F2`, `projects/P1`, `projects/P2`, `
881
+ # projects/P3`. The accepted values at `projects/bar` are `organizations/O1`, `
882
+ # folders/F1`, `projects/P1`.
883
+ # Corresponds to the JSON property `inheritFromParent`
884
+ # @return [Boolean]
885
+ attr_accessor :inherit_from_parent
886
+ alias_method :inherit_from_parent?, :inherit_from_parent
887
+
888
+ # Optional. The Google Cloud Console will try to default to a configuration that
889
+ # matches the value specified in this `Policy`. If `suggested_value` is not set,
890
+ # it will inherit the value specified higher in the hierarchy, unless `
891
+ # inherit_from_parent` is `false`.
892
+ # Corresponds to the JSON property `suggestedValue`
893
+ # @return [String]
894
+ attr_accessor :suggested_value
895
+
896
+ def initialize(**args)
897
+ update!(**args)
898
+ end
899
+
900
+ # Update properties of this object
901
+ def update!(**args)
902
+ @all_values = args[:all_values] if args.key?(:all_values)
903
+ @allowed_values = args[:allowed_values] if args.key?(:allowed_values)
904
+ @denied_values = args[:denied_values] if args.key?(:denied_values)
905
+ @inherit_from_parent = args[:inherit_from_parent] if args.key?(:inherit_from_parent)
906
+ @suggested_value = args[:suggested_value] if args.key?(:suggested_value)
907
+ end
908
+ end
909
+
910
+ # Defines a Cloud Organization `Policy` which is used to specify `Constraints`
911
+ # for configurations of Cloud Platform resources.
912
+ class GoogleCloudOrgpolicyV1Policy
913
+ include Google::Apis::Core::Hashable
914
+
915
+ # Used in `policy_type` to specify how `boolean_policy` will behave at this
916
+ # resource.
917
+ # Corresponds to the JSON property `booleanPolicy`
918
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1BooleanPolicy]
919
+ attr_accessor :boolean_policy
920
+
921
+ # The name of the `Constraint` the `Policy` is configuring, for example, `
922
+ # constraints/serviceuser.services`. A [list of available constraints](/resource-
923
+ # manager/docs/organization-policy/org-policy-constraints) is available.
924
+ # Immutable after creation.
925
+ # Corresponds to the JSON property `constraint`
926
+ # @return [String]
927
+ attr_accessor :constraint
928
+
929
+ # An opaque tag indicating the current version of the `Policy`, used for
930
+ # concurrency control. When the `Policy` is returned from either a `GetPolicy`
931
+ # or a `ListOrgPolicy` request, this `etag` indicates the version of the current
932
+ # `Policy` to use when executing a read-modify-write loop. When the `Policy` is
933
+ # returned from a `GetEffectivePolicy` request, the `etag` will be unset. When
934
+ # the `Policy` is used in a `SetOrgPolicy` method, use the `etag` value that was
935
+ # returned from a `GetOrgPolicy` request as part of a read-modify-write loop for
936
+ # concurrency control. Not setting the `etag`in a `SetOrgPolicy` request will
937
+ # result in an unconditional write of the `Policy`.
938
+ # Corresponds to the JSON property `etag`
939
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
940
+ # @return [String]
941
+ attr_accessor :etag
942
+
943
+ # Used in `policy_type` to specify how `list_policy` behaves at this resource. `
944
+ # ListPolicy` can define specific values and subtrees of Cloud Resource Manager
945
+ # resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed
946
+ # or denied by setting the `allowed_values` and `denied_values` fields. This is
947
+ # achieved by using the `under:` and optional `is:` prefixes. The `under:`
948
+ # prefix is used to denote resource subtree values. The `is:` prefix is used to
949
+ # denote specific values, and is required only if the value contains a ":".
950
+ # Values prefixed with "is:" are treated the same as values with no prefix.
951
+ # Ancestry subtrees must be in one of the following formats: - "projects/", e.g.
952
+ # "projects/tokyo-rain-123" - "folders/", e.g. "folders/1234" - "organizations/",
953
+ # e.g. "organizations/1234" The `supports_under` field of the associated `
954
+ # Constraint` defines whether ancestry prefixes can be used. You can set `
955
+ # allowed_values` and `denied_values` in the same `Policy` if `all_values` is `
956
+ # ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all
957
+ # values. If `all_values` is set to either `ALLOW` or `DENY`, `allowed_values`
958
+ # and `denied_values` must be unset.
959
+ # Corresponds to the JSON property `listPolicy`
960
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1ListPolicy]
961
+ attr_accessor :list_policy
962
+
963
+ # Ignores policies set above this resource and restores the `constraint_default`
964
+ # enforcement behavior of the specific `Constraint` at this resource. Suppose
965
+ # that `constraint_default` is set to `ALLOW` for the `Constraint` `constraints/
966
+ # serviceuser.services`. Suppose that organization foo.com sets a `Policy` at
967
+ # their Organization resource node that restricts the allowed service
968
+ # activations to deny all service activations. They could then set a `Policy`
969
+ # with the `policy_type` `restore_default` on several experimental projects,
970
+ # restoring the `constraint_default` enforcement of the `Constraint` for only
971
+ # those projects, allowing those projects to have all services activated.
972
+ # Corresponds to the JSON property `restoreDefault`
973
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleCloudOrgpolicyV1RestoreDefault]
974
+ attr_accessor :restore_default
975
+
976
+ # The time stamp the `Policy` was previously updated. This is set by the server,
977
+ # not specified by the caller, and represents the last time a call to `
978
+ # SetOrgPolicy` was made for that `Policy`. Any value set by the client will be
979
+ # ignored.
980
+ # Corresponds to the JSON property `updateTime`
981
+ # @return [String]
982
+ attr_accessor :update_time
983
+
984
+ # Version of the `Policy`. Default version is 0;
985
+ # Corresponds to the JSON property `version`
986
+ # @return [Fixnum]
987
+ attr_accessor :version
988
+
989
+ def initialize(**args)
990
+ update!(**args)
991
+ end
992
+
993
+ # Update properties of this object
994
+ def update!(**args)
995
+ @boolean_policy = args[:boolean_policy] if args.key?(:boolean_policy)
996
+ @constraint = args[:constraint] if args.key?(:constraint)
997
+ @etag = args[:etag] if args.key?(:etag)
998
+ @list_policy = args[:list_policy] if args.key?(:list_policy)
999
+ @restore_default = args[:restore_default] if args.key?(:restore_default)
1000
+ @update_time = args[:update_time] if args.key?(:update_time)
1001
+ @version = args[:version] if args.key?(:version)
1002
+ end
1003
+ end
1004
+
1005
+ # Ignores policies set above this resource and restores the `constraint_default`
1006
+ # enforcement behavior of the specific `Constraint` at this resource. Suppose
1007
+ # that `constraint_default` is set to `ALLOW` for the `Constraint` `constraints/
1008
+ # serviceuser.services`. Suppose that organization foo.com sets a `Policy` at
1009
+ # their Organization resource node that restricts the allowed service
1010
+ # activations to deny all service activations. They could then set a `Policy`
1011
+ # with the `policy_type` `restore_default` on several experimental projects,
1012
+ # restoring the `constraint_default` enforcement of the `Constraint` for only
1013
+ # those projects, allowing those projects to have all services activated.
1014
+ class GoogleCloudOrgpolicyV1RestoreDefault
1015
+ include Google::Apis::Core::Hashable
1016
+
1017
+ def initialize(**args)
1018
+ update!(**args)
1019
+ end
1020
+
1021
+ # Update properties of this object
1022
+ def update!(**args)
1023
+ end
1024
+ end
1025
+
1026
+ # An `AccessLevel` is a label that can be applied to requests to Google Cloud
1027
+ # services, along with a list of requirements necessary for the label to be
1028
+ # applied.
1029
+ class GoogleIdentityAccesscontextmanagerV1AccessLevel
1030
+ include Google::Apis::Core::Hashable
1031
+
1032
+ # `BasicLevel` is an `AccessLevel` using a set of recommended features.
1033
+ # Corresponds to the JSON property `basic`
1034
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1BasicLevel]
1035
+ attr_accessor :basic
1036
+
1037
+ # `CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language
1038
+ # to represent the necessary conditions for the level to apply to a request. See
1039
+ # CEL spec at: https://github.com/google/cel-spec
1040
+ # Corresponds to the JSON property `custom`
1041
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1CustomLevel]
1042
+ attr_accessor :custom
1043
+
1044
+ # Description of the `AccessLevel` and its use. Does not affect behavior.
1045
+ # Corresponds to the JSON property `description`
1046
+ # @return [String]
1047
+ attr_accessor :description
1048
+
1049
+ # Required. Resource name for the Access Level. The `short_name` component must
1050
+ # begin with a letter and only include alphanumeric and '_'. Format: `
1051
+ # accessPolicies/`policy_id`/accessLevels/`short_name``. The maximum length of
1052
+ # the `short_name` component is 50 characters.
1053
+ # Corresponds to the JSON property `name`
1054
+ # @return [String]
1055
+ attr_accessor :name
1056
+
1057
+ # Human readable title. Must be unique within the Policy.
1058
+ # Corresponds to the JSON property `title`
1059
+ # @return [String]
1060
+ attr_accessor :title
1061
+
1062
+ def initialize(**args)
1063
+ update!(**args)
1064
+ end
1065
+
1066
+ # Update properties of this object
1067
+ def update!(**args)
1068
+ @basic = args[:basic] if args.key?(:basic)
1069
+ @custom = args[:custom] if args.key?(:custom)
1070
+ @description = args[:description] if args.key?(:description)
1071
+ @name = args[:name] if args.key?(:name)
1072
+ @title = args[:title] if args.key?(:title)
1073
+ end
1074
+ end
1075
+
1076
+ # `AccessPolicy` is a container for `AccessLevels` (which define the necessary
1077
+ # attributes to use Google Cloud services) and `ServicePerimeters` (which define
1078
+ # regions of services able to freely pass data within a perimeter). An access
1079
+ # policy is globally visible within an organization, and the restrictions it
1080
+ # specifies apply to all projects within an organization.
1081
+ class GoogleIdentityAccesscontextmanagerV1AccessPolicy
1082
+ include Google::Apis::Core::Hashable
1083
+
1084
+ # Output only. An opaque identifier for the current version of the `AccessPolicy`
1085
+ # . This will always be a strongly validated etag, meaning that two Access
1086
+ # Polices will be identical if and only if their etags are identical. Clients
1087
+ # should not expect this to be in any specific format.
1088
+ # Corresponds to the JSON property `etag`
1089
+ # @return [String]
1090
+ attr_accessor :etag
1091
+
1092
+ # Output only. Resource name of the `AccessPolicy`. Format: `accessPolicies/`
1093
+ # policy_id``
1094
+ # Corresponds to the JSON property `name`
1095
+ # @return [String]
1096
+ attr_accessor :name
1097
+
1098
+ # Required. The parent of this `AccessPolicy` in the Cloud Resource Hierarchy.
1099
+ # Currently immutable once created. Format: `organizations/`organization_id``
1100
+ # Corresponds to the JSON property `parent`
1101
+ # @return [String]
1102
+ attr_accessor :parent
1103
+
1104
+ # Required. Human readable title. Does not affect behavior.
1105
+ # Corresponds to the JSON property `title`
1106
+ # @return [String]
1107
+ attr_accessor :title
1108
+
1109
+ def initialize(**args)
1110
+ update!(**args)
1111
+ end
1112
+
1113
+ # Update properties of this object
1114
+ def update!(**args)
1115
+ @etag = args[:etag] if args.key?(:etag)
1116
+ @name = args[:name] if args.key?(:name)
1117
+ @parent = args[:parent] if args.key?(:parent)
1118
+ @title = args[:title] if args.key?(:title)
1119
+ end
1120
+ end
1121
+
1122
+ # Identification for an API Operation.
1123
+ class GoogleIdentityAccesscontextmanagerV1ApiOperation
1124
+ include Google::Apis::Core::Hashable
1125
+
1126
+ # API methods or permissions to allow. Method or permission must belong to the
1127
+ # service specified by `service_name` field. A single MethodSelector entry with `
1128
+ # *` specified for the `method` field will allow all methods AND permissions for
1129
+ # the service specified in `service_name`.
1130
+ # Corresponds to the JSON property `methodSelectors`
1131
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1MethodSelector>]
1132
+ attr_accessor :method_selectors
1133
+
1134
+ # The name of the API whose methods or permissions the IngressPolicy or
1135
+ # EgressPolicy want to allow. A single ApiOperation with `service_name` field
1136
+ # set to `*` will allow all methods AND permissions for all services.
1137
+ # Corresponds to the JSON property `serviceName`
1138
+ # @return [String]
1139
+ attr_accessor :service_name
1140
+
1141
+ def initialize(**args)
1142
+ update!(**args)
1143
+ end
1144
+
1145
+ # Update properties of this object
1146
+ def update!(**args)
1147
+ @method_selectors = args[:method_selectors] if args.key?(:method_selectors)
1148
+ @service_name = args[:service_name] if args.key?(:service_name)
1149
+ end
1150
+ end
1151
+
1152
+ # `BasicLevel` is an `AccessLevel` using a set of recommended features.
1153
+ class GoogleIdentityAccesscontextmanagerV1BasicLevel
1154
+ include Google::Apis::Core::Hashable
1155
+
1156
+ # How the `conditions` list should be combined to determine if a request is
1157
+ # granted this `AccessLevel`. If AND is used, each `Condition` in `conditions`
1158
+ # must be satisfied for the `AccessLevel` to be applied. If OR is used, at least
1159
+ # one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be
1160
+ # applied. Default behavior is AND.
1161
+ # Corresponds to the JSON property `combiningFunction`
1162
+ # @return [String]
1163
+ attr_accessor :combining_function
1164
+
1165
+ # Required. A list of requirements for the `AccessLevel` to be granted.
1166
+ # Corresponds to the JSON property `conditions`
1167
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1Condition>]
1168
+ attr_accessor :conditions
1169
+
1170
+ def initialize(**args)
1171
+ update!(**args)
1172
+ end
1173
+
1174
+ # Update properties of this object
1175
+ def update!(**args)
1176
+ @combining_function = args[:combining_function] if args.key?(:combining_function)
1177
+ @conditions = args[:conditions] if args.key?(:conditions)
1178
+ end
1179
+ end
1180
+
1181
+ # A condition necessary for an `AccessLevel` to be granted. The Condition is an
1182
+ # AND over its fields. So a Condition is true if: 1) the request IP is from one
1183
+ # of the listed subnetworks AND 2) the originating device complies with the
1184
+ # listed device policy AND 3) all listed access levels are granted AND 4) the
1185
+ # request was sent at a time allowed by the DateTimeRestriction.
1186
+ class GoogleIdentityAccesscontextmanagerV1Condition
1187
+ include Google::Apis::Core::Hashable
1188
+
1189
+ # `DevicePolicy` specifies device specific restrictions necessary to acquire a
1190
+ # given access level. A `DevicePolicy` specifies requirements for requests from
1191
+ # devices to be granted access levels, it does not do any enforcement on the
1192
+ # device. `DevicePolicy` acts as an AND over all specified fields, and each
1193
+ # repeated field is an OR over its elements. Any unset fields are ignored. For
1194
+ # example, if the proto is ` os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX,
1195
+ # encryption_status: ENCRYPTED`, then the DevicePolicy will be true for requests
1196
+ # originating from encrypted Linux desktops and encrypted Windows desktops.
1197
+ # Corresponds to the JSON property `devicePolicy`
1198
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1DevicePolicy]
1199
+ attr_accessor :device_policy
1200
+
1201
+ # CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for a
1202
+ # CIDR IP address block, the specified IP address portion must be properly
1203
+ # truncated (i.e. all the host bits must be zero) or the input is considered
1204
+ # malformed. For example, "192.0.2.0/24" is accepted but "192.0.2.1/24" is not.
1205
+ # Similarly, for IPv6, "2001:db8::/32" is accepted whereas "2001:db8::1/32" is
1206
+ # not. The originating IP of a request must be in one of the listed subnets in
1207
+ # order for this Condition to be true. If empty, all IP addresses are allowed.
1208
+ # Corresponds to the JSON property `ipSubnetworks`
1209
+ # @return [Array<String>]
1210
+ attr_accessor :ip_subnetworks
1211
+
1212
+ # The request must be made by one of the provided user or service accounts.
1213
+ # Groups are not supported. Syntax: `user:`emailid`` `serviceAccount:`emailid``
1214
+ # If not specified, a request may come from any user.
1215
+ # Corresponds to the JSON property `members`
1216
+ # @return [Array<String>]
1217
+ attr_accessor :members
1218
+
1219
+ # Whether to negate the Condition. If true, the Condition becomes a NAND over
1220
+ # its non-empty fields, each field must be false for the Condition overall to be
1221
+ # satisfied. Defaults to false.
1222
+ # Corresponds to the JSON property `negate`
1223
+ # @return [Boolean]
1224
+ attr_accessor :negate
1225
+ alias_method :negate?, :negate
1226
+
1227
+ # The request must originate from one of the provided countries/regions. Must be
1228
+ # valid ISO 3166-1 alpha-2 codes.
1229
+ # Corresponds to the JSON property `regions`
1230
+ # @return [Array<String>]
1231
+ attr_accessor :regions
1232
+
1233
+ # A list of other access levels defined in the same `Policy`, referenced by
1234
+ # resource name. Referencing an `AccessLevel` which does not exist is an error.
1235
+ # All access levels listed must be granted for the Condition to be true. Example:
1236
+ # "`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME"`
1237
+ # Corresponds to the JSON property `requiredAccessLevels`
1238
+ # @return [Array<String>]
1239
+ attr_accessor :required_access_levels
1240
+
1241
+ def initialize(**args)
1242
+ update!(**args)
1243
+ end
1244
+
1245
+ # Update properties of this object
1246
+ def update!(**args)
1247
+ @device_policy = args[:device_policy] if args.key?(:device_policy)
1248
+ @ip_subnetworks = args[:ip_subnetworks] if args.key?(:ip_subnetworks)
1249
+ @members = args[:members] if args.key?(:members)
1250
+ @negate = args[:negate] if args.key?(:negate)
1251
+ @regions = args[:regions] if args.key?(:regions)
1252
+ @required_access_levels = args[:required_access_levels] if args.key?(:required_access_levels)
1253
+ end
1254
+ end
1255
+
1256
+ # `CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language
1257
+ # to represent the necessary conditions for the level to apply to a request. See
1258
+ # CEL spec at: https://github.com/google/cel-spec
1259
+ class GoogleIdentityAccesscontextmanagerV1CustomLevel
1260
+ include Google::Apis::Core::Hashable
1261
+
1262
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
1263
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
1264
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
1265
+ # "Summary size limit" description: "Determines if a summary is less than 100
1266
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
1267
+ # Requestor is owner" description: "Determines if requestor is the document
1268
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
1269
+ # Logic): title: "Public documents" description: "Determine whether the document
1270
+ # should be publicly visible" expression: "document.type != 'private' &&
1271
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
1272
+ # string" description: "Create a notification string with a timestamp."
1273
+ # expression: "'New message received at ' + string(document.create_time)" The
1274
+ # exact variables and functions that may be referenced within an expression are
1275
+ # determined by the service that evaluates it. See the service documentation for
1276
+ # additional information.
1277
+ # Corresponds to the JSON property `expr`
1278
+ # @return [Google::Apis::CloudassetV1p7beta1::Expr]
1279
+ attr_accessor :expr
1280
+
1281
+ def initialize(**args)
1282
+ update!(**args)
1283
+ end
1284
+
1285
+ # Update properties of this object
1286
+ def update!(**args)
1287
+ @expr = args[:expr] if args.key?(:expr)
1288
+ end
1289
+ end
1290
+
1291
+ # `DevicePolicy` specifies device specific restrictions necessary to acquire a
1292
+ # given access level. A `DevicePolicy` specifies requirements for requests from
1293
+ # devices to be granted access levels, it does not do any enforcement on the
1294
+ # device. `DevicePolicy` acts as an AND over all specified fields, and each
1295
+ # repeated field is an OR over its elements. Any unset fields are ignored. For
1296
+ # example, if the proto is ` os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX,
1297
+ # encryption_status: ENCRYPTED`, then the DevicePolicy will be true for requests
1298
+ # originating from encrypted Linux desktops and encrypted Windows desktops.
1299
+ class GoogleIdentityAccesscontextmanagerV1DevicePolicy
1300
+ include Google::Apis::Core::Hashable
1301
+
1302
+ # Allowed device management levels, an empty list allows all management levels.
1303
+ # Corresponds to the JSON property `allowedDeviceManagementLevels`
1304
+ # @return [Array<String>]
1305
+ attr_accessor :allowed_device_management_levels
1306
+
1307
+ # Allowed encryptions statuses, an empty list allows all statuses.
1308
+ # Corresponds to the JSON property `allowedEncryptionStatuses`
1309
+ # @return [Array<String>]
1310
+ attr_accessor :allowed_encryption_statuses
1311
+
1312
+ # Allowed OS versions, an empty list allows all types and all versions.
1313
+ # Corresponds to the JSON property `osConstraints`
1314
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1OsConstraint>]
1315
+ attr_accessor :os_constraints
1316
+
1317
+ # Whether the device needs to be approved by the customer admin.
1318
+ # Corresponds to the JSON property `requireAdminApproval`
1319
+ # @return [Boolean]
1320
+ attr_accessor :require_admin_approval
1321
+ alias_method :require_admin_approval?, :require_admin_approval
1322
+
1323
+ # Whether the device needs to be corp owned.
1324
+ # Corresponds to the JSON property `requireCorpOwned`
1325
+ # @return [Boolean]
1326
+ attr_accessor :require_corp_owned
1327
+ alias_method :require_corp_owned?, :require_corp_owned
1328
+
1329
+ # Whether or not screenlock is required for the DevicePolicy to be true.
1330
+ # Defaults to `false`.
1331
+ # Corresponds to the JSON property `requireScreenlock`
1332
+ # @return [Boolean]
1333
+ attr_accessor :require_screenlock
1334
+ alias_method :require_screenlock?, :require_screenlock
1335
+
1336
+ def initialize(**args)
1337
+ update!(**args)
1338
+ end
1339
+
1340
+ # Update properties of this object
1341
+ def update!(**args)
1342
+ @allowed_device_management_levels = args[:allowed_device_management_levels] if args.key?(:allowed_device_management_levels)
1343
+ @allowed_encryption_statuses = args[:allowed_encryption_statuses] if args.key?(:allowed_encryption_statuses)
1344
+ @os_constraints = args[:os_constraints] if args.key?(:os_constraints)
1345
+ @require_admin_approval = args[:require_admin_approval] if args.key?(:require_admin_approval)
1346
+ @require_corp_owned = args[:require_corp_owned] if args.key?(:require_corp_owned)
1347
+ @require_screenlock = args[:require_screenlock] if args.key?(:require_screenlock)
1348
+ end
1349
+ end
1350
+
1351
+ # Defines the conditions under which an EgressPolicy matches a request.
1352
+ # Conditions based on information about the source of the request. Note that if
1353
+ # the destination of the request is protected by a ServicePerimeter, then that
1354
+ # ServicePerimeter must have an IngressPolicy which allows access in order for
1355
+ # this request to succeed.
1356
+ class GoogleIdentityAccesscontextmanagerV1EgressFrom
1357
+ include Google::Apis::Core::Hashable
1358
+
1359
+ # A list of identities that are allowed access through this [EgressPolicy].
1360
+ # Should be in the format of email address. The email address should represent
1361
+ # individual user or service account only.
1362
+ # Corresponds to the JSON property `identities`
1363
+ # @return [Array<String>]
1364
+ attr_accessor :identities
1365
+
1366
+ # Specifies the type of identities that are allowed access to outside the
1367
+ # perimeter. If left unspecified, then members of `identities` field will be
1368
+ # allowed access.
1369
+ # Corresponds to the JSON property `identityType`
1370
+ # @return [String]
1371
+ attr_accessor :identity_type
1372
+
1373
+ def initialize(**args)
1374
+ update!(**args)
1375
+ end
1376
+
1377
+ # Update properties of this object
1378
+ def update!(**args)
1379
+ @identities = args[:identities] if args.key?(:identities)
1380
+ @identity_type = args[:identity_type] if args.key?(:identity_type)
1381
+ end
1382
+ end
1383
+
1384
+ # Policy for egress from perimeter. EgressPolicies match requests based on `
1385
+ # egress_from` and `egress_to` stanzas. For an EgressPolicy to match, both `
1386
+ # egress_from` and `egress_to` stanzas must be matched. If an EgressPolicy
1387
+ # matches a request, the request is allowed to span the ServicePerimeter
1388
+ # boundary. For example, an EgressPolicy can be used to allow VMs on networks
1389
+ # within the ServicePerimeter to access a defined set of projects outside the
1390
+ # perimeter in certain contexts (e.g. to read data from a Cloud Storage bucket
1391
+ # or query against a BigQuery dataset). EgressPolicies are concerned with the *
1392
+ # resources* that a request relates as well as the API services and API actions
1393
+ # being used. They do not related to the direction of data movement. More
1394
+ # detailed documentation for this concept can be found in the descriptions of
1395
+ # EgressFrom and EgressTo.
1396
+ class GoogleIdentityAccesscontextmanagerV1EgressPolicy
1397
+ include Google::Apis::Core::Hashable
1398
+
1399
+ # Defines the conditions under which an EgressPolicy matches a request.
1400
+ # Conditions based on information about the source of the request. Note that if
1401
+ # the destination of the request is protected by a ServicePerimeter, then that
1402
+ # ServicePerimeter must have an IngressPolicy which allows access in order for
1403
+ # this request to succeed.
1404
+ # Corresponds to the JSON property `egressFrom`
1405
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1EgressFrom]
1406
+ attr_accessor :egress_from
1407
+
1408
+ # Defines the conditions under which an EgressPolicy matches a request.
1409
+ # Conditions are based on information about the ApiOperation intended to be
1410
+ # performed on the `resources` specified. Note that if the destination of the
1411
+ # request is protected by a ServicePerimeter, then that ServicePerimeter must
1412
+ # have an IngressPolicy which allows access in order for this request to succeed.
1413
+ # Corresponds to the JSON property `egressTo`
1414
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1EgressTo]
1415
+ attr_accessor :egress_to
1416
+
1417
+ def initialize(**args)
1418
+ update!(**args)
1419
+ end
1420
+
1421
+ # Update properties of this object
1422
+ def update!(**args)
1423
+ @egress_from = args[:egress_from] if args.key?(:egress_from)
1424
+ @egress_to = args[:egress_to] if args.key?(:egress_to)
1425
+ end
1426
+ end
1427
+
1428
+ # Defines the conditions under which an EgressPolicy matches a request.
1429
+ # Conditions are based on information about the ApiOperation intended to be
1430
+ # performed on the `resources` specified. Note that if the destination of the
1431
+ # request is protected by a ServicePerimeter, then that ServicePerimeter must
1432
+ # have an IngressPolicy which allows access in order for this request to succeed.
1433
+ class GoogleIdentityAccesscontextmanagerV1EgressTo
1434
+ include Google::Apis::Core::Hashable
1435
+
1436
+ # A list of ApiOperations that this egress rule applies to. A request matches if
1437
+ # it contains an operation/service in this list.
1438
+ # Corresponds to the JSON property `operations`
1439
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ApiOperation>]
1440
+ attr_accessor :operations
1441
+
1442
+ # A list of resources, currently only projects in the form `projects/`, that
1443
+ # match this to stanza. A request matches if it contains a resource in this list.
1444
+ # If `*` is specified for resources, then this EgressTo rule will authorize
1445
+ # access to all resources outside the perimeter.
1446
+ # Corresponds to the JSON property `resources`
1447
+ # @return [Array<String>]
1448
+ attr_accessor :resources
1449
+
1450
+ def initialize(**args)
1451
+ update!(**args)
1452
+ end
1453
+
1454
+ # Update properties of this object
1455
+ def update!(**args)
1456
+ @operations = args[:operations] if args.key?(:operations)
1457
+ @resources = args[:resources] if args.key?(:resources)
1458
+ end
1459
+ end
1460
+
1461
+ # Defines the conditions under which an IngressPolicy matches a request.
1462
+ # Conditions are based on information about the source of the request.
1463
+ class GoogleIdentityAccesscontextmanagerV1IngressFrom
1464
+ include Google::Apis::Core::Hashable
1465
+
1466
+ # A list of identities that are allowed access through this ingress policy.
1467
+ # Should be in the format of email address. The email address should represent
1468
+ # individual user or service account only.
1469
+ # Corresponds to the JSON property `identities`
1470
+ # @return [Array<String>]
1471
+ attr_accessor :identities
1472
+
1473
+ # Specifies the type of identities that are allowed access from outside the
1474
+ # perimeter. If left unspecified, then members of `identities` field will be
1475
+ # allowed access.
1476
+ # Corresponds to the JSON property `identityType`
1477
+ # @return [String]
1478
+ attr_accessor :identity_type
1479
+
1480
+ # Sources that this IngressPolicy authorizes access from.
1481
+ # Corresponds to the JSON property `sources`
1482
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressSource>]
1483
+ attr_accessor :sources
1484
+
1485
+ def initialize(**args)
1486
+ update!(**args)
1487
+ end
1488
+
1489
+ # Update properties of this object
1490
+ def update!(**args)
1491
+ @identities = args[:identities] if args.key?(:identities)
1492
+ @identity_type = args[:identity_type] if args.key?(:identity_type)
1493
+ @sources = args[:sources] if args.key?(:sources)
1494
+ end
1495
+ end
1496
+
1497
+ # Policy for ingress into ServicePerimeter. IngressPolicies match requests based
1498
+ # on `ingress_from` and `ingress_to` stanzas. For an ingress policy to match,
1499
+ # both the `ingress_from` and `ingress_to` stanzas must be matched. If an
1500
+ # IngressPolicy matches a request, the request is allowed through the perimeter
1501
+ # boundary from outside the perimeter. For example, access from the internet can
1502
+ # be allowed either based on an AccessLevel or, for traffic hosted on Google
1503
+ # Cloud, the project of the source network. For access from private networks,
1504
+ # using the project of the hosting network is required. Individual ingress
1505
+ # policies can be limited by restricting which services and/or actions they
1506
+ # match using the `ingress_to` field.
1507
+ class GoogleIdentityAccesscontextmanagerV1IngressPolicy
1508
+ include Google::Apis::Core::Hashable
1509
+
1510
+ # Defines the conditions under which an IngressPolicy matches a request.
1511
+ # Conditions are based on information about the source of the request.
1512
+ # Corresponds to the JSON property `ingressFrom`
1513
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressFrom]
1514
+ attr_accessor :ingress_from
1515
+
1516
+ # Defines the conditions under which an IngressPolicy matches a request.
1517
+ # Conditions are based on information about the ApiOperation intended to be
1518
+ # performed on the destination of the request.
1519
+ # Corresponds to the JSON property `ingressTo`
1520
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressTo]
1521
+ attr_accessor :ingress_to
1522
+
1523
+ def initialize(**args)
1524
+ update!(**args)
1525
+ end
1526
+
1527
+ # Update properties of this object
1528
+ def update!(**args)
1529
+ @ingress_from = args[:ingress_from] if args.key?(:ingress_from)
1530
+ @ingress_to = args[:ingress_to] if args.key?(:ingress_to)
1531
+ end
1532
+ end
1533
+
1534
+ # The source that IngressPolicy authorizes access from.
1535
+ class GoogleIdentityAccesscontextmanagerV1IngressSource
1536
+ include Google::Apis::Core::Hashable
1537
+
1538
+ # An AccessLevel resource name that allow resources within the ServicePerimeters
1539
+ # to be accessed from the internet. AccessLevels listed must be in the same
1540
+ # policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will
1541
+ # cause an error. If no AccessLevel names are listed, resources within the
1542
+ # perimeter can only be accessed via Google Cloud calls with request origins
1543
+ # within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`
1544
+ # . If `*` is specified, then all IngressSources will be allowed.
1545
+ # Corresponds to the JSON property `accessLevel`
1546
+ # @return [String]
1547
+ attr_accessor :access_level
1548
+
1549
+ # A Google Cloud resource that is allowed to ingress the perimeter. Requests
1550
+ # from these resources will be allowed to access perimeter data. Currently only
1551
+ # projects are allowed. Format: `projects/`project_number`` The project may be
1552
+ # in any Google Cloud organization, not just the organization that the perimeter
1553
+ # is defined in. `*` is not allowed, the case of allowing all Google Cloud
1554
+ # resources only is not supported.
1555
+ # Corresponds to the JSON property `resource`
1556
+ # @return [String]
1557
+ attr_accessor :resource
1558
+
1559
+ def initialize(**args)
1560
+ update!(**args)
1561
+ end
1562
+
1563
+ # Update properties of this object
1564
+ def update!(**args)
1565
+ @access_level = args[:access_level] if args.key?(:access_level)
1566
+ @resource = args[:resource] if args.key?(:resource)
1567
+ end
1568
+ end
1569
+
1570
+ # Defines the conditions under which an IngressPolicy matches a request.
1571
+ # Conditions are based on information about the ApiOperation intended to be
1572
+ # performed on the destination of the request.
1573
+ class GoogleIdentityAccesscontextmanagerV1IngressTo
1574
+ include Google::Apis::Core::Hashable
1575
+
1576
+ # A list of ApiOperations the sources specified in corresponding IngressFrom are
1577
+ # allowed to perform in this ServicePerimeter.
1578
+ # Corresponds to the JSON property `operations`
1579
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ApiOperation>]
1580
+ attr_accessor :operations
1581
+
1582
+ # A list of resources, currently only projects in the form `projects/`,
1583
+ # protected by this ServicePerimeter that are allowed to be accessed by sources
1584
+ # defined in the corresponding IngressFrom. A request matches if it contains a
1585
+ # resource in this list. If `*` is specified for resources, then this IngressTo
1586
+ # rule will authorize access to all resources inside the perimeter, provided
1587
+ # that the request also matches the `operations` field.
1588
+ # Corresponds to the JSON property `resources`
1589
+ # @return [Array<String>]
1590
+ attr_accessor :resources
1591
+
1592
+ def initialize(**args)
1593
+ update!(**args)
1594
+ end
1595
+
1596
+ # Update properties of this object
1597
+ def update!(**args)
1598
+ @operations = args[:operations] if args.key?(:operations)
1599
+ @resources = args[:resources] if args.key?(:resources)
1600
+ end
1601
+ end
1602
+
1603
+ # An allowed method or permission of a service specified in ApiOperation.
1604
+ class GoogleIdentityAccesscontextmanagerV1MethodSelector
1605
+ include Google::Apis::Core::Hashable
1606
+
1607
+ # Value for `method` should be a valid method name for the corresponding `
1608
+ # service_name` in ApiOperation. If `*` used as value for `method`, then ALL
1609
+ # methods and permissions are allowed.
1610
+ # Corresponds to the JSON property `method`
1611
+ # @return [String]
1612
+ attr_accessor :method_prop
1613
+
1614
+ # Value for `permission` should be a valid Cloud IAM permission for the
1615
+ # corresponding `service_name` in ApiOperation.
1616
+ # Corresponds to the JSON property `permission`
1617
+ # @return [String]
1618
+ attr_accessor :permission
1619
+
1620
+ def initialize(**args)
1621
+ update!(**args)
1622
+ end
1623
+
1624
+ # Update properties of this object
1625
+ def update!(**args)
1626
+ @method_prop = args[:method_prop] if args.key?(:method_prop)
1627
+ @permission = args[:permission] if args.key?(:permission)
1628
+ end
1629
+ end
1630
+
1631
+ # A restriction on the OS type and version of devices making requests.
1632
+ class GoogleIdentityAccesscontextmanagerV1OsConstraint
1633
+ include Google::Apis::Core::Hashable
1634
+
1635
+ # The minimum allowed OS version. If not set, any version of this OS satisfies
1636
+ # the constraint. Format: `"major.minor.patch"`. Examples: `"10.5.301"`, `"9.2.1"
1637
+ # `.
1638
+ # Corresponds to the JSON property `minimumVersion`
1639
+ # @return [String]
1640
+ attr_accessor :minimum_version
1641
+
1642
+ # Required. The allowed OS type.
1643
+ # Corresponds to the JSON property `osType`
1644
+ # @return [String]
1645
+ attr_accessor :os_type
1646
+
1647
+ # Only allows requests from devices with a verified Chrome OS. Verifications
1648
+ # includes requirements that the device is enterprise-managed, conformant to
1649
+ # domain policies, and the caller has permission to call the API targeted by the
1650
+ # request.
1651
+ # Corresponds to the JSON property `requireVerifiedChromeOs`
1652
+ # @return [Boolean]
1653
+ attr_accessor :require_verified_chrome_os
1654
+ alias_method :require_verified_chrome_os?, :require_verified_chrome_os
1655
+
1656
+ def initialize(**args)
1657
+ update!(**args)
1658
+ end
1659
+
1660
+ # Update properties of this object
1661
+ def update!(**args)
1662
+ @minimum_version = args[:minimum_version] if args.key?(:minimum_version)
1663
+ @os_type = args[:os_type] if args.key?(:os_type)
1664
+ @require_verified_chrome_os = args[:require_verified_chrome_os] if args.key?(:require_verified_chrome_os)
1665
+ end
1666
+ end
1667
+
1668
+ # `ServicePerimeter` describes a set of Google Cloud resources which can freely
1669
+ # import and export data amongst themselves, but not export outside of the `
1670
+ # ServicePerimeter`. If a request with a source within this `ServicePerimeter`
1671
+ # has a target outside of the `ServicePerimeter`, the request will be blocked.
1672
+ # Otherwise the request is allowed. There are two types of Service Perimeter -
1673
+ # Regular and Bridge. Regular Service Perimeters cannot overlap, a single Google
1674
+ # Cloud project can only belong to a single regular Service Perimeter. Service
1675
+ # Perimeter Bridges can contain only Google Cloud projects as members, a single
1676
+ # Google Cloud project may belong to multiple Service Perimeter Bridges.
1677
+ class GoogleIdentityAccesscontextmanagerV1ServicePerimeter
1678
+ include Google::Apis::Core::Hashable
1679
+
1680
+ # Description of the `ServicePerimeter` and its use. Does not affect behavior.
1681
+ # Corresponds to the JSON property `description`
1682
+ # @return [String]
1683
+ attr_accessor :description
1684
+
1685
+ # Required. Resource name for the ServicePerimeter. The `short_name` component
1686
+ # must begin with a letter and only include alphanumeric and '_'. Format: `
1687
+ # accessPolicies/`policy_id`/servicePerimeters/`short_name``
1688
+ # Corresponds to the JSON property `name`
1689
+ # @return [String]
1690
+ attr_accessor :name
1691
+
1692
+ # Perimeter type indicator. A single project is allowed to be a member of single
1693
+ # regular perimeter, but multiple service perimeter bridges. A project cannot be
1694
+ # a included in a perimeter bridge without being included in regular perimeter.
1695
+ # For perimeter bridges, the restricted service list as well as access level
1696
+ # lists must be empty.
1697
+ # Corresponds to the JSON property `perimeterType`
1698
+ # @return [String]
1699
+ attr_accessor :perimeter_type
1700
+
1701
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1702
+ # describe specific Service Perimeter configuration.
1703
+ # Corresponds to the JSON property `spec`
1704
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig]
1705
+ attr_accessor :spec
1706
+
1707
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1708
+ # describe specific Service Perimeter configuration.
1709
+ # Corresponds to the JSON property `status`
1710
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig]
1711
+ attr_accessor :status
1712
+
1713
+ # Human readable title. Must be unique within the Policy.
1714
+ # Corresponds to the JSON property `title`
1715
+ # @return [String]
1716
+ attr_accessor :title
1717
+
1718
+ # Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists
1719
+ # for all Service Perimeters, and that spec is identical to the status for those
1720
+ # Service Perimeters. When this flag is set, it inhibits the generation of the
1721
+ # implicit spec, thereby allowing the user to explicitly provide a configuration
1722
+ # ("spec") to use in a dry-run version of the Service Perimeter. This allows the
1723
+ # user to test changes to the enforced config ("status") without actually
1724
+ # enforcing them. This testing is done through analyzing the differences between
1725
+ # currently enforced and suggested restrictions. use_explicit_dry_run_spec must
1726
+ # bet set to True if any of the fields in the spec are set to non-default values.
1727
+ # Corresponds to the JSON property `useExplicitDryRunSpec`
1728
+ # @return [Boolean]
1729
+ attr_accessor :use_explicit_dry_run_spec
1730
+ alias_method :use_explicit_dry_run_spec?, :use_explicit_dry_run_spec
1731
+
1732
+ def initialize(**args)
1733
+ update!(**args)
1734
+ end
1735
+
1736
+ # Update properties of this object
1737
+ def update!(**args)
1738
+ @description = args[:description] if args.key?(:description)
1739
+ @name = args[:name] if args.key?(:name)
1740
+ @perimeter_type = args[:perimeter_type] if args.key?(:perimeter_type)
1741
+ @spec = args[:spec] if args.key?(:spec)
1742
+ @status = args[:status] if args.key?(:status)
1743
+ @title = args[:title] if args.key?(:title)
1744
+ @use_explicit_dry_run_spec = args[:use_explicit_dry_run_spec] if args.key?(:use_explicit_dry_run_spec)
1745
+ end
1746
+ end
1747
+
1748
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1749
+ # describe specific Service Perimeter configuration.
1750
+ class GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig
1751
+ include Google::Apis::Core::Hashable
1752
+
1753
+ # A list of `AccessLevel` resource names that allow resources within the `
1754
+ # ServicePerimeter` to be accessed from the internet. `AccessLevels` listed must
1755
+ # be in the same policy as this `ServicePerimeter`. Referencing a nonexistent `
1756
+ # AccessLevel` is a syntax error. If no `AccessLevel` names are listed,
1757
+ # resources within the perimeter can only be accessed via Google Cloud calls
1758
+ # with request origins within the perimeter. Example: `"accessPolicies/MY_POLICY/
1759
+ # accessLevels/MY_LEVEL"`. For Service Perimeter Bridge, must be empty.
1760
+ # Corresponds to the JSON property `accessLevels`
1761
+ # @return [Array<String>]
1762
+ attr_accessor :access_levels
1763
+
1764
+ # List of EgressPolicies to apply to the perimeter. A perimeter may have
1765
+ # multiple EgressPolicies, each of which is evaluated separately. Access is
1766
+ # granted if any EgressPolicy grants it. Must be empty for a perimeter bridge.
1767
+ # Corresponds to the JSON property `egressPolicies`
1768
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1EgressPolicy>]
1769
+ attr_accessor :egress_policies
1770
+
1771
+ # List of IngressPolicies to apply to the perimeter. A perimeter may have
1772
+ # multiple IngressPolicies, each of which is evaluated separately. Access is
1773
+ # granted if any Ingress Policy grants it. Must be empty for a perimeter bridge.
1774
+ # Corresponds to the JSON property `ingressPolicies`
1775
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1IngressPolicy>]
1776
+ attr_accessor :ingress_policies
1777
+
1778
+ # A list of Google Cloud resources that are inside of the service perimeter.
1779
+ # Currently only projects are allowed. Format: `projects/`project_number``
1780
+ # Corresponds to the JSON property `resources`
1781
+ # @return [Array<String>]
1782
+ attr_accessor :resources
1783
+
1784
+ # Google Cloud services that are subject to the Service Perimeter restrictions.
1785
+ # For example, if `storage.googleapis.com` is specified, access to the storage
1786
+ # buckets inside the perimeter must meet the perimeter's access restrictions.
1787
+ # Corresponds to the JSON property `restrictedServices`
1788
+ # @return [Array<String>]
1789
+ attr_accessor :restricted_services
1790
+
1791
+ # Specifies how APIs are allowed to communicate within the Service Perimeter.
1792
+ # Corresponds to the JSON property `vpcAccessibleServices`
1793
+ # @return [Google::Apis::CloudassetV1p7beta1::GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices]
1794
+ attr_accessor :vpc_accessible_services
1795
+
1796
+ def initialize(**args)
1797
+ update!(**args)
1798
+ end
1799
+
1800
+ # Update properties of this object
1801
+ def update!(**args)
1802
+ @access_levels = args[:access_levels] if args.key?(:access_levels)
1803
+ @egress_policies = args[:egress_policies] if args.key?(:egress_policies)
1804
+ @ingress_policies = args[:ingress_policies] if args.key?(:ingress_policies)
1805
+ @resources = args[:resources] if args.key?(:resources)
1806
+ @restricted_services = args[:restricted_services] if args.key?(:restricted_services)
1807
+ @vpc_accessible_services = args[:vpc_accessible_services] if args.key?(:vpc_accessible_services)
1808
+ end
1809
+ end
1810
+
1811
+ # Specifies how APIs are allowed to communicate within the Service Perimeter.
1812
+ class GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices
1813
+ include Google::Apis::Core::Hashable
1814
+
1815
+ # The list of APIs usable within the Service Perimeter. Must be empty unless '
1816
+ # enable_restriction' is True. You can specify a list of individual services, as
1817
+ # well as include the 'RESTRICTED-SERVICES' value, which automatically includes
1818
+ # all of the services protected by the perimeter.
1819
+ # Corresponds to the JSON property `allowedServices`
1820
+ # @return [Array<String>]
1821
+ attr_accessor :allowed_services
1822
+
1823
+ # Whether to restrict API calls within the Service Perimeter to the list of APIs
1824
+ # specified in 'allowed_services'.
1825
+ # Corresponds to the JSON property `enableRestriction`
1826
+ # @return [Boolean]
1827
+ attr_accessor :enable_restriction
1828
+ alias_method :enable_restriction?, :enable_restriction
1829
+
1830
+ def initialize(**args)
1831
+ update!(**args)
1832
+ end
1833
+
1834
+ # Update properties of this object
1835
+ def update!(**args)
1836
+ @allowed_services = args[:allowed_services] if args.key?(:allowed_services)
1837
+ @enable_restriction = args[:enable_restriction] if args.key?(:enable_restriction)
1838
+ end
1839
+ end
1840
+
1841
+ # Inventory Settings. There is only one inventory settings for a given
1842
+ # organization, folder or project. Users can update inventory settings using
1843
+ # specific API, but cannot create or delete.
1844
+ class InventorySettings
1845
+ include Google::Apis::Core::Hashable
1846
+
1847
+ # Output only. A list of export settings.
1848
+ # Corresponds to the JSON property `exportSettings`
1849
+ # @return [Array<String>]
1850
+ attr_accessor :export_settings
1851
+
1852
+ # Required. The format will be projects/`PROJECT_NUMBER`/inventorySettings or
1853
+ # folders/`FOLDER_NUMBER`/inventorySettings or organizations/`
1854
+ # ORGANIZATION_NUMBER`/inventorySettings
1855
+ # Corresponds to the JSON property `name`
1856
+ # @return [String]
1857
+ attr_accessor :name
1858
+
1859
+ def initialize(**args)
1860
+ update!(**args)
1861
+ end
1862
+
1863
+ # Update properties of this object
1864
+ def update!(**args)
1865
+ @export_settings = args[:export_settings] if args.key?(:export_settings)
1866
+ @name = args[:name] if args.key?(:name)
1867
+ end
1868
+ end
1869
+
1870
+ # ListAssets response.
1871
+ class ListAssetUpdatesResponse
1872
+ include Google::Apis::Core::Hashable
1873
+
1874
+ # Asset updates in the time window.
1875
+ # Corresponds to the JSON property `assetUpdates`
1876
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::Asset>]
1877
+ attr_accessor :asset_updates
1878
+
1879
+ # Token to retrieve the next page of results. Set to empty if there are no
1880
+ # remaining results.
1881
+ # Corresponds to the JSON property `nextPageToken`
1882
+ # @return [String]
1883
+ attr_accessor :next_page_token
1884
+
1885
+ # Time window configuration for asset updates requests.
1886
+ # Corresponds to the JSON property `updateTimeWindow`
1887
+ # @return [Google::Apis::CloudassetV1p7beta1::UpdateTimeWindow]
1888
+ attr_accessor :update_time_window
1889
+
1890
+ def initialize(**args)
1891
+ update!(**args)
1892
+ end
1893
+
1894
+ # Update properties of this object
1895
+ def update!(**args)
1896
+ @asset_updates = args[:asset_updates] if args.key?(:asset_updates)
1897
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1898
+ @update_time_window = args[:update_time_window] if args.key?(:update_time_window)
1899
+ end
1900
+ end
1901
+
1902
+ #
1903
+ class ListExportSettingsResponse
1904
+ include Google::Apis::Core::Hashable
1905
+
1906
+ # A list of export settings.
1907
+ # Corresponds to the JSON property `exportSettings`
1908
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::ExportSetting>]
1909
+ attr_accessor :export_settings
1910
+
1911
+ # Token to retrieve the next page of results. Set to empty if there are no
1912
+ # remaining results.
1913
+ # Corresponds to the JSON property `nextPageToken`
1914
+ # @return [String]
1915
+ attr_accessor :next_page_token
1916
+
1917
+ def initialize(**args)
1918
+ update!(**args)
1919
+ end
1920
+
1921
+ # Update properties of this object
1922
+ def update!(**args)
1923
+ @export_settings = args[:export_settings] if args.key?(:export_settings)
1924
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1925
+ end
1926
+ end
1927
+
1928
+ # This resource represents a long-running operation that is the result of a
1929
+ # network API call.
1930
+ class Operation
1931
+ include Google::Apis::Core::Hashable
1932
+
1933
+ # If the value is `false`, it means the operation is still in progress. If `true`
1934
+ # , the operation is completed, and either `error` or `response` is available.
1935
+ # Corresponds to the JSON property `done`
1936
+ # @return [Boolean]
1937
+ attr_accessor :done
1938
+ alias_method :done?, :done
1939
+
1940
+ # The `Status` type defines a logical error model that is suitable for different
1941
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1942
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1943
+ # data: error code, error message, and error details. You can find out more
1944
+ # about this error model and how to work with it in the [API Design Guide](https:
1945
+ # //cloud.google.com/apis/design/errors).
1946
+ # Corresponds to the JSON property `error`
1947
+ # @return [Google::Apis::CloudassetV1p7beta1::Status]
1948
+ attr_accessor :error
1949
+
1950
+ # Service-specific metadata associated with the operation. It typically contains
1951
+ # progress information and common metadata such as create time. Some services
1952
+ # might not provide such metadata. Any method that returns a long-running
1953
+ # operation should document the metadata type, if any.
1954
+ # Corresponds to the JSON property `metadata`
1955
+ # @return [Hash<String,Object>]
1956
+ attr_accessor :metadata
1957
+
1958
+ # The server-assigned name, which is only unique within the same service that
1959
+ # originally returns it. If you use the default HTTP mapping, the `name` should
1960
+ # be a resource name ending with `operations/`unique_id``.
1961
+ # Corresponds to the JSON property `name`
1962
+ # @return [String]
1963
+ attr_accessor :name
1964
+
1965
+ # The normal response of the operation in case of success. If the original
1966
+ # method returns no data on success, such as `Delete`, the response is `google.
1967
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
1968
+ # the response should be the resource. For other methods, the response should
1969
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
1970
+ # example, if the original method name is `TakeSnapshot()`, the inferred
1971
+ # response type is `TakeSnapshotResponse`.
1972
+ # Corresponds to the JSON property `response`
1973
+ # @return [Hash<String,Object>]
1974
+ attr_accessor :response
1975
+
1976
+ def initialize(**args)
1977
+ update!(**args)
1978
+ end
1979
+
1980
+ # Update properties of this object
1981
+ def update!(**args)
1982
+ @done = args[:done] if args.key?(:done)
1983
+ @error = args[:error] if args.key?(:error)
1984
+ @metadata = args[:metadata] if args.key?(:metadata)
1985
+ @name = args[:name] if args.key?(:name)
1986
+ @response = args[:response] if args.key?(:response)
1987
+ end
1988
+ end
1989
+
1990
+ # Output configuration for export assets destination.
1991
+ class OutputConfig
1992
+ include Google::Apis::Core::Hashable
1993
+
1994
+ # A BigQuery destination for exporting assets to.
1995
+ # Corresponds to the JSON property `bigqueryDestination`
1996
+ # @return [Google::Apis::CloudassetV1p7beta1::BigQueryDestination]
1997
+ attr_accessor :bigquery_destination
1998
+
1999
+ # A Cloud Storage location.
2000
+ # Corresponds to the JSON property `gcsDestination`
2001
+ # @return [Google::Apis::CloudassetV1p7beta1::GcsDestination]
2002
+ attr_accessor :gcs_destination
2003
+
2004
+ def initialize(**args)
2005
+ update!(**args)
2006
+ end
2007
+
2008
+ # Update properties of this object
2009
+ def update!(**args)
2010
+ @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
2011
+ @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
2012
+ end
2013
+ end
2014
+
2015
+ # Specifications of BigQuery partitioned table as export destination.
2016
+ class PartitionSpec
2017
+ include Google::Apis::Core::Hashable
2018
+
2019
+ # The partition key for BigQuery partitioned table.
2020
+ # Corresponds to the JSON property `partitionKey`
2021
+ # @return [String]
2022
+ attr_accessor :partition_key
2023
+
2024
+ def initialize(**args)
2025
+ update!(**args)
2026
+ end
2027
+
2028
+ # Update properties of this object
2029
+ def update!(**args)
2030
+ @partition_key = args[:partition_key] if args.key?(:partition_key)
2031
+ end
2032
+ end
2033
+
2034
+ # An Identity and Access Management (IAM) policy, which specifies access
2035
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
2036
+ # A `binding` binds one or more `members` to a single `role`. Members can be
2037
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
2038
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
2039
+ # role or a user-created custom role. For some types of Google Cloud resources,
2040
+ # a `binding` can also specify a `condition`, which is a logical expression that
2041
+ # allows access to a resource only if the expression evaluates to `true`. A
2042
+ # condition can add constraints based on attributes of the request, the resource,
2043
+ # or both. To learn which resources support conditions in their IAM policies,
2044
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
2045
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
2046
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
2047
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
2048
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
2049
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
2050
+ # title": "expirable access", "description": "Does not grant access after Sep
2051
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
2052
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
2053
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
2054
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
2055
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
2056
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
2057
+ # description: Does not grant access after Sep 2020 expression: request.time <
2058
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
2059
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
2060
+ # google.com/iam/docs/).
2061
+ class Policy
2062
+ include Google::Apis::Core::Hashable
2063
+
2064
+ # Specifies cloud audit logging configuration for this policy.
2065
+ # Corresponds to the JSON property `auditConfigs`
2066
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::AuditConfig>]
2067
+ attr_accessor :audit_configs
2068
+
2069
+ # Associates a list of `members` to a `role`. Optionally, may specify a `
2070
+ # condition` that determines how and when the `bindings` are applied. Each of
2071
+ # the `bindings` must contain at least one member.
2072
+ # Corresponds to the JSON property `bindings`
2073
+ # @return [Array<Google::Apis::CloudassetV1p7beta1::Binding>]
2074
+ attr_accessor :bindings
2075
+
2076
+ # `etag` is used for optimistic concurrency control as a way to help prevent
2077
+ # simultaneous updates of a policy from overwriting each other. It is strongly
2078
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
2079
+ # to perform policy updates in order to avoid race conditions: An `etag` is
2080
+ # returned in the response to `getIamPolicy`, and systems are expected to put
2081
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
2082
+ # applied to the same version of the policy. **Important:** If you use IAM
2083
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
2084
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
2085
+ # with a version `1` policy, and all of the conditions in the version `3` policy
2086
+ # are lost.
2087
+ # Corresponds to the JSON property `etag`
2088
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2089
+ # @return [String]
2090
+ attr_accessor :etag
2091
+
2092
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
2093
+ # Requests that specify an invalid value are rejected. Any operation that
2094
+ # affects conditional role bindings must specify version `3`. This requirement
2095
+ # applies to the following operations: * Getting a policy that includes a
2096
+ # conditional role binding * Adding a conditional role binding to a policy *
2097
+ # Changing a conditional role binding in a policy * Removing any role binding,
2098
+ # with or without a condition, from a policy that includes conditions **
2099
+ # Important:** If you use IAM Conditions, you must include the `etag` field
2100
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
2101
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
2102
+ # conditions in the version `3` policy are lost. If a policy does not include
2103
+ # any conditions, operations on that policy may specify any valid version or
2104
+ # leave the field unset. To learn which resources support conditions in their
2105
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
2106
+ # conditions/resource-policies).
2107
+ # Corresponds to the JSON property `version`
2108
+ # @return [Fixnum]
2109
+ attr_accessor :version
2110
+
2111
+ def initialize(**args)
2112
+ update!(**args)
2113
+ end
2114
+
2115
+ # Update properties of this object
2116
+ def update!(**args)
2117
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
2118
+ @bindings = args[:bindings] if args.key?(:bindings)
2119
+ @etag = args[:etag] if args.key?(:etag)
2120
+ @version = args[:version] if args.key?(:version)
2121
+ end
2122
+ end
2123
+
2124
+ # A representation of a Google Cloud resource.
2125
+ class Resource
2126
+ include Google::Apis::Core::Hashable
2127
+
2128
+ # The content of the resource, in which some sensitive fields are removed and
2129
+ # may not be present.
2130
+ # Corresponds to the JSON property `data`
2131
+ # @return [Hash<String,Object>]
2132
+ attr_accessor :data
2133
+
2134
+ # The URL of the discovery document containing the resource's JSON schema.
2135
+ # Example: `https://www.googleapis.com/discovery/v1/apis/compute/v1/rest` This
2136
+ # value is unspecified for resources that do not have an API based on a
2137
+ # discovery document, such as Cloud Bigtable.
2138
+ # Corresponds to the JSON property `discoveryDocumentUri`
2139
+ # @return [String]
2140
+ attr_accessor :discovery_document_uri
2141
+
2142
+ # The JSON schema name listed in the discovery document. Example: `Project` This
2143
+ # value is unspecified for resources that do not have an API based on a
2144
+ # discovery document, such as Cloud Bigtable.
2145
+ # Corresponds to the JSON property `discoveryName`
2146
+ # @return [String]
2147
+ attr_accessor :discovery_name
2148
+
2149
+ # The location of the resource in Google Cloud, such as its zone and region. For
2150
+ # more information, see https://cloud.google.com/about/locations/.
2151
+ # Corresponds to the JSON property `location`
2152
+ # @return [String]
2153
+ attr_accessor :location
2154
+
2155
+ # The full name of the immediate parent of this resource. See [Resource Names](
2156
+ # https://cloud.google.com/apis/design/resource_names#full_resource_name) for
2157
+ # more information. For Google Cloud assets, this value is the parent resource
2158
+ # defined in the [Cloud IAM policy hierarchy](https://cloud.google.com/iam/docs/
2159
+ # overview#policy_hierarchy). Example: `//cloudresourcemanager.googleapis.com/
2160
+ # projects/my_project_123` For third-party assets, this field may be set
2161
+ # differently.
2162
+ # Corresponds to the JSON property `parent`
2163
+ # @return [String]
2164
+ attr_accessor :parent
2165
+
2166
+ # The REST URL for accessing the resource. An HTTP `GET` request using this URL
2167
+ # returns the resource itself. Example: `https://cloudresourcemanager.googleapis.
2168
+ # com/v1/projects/my-project-123` This value is unspecified for resources
2169
+ # without a REST API.
2170
+ # Corresponds to the JSON property `resourceUrl`
2171
+ # @return [String]
2172
+ attr_accessor :resource_url
2173
+
2174
+ # The API version. Example: `v1`
2175
+ # Corresponds to the JSON property `version`
2176
+ # @return [String]
2177
+ attr_accessor :version
2178
+
2179
+ def initialize(**args)
2180
+ update!(**args)
2181
+ end
2182
+
2183
+ # Update properties of this object
2184
+ def update!(**args)
2185
+ @data = args[:data] if args.key?(:data)
2186
+ @discovery_document_uri = args[:discovery_document_uri] if args.key?(:discovery_document_uri)
2187
+ @discovery_name = args[:discovery_name] if args.key?(:discovery_name)
2188
+ @location = args[:location] if args.key?(:location)
2189
+ @parent = args[:parent] if args.key?(:parent)
2190
+ @resource_url = args[:resource_url] if args.key?(:resource_url)
2191
+ @version = args[:version] if args.key?(:version)
2192
+ end
2193
+ end
2194
+
2195
+ # Schedule for scheduled export. This is used to configure scheduled export for
2196
+ # both GCS and BigQuery.
2197
+ class ScheduleConfig
2198
+ include Google::Apis::Core::Hashable
2199
+
2200
+ # Required. Cron-tab formatted schedule by which the job will execute Format:
2201
+ # minute, hour, day of month, month, day of week e.g. 0 0 * * WED = every
2202
+ # Wednesday More examples: https://crontab.guru/examples.html
2203
+ # Corresponds to the JSON property `crontab`
2204
+ # @return [String]
2205
+ attr_accessor :crontab
2206
+
2207
+ # Specifies the time zone to be used in interpreting [crontab]. The value of
2208
+ # this field must be a time zone name from the [tz database](https://en.
2209
+ # wikipedia.org/wiki/Tz_database). Note that some time zones include a provision
2210
+ # for daylight savings time. The rules for daylight saving time are determined
2211
+ # by the chosen tz. For UTC use the string "utc". If a time zone is not
2212
+ # specified, the default will be in UTC (also known as GMT).
2213
+ # Corresponds to the JSON property `timeZone`
2214
+ # @return [String]
2215
+ attr_accessor :time_zone
2216
+
2217
+ def initialize(**args)
2218
+ update!(**args)
2219
+ end
2220
+
2221
+ # Update properties of this object
2222
+ def update!(**args)
2223
+ @crontab = args[:crontab] if args.key?(:crontab)
2224
+ @time_zone = args[:time_zone] if args.key?(:time_zone)
2225
+ end
2226
+ end
2227
+
2228
+ # The `Status` type defines a logical error model that is suitable for different
2229
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2230
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2231
+ # data: error code, error message, and error details. You can find out more
2232
+ # about this error model and how to work with it in the [API Design Guide](https:
2233
+ # //cloud.google.com/apis/design/errors).
2234
+ class Status
2235
+ include Google::Apis::Core::Hashable
2236
+
2237
+ # The status code, which should be an enum value of google.rpc.Code.
2238
+ # Corresponds to the JSON property `code`
2239
+ # @return [Fixnum]
2240
+ attr_accessor :code
2241
+
2242
+ # A list of messages that carry the error details. There is a common set of
2243
+ # message types for APIs to use.
2244
+ # Corresponds to the JSON property `details`
2245
+ # @return [Array<Hash<String,Object>>]
2246
+ attr_accessor :details
2247
+
2248
+ # A developer-facing error message, which should be in English. Any user-facing
2249
+ # error message should be localized and sent in the google.rpc.Status.details
2250
+ # field, or localized by the client.
2251
+ # Corresponds to the JSON property `message`
2252
+ # @return [String]
2253
+ attr_accessor :message
2254
+
2255
+ def initialize(**args)
2256
+ update!(**args)
2257
+ end
2258
+
2259
+ # Update properties of this object
2260
+ def update!(**args)
2261
+ @code = args[:code] if args.key?(:code)
2262
+ @details = args[:details] if args.key?(:details)
2263
+ @message = args[:message] if args.key?(:message)
2264
+ end
2265
+ end
2266
+
2267
+ # A time window specified by its `start_time` and `end_time`.
2268
+ class TimeWindow
2269
+ include Google::Apis::Core::Hashable
2270
+
2271
+ # End time of the time window (inclusive). If not specified, the current
2272
+ # timestamp is used instead.
2273
+ # Corresponds to the JSON property `endTime`
2274
+ # @return [String]
2275
+ attr_accessor :end_time
2276
+
2277
+ # Start time of the time window (exclusive).
2278
+ # Corresponds to the JSON property `startTime`
2279
+ # @return [String]
2280
+ attr_accessor :start_time
2281
+
2282
+ def initialize(**args)
2283
+ update!(**args)
2284
+ end
2285
+
2286
+ # Update properties of this object
2287
+ def update!(**args)
2288
+ @end_time = args[:end_time] if args.key?(:end_time)
2289
+ @start_time = args[:start_time] if args.key?(:start_time)
2290
+ end
2291
+ end
2292
+
2293
+ # Time window configuration for asset updates requests.
2294
+ class UpdateTimeWindow
2295
+ include Google::Apis::Core::Hashable
2296
+
2297
+ # A time window specified by its `start_time` and `end_time`.
2298
+ # Corresponds to the JSON property `timeWindow`
2299
+ # @return [Google::Apis::CloudassetV1p7beta1::TimeWindow]
2300
+ attr_accessor :time_window
2301
+
2302
+ # The type of the time in time_window.
2303
+ # Corresponds to the JSON property `type`
2304
+ # @return [String]
2305
+ attr_accessor :type
2306
+
2307
+ def initialize(**args)
2308
+ update!(**args)
2309
+ end
2310
+
2311
+ # Update properties of this object
2312
+ def update!(**args)
2313
+ @time_window = args[:time_window] if args.key?(:time_window)
2314
+ @type = args[:type] if args.key?(:type)
2315
+ end
2316
+ end
2317
+ end
2318
+ end
2319
+ end