google-apis-iam_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 830a72912c1fb4670126afdd0d698d647ba00fd39480fdd0a18e25ff3426576a
4
+ data.tar.gz: d50d3143054b3d2dbb9c40540bf2bb234e76f3a7a5981dbfde383012904c94b7
5
+ SHA512:
6
+ metadata.gz: 76feac129cbae01383efedfd5469a013ed115bbfbfad5aee0292b630db382fac624371a90122a213ab86e6fcbc4dba0511bd9978c3547ee8656b2d537cf06add
7
+ data.tar.gz: d9899444f79bbd9a557fbc7957290e87f000414f506a963885ab81143a5227dce56a440f1f41afac4d44ccb480f0bfa6a7c53acfe814f2d0bcf14aecec0ebb47
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-iam_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/iam_v1/*.rb
9
+ lib/google/apis/iam_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-iam_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201112
7
+
@@ -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.
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1 of the Identity and Access Management (IAM) API
2
+
3
+ This is a simple client library for version V1 of the Identity and Access Management (IAM) 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/iam.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-iam_v1', '~> 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-iam_v1
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/iam_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::IamV1::IamService.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 Iam service in particular.)
67
+
68
+ For reference information on specific calls in the Identity and Access Management (IAM) API, see the {Google::Apis::IamV1::IamService 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-iam_v1`, 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/iam/) 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/iam_v1"
@@ -0,0 +1,38 @@
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/iam_v1/service.rb'
16
+ require 'google/apis/iam_v1/classes.rb'
17
+ require 'google/apis/iam_v1/representations.rb'
18
+ require 'google/apis/iam_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Identity and Access Management (IAM) API
23
+ #
24
+ # Manages identity and access control for Google Cloud Platform resources,
25
+ # including the creation of service accounts, which you can use to authenticate
26
+ # to Google and make API calls.
27
+ #
28
+ # @see https://cloud.google.com/iam/
29
+ module IamV1
30
+ # Version of the Identity and Access Management (IAM) API this client connects to.
31
+ # This is NOT the gem version.
32
+ VERSION = 'V1'
33
+
34
+ # View and manage your data across Google Cloud Platform services
35
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,1693 @@
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 IamV1
24
+
25
+ # Audit log information specific to Cloud IAM admin APIs. This message is
26
+ # serialized as an `Any` type in the `ServiceData` message of an `AuditLog`
27
+ # message.
28
+ class AdminAuditData
29
+ include Google::Apis::Core::Hashable
30
+
31
+ # A PermissionDelta message to record the added_permissions and
32
+ # removed_permissions inside a role.
33
+ # Corresponds to the JSON property `permissionDelta`
34
+ # @return [Google::Apis::IamV1::PermissionDelta]
35
+ attr_accessor :permission_delta
36
+
37
+ def initialize(**args)
38
+ update!(**args)
39
+ end
40
+
41
+ # Update properties of this object
42
+ def update!(**args)
43
+ @permission_delta = args[:permission_delta] if args.key?(:permission_delta)
44
+ end
45
+ end
46
+
47
+ # Specifies the audit configuration for a service. The configuration determines
48
+ # which permission types are logged, and what identities, if any, are exempted
49
+ # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
50
+ # are AuditConfigs for both `allServices` and a specific service, the union of
51
+ # the two AuditConfigs is used for that service: the log_types specified in each
52
+ # AuditConfig are enabled, and the exempted_members in each AuditLogConfig are
53
+ # exempted. Example Policy with multiple AuditConfigs: ` "audit_configs": [ ` "
54
+ # service": "allServices", "audit_log_configs": [ ` "log_type": "DATA_READ", "
55
+ # exempted_members": [ "user:jose@example.com" ] `, ` "log_type": "DATA_WRITE" `,
56
+ # ` "log_type": "ADMIN_READ" ` ] `, ` "service": "sampleservice.googleapis.com",
57
+ # "audit_log_configs": [ ` "log_type": "DATA_READ" `, ` "log_type": "DATA_WRITE"
58
+ # , "exempted_members": [ "user:aliya@example.com" ] ` ] ` ] ` For sampleservice,
59
+ # this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
60
+ # exempts jose@example.com from DATA_READ logging, and aliya@example.com from
61
+ # DATA_WRITE logging.
62
+ class AuditConfig
63
+ include Google::Apis::Core::Hashable
64
+
65
+ # The configuration for logging of each type of permission.
66
+ # Corresponds to the JSON property `auditLogConfigs`
67
+ # @return [Array<Google::Apis::IamV1::AuditLogConfig>]
68
+ attr_accessor :audit_log_configs
69
+
70
+ # Specifies a service that will be enabled for audit logging. For example, `
71
+ # storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special
72
+ # value that covers all services.
73
+ # Corresponds to the JSON property `service`
74
+ # @return [String]
75
+ attr_accessor :service
76
+
77
+ def initialize(**args)
78
+ update!(**args)
79
+ end
80
+
81
+ # Update properties of this object
82
+ def update!(**args)
83
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
84
+ @service = args[:service] if args.key?(:service)
85
+ end
86
+ end
87
+
88
+ # Audit log information specific to Cloud IAM. This message is serialized as an `
89
+ # Any` type in the `ServiceData` message of an `AuditLog` message.
90
+ class AuditData
91
+ include Google::Apis::Core::Hashable
92
+
93
+ # The difference delta between two policies.
94
+ # Corresponds to the JSON property `policyDelta`
95
+ # @return [Google::Apis::IamV1::PolicyDelta]
96
+ attr_accessor :policy_delta
97
+
98
+ def initialize(**args)
99
+ update!(**args)
100
+ end
101
+
102
+ # Update properties of this object
103
+ def update!(**args)
104
+ @policy_delta = args[:policy_delta] if args.key?(:policy_delta)
105
+ end
106
+ end
107
+
108
+ # Provides the configuration for logging a type of permissions. Example: ` "
109
+ # audit_log_configs": [ ` "log_type": "DATA_READ", "exempted_members": [ "user:
110
+ # jose@example.com" ] `, ` "log_type": "DATA_WRITE" ` ] ` This enables '
111
+ # DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from
112
+ # DATA_READ logging.
113
+ class AuditLogConfig
114
+ include Google::Apis::Core::Hashable
115
+
116
+ # Specifies the identities that do not cause logging for this type of permission.
117
+ # Follows the same format of Binding.members.
118
+ # Corresponds to the JSON property `exemptedMembers`
119
+ # @return [Array<String>]
120
+ attr_accessor :exempted_members
121
+
122
+ # The log type that this config enables.
123
+ # Corresponds to the JSON property `logType`
124
+ # @return [String]
125
+ attr_accessor :log_type
126
+
127
+ def initialize(**args)
128
+ update!(**args)
129
+ end
130
+
131
+ # Update properties of this object
132
+ def update!(**args)
133
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
134
+ @log_type = args[:log_type] if args.key?(:log_type)
135
+ end
136
+ end
137
+
138
+ # Contains information about an auditable service.
139
+ class AuditableService
140
+ include Google::Apis::Core::Hashable
141
+
142
+ # Public name of the service. For example, the service name for Cloud IAM is '
143
+ # iam.googleapis.com'.
144
+ # Corresponds to the JSON property `name`
145
+ # @return [String]
146
+ attr_accessor :name
147
+
148
+ def initialize(**args)
149
+ update!(**args)
150
+ end
151
+
152
+ # Update properties of this object
153
+ def update!(**args)
154
+ @name = args[:name] if args.key?(:name)
155
+ end
156
+ end
157
+
158
+ # Associates `members` with a `role`.
159
+ class Binding
160
+ include Google::Apis::Core::Hashable
161
+
162
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
163
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
164
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
165
+ # "Summary size limit" description: "Determines if a summary is less than 100
166
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
167
+ # Requestor is owner" description: "Determines if requestor is the document
168
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
169
+ # Logic): title: "Public documents" description: "Determine whether the document
170
+ # should be publicly visible" expression: "document.type != 'private' &&
171
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
172
+ # string" description: "Create a notification string with a timestamp."
173
+ # expression: "'New message received at ' + string(document.create_time)" The
174
+ # exact variables and functions that may be referenced within an expression are
175
+ # determined by the service that evaluates it. See the service documentation for
176
+ # additional information.
177
+ # Corresponds to the JSON property `condition`
178
+ # @return [Google::Apis::IamV1::Expr]
179
+ attr_accessor :condition
180
+
181
+ # Specifies the identities requesting access for a Cloud Platform resource. `
182
+ # members` can have the following values: * `allUsers`: A special identifier
183
+ # that represents anyone who is on the internet; with or without a Google
184
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
185
+ # anyone who is authenticated with a Google account or a service account. * `
186
+ # user:`emailid``: An email address that represents a specific Google account.
187
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
188
+ # address that represents a service account. For example, `my-other-app@appspot.
189
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
190
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
191
+ # `uniqueid``: An email address (plus unique identifier) representing a user
192
+ # that has been recently deleted. For example, `alice@example.com?uid=
193
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
194
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
195
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
196
+ # identifier) representing a service account that has been recently deleted. For
197
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
198
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
199
+ # emailid`` and the undeleted service account retains the role in the binding. *
200
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
201
+ # identifier) representing a Google group that has been recently deleted. For
202
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
203
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
204
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
205
+ # primary) that represents all the users of that domain. For example, `google.
206
+ # com` or `example.com`.
207
+ # Corresponds to the JSON property `members`
208
+ # @return [Array<String>]
209
+ attr_accessor :members
210
+
211
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
212
+ # , or `roles/owner`.
213
+ # Corresponds to the JSON property `role`
214
+ # @return [String]
215
+ attr_accessor :role
216
+
217
+ def initialize(**args)
218
+ update!(**args)
219
+ end
220
+
221
+ # Update properties of this object
222
+ def update!(**args)
223
+ @condition = args[:condition] if args.key?(:condition)
224
+ @members = args[:members] if args.key?(:members)
225
+ @role = args[:role] if args.key?(:role)
226
+ end
227
+ end
228
+
229
+ # One delta entry for Binding. Each individual change (only one member in each
230
+ # entry) to a binding will be a separate entry.
231
+ class BindingDelta
232
+ include Google::Apis::Core::Hashable
233
+
234
+ # The action that was performed on a Binding. Required
235
+ # Corresponds to the JSON property `action`
236
+ # @return [String]
237
+ attr_accessor :action
238
+
239
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
240
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
241
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
242
+ # "Summary size limit" description: "Determines if a summary is less than 100
243
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
244
+ # Requestor is owner" description: "Determines if requestor is the document
245
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
246
+ # Logic): title: "Public documents" description: "Determine whether the document
247
+ # should be publicly visible" expression: "document.type != 'private' &&
248
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
249
+ # string" description: "Create a notification string with a timestamp."
250
+ # expression: "'New message received at ' + string(document.create_time)" The
251
+ # exact variables and functions that may be referenced within an expression are
252
+ # determined by the service that evaluates it. See the service documentation for
253
+ # additional information.
254
+ # Corresponds to the JSON property `condition`
255
+ # @return [Google::Apis::IamV1::Expr]
256
+ attr_accessor :condition
257
+
258
+ # A single identity requesting access for a Cloud Platform resource. Follows the
259
+ # same format of Binding.members. Required
260
+ # Corresponds to the JSON property `member`
261
+ # @return [String]
262
+ attr_accessor :member
263
+
264
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
265
+ # , or `roles/owner`. Required
266
+ # Corresponds to the JSON property `role`
267
+ # @return [String]
268
+ attr_accessor :role
269
+
270
+ def initialize(**args)
271
+ update!(**args)
272
+ end
273
+
274
+ # Update properties of this object
275
+ def update!(**args)
276
+ @action = args[:action] if args.key?(:action)
277
+ @condition = args[:condition] if args.key?(:condition)
278
+ @member = args[:member] if args.key?(:member)
279
+ @role = args[:role] if args.key?(:role)
280
+ end
281
+ end
282
+
283
+ # The request to create a new role.
284
+ class CreateRoleRequest
285
+ include Google::Apis::Core::Hashable
286
+
287
+ # A role in the Identity and Access Management API.
288
+ # Corresponds to the JSON property `role`
289
+ # @return [Google::Apis::IamV1::Role]
290
+ attr_accessor :role
291
+
292
+ # The role ID to use for this role. A role ID may contain alphanumeric
293
+ # characters, underscores (`_`), and periods (`.`). It must contain a minimum of
294
+ # 3 characters and a maximum of 64 characters.
295
+ # Corresponds to the JSON property `roleId`
296
+ # @return [String]
297
+ attr_accessor :role_id
298
+
299
+ def initialize(**args)
300
+ update!(**args)
301
+ end
302
+
303
+ # Update properties of this object
304
+ def update!(**args)
305
+ @role = args[:role] if args.key?(:role)
306
+ @role_id = args[:role_id] if args.key?(:role_id)
307
+ end
308
+ end
309
+
310
+ # The service account key create request.
311
+ class CreateServiceAccountKeyRequest
312
+ include Google::Apis::Core::Hashable
313
+
314
+ # Which type of key and algorithm to use for the key. The default is currently a
315
+ # 2K RSA key. However this may change in the future.
316
+ # Corresponds to the JSON property `keyAlgorithm`
317
+ # @return [String]
318
+ attr_accessor :key_algorithm
319
+
320
+ # The output format of the private key. The default value is `
321
+ # TYPE_GOOGLE_CREDENTIALS_FILE`, which is the Google Credentials File format.
322
+ # Corresponds to the JSON property `privateKeyType`
323
+ # @return [String]
324
+ attr_accessor :private_key_type
325
+
326
+ def initialize(**args)
327
+ update!(**args)
328
+ end
329
+
330
+ # Update properties of this object
331
+ def update!(**args)
332
+ @key_algorithm = args[:key_algorithm] if args.key?(:key_algorithm)
333
+ @private_key_type = args[:private_key_type] if args.key?(:private_key_type)
334
+ end
335
+ end
336
+
337
+ # The service account create request.
338
+ class CreateServiceAccountRequest
339
+ include Google::Apis::Core::Hashable
340
+
341
+ # Required. The account id that is used to generate the service account email
342
+ # address and a stable unique id. It is unique within a project, must be 6-30
343
+ # characters long, and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])`
344
+ # to comply with RFC1035.
345
+ # Corresponds to the JSON property `accountId`
346
+ # @return [String]
347
+ attr_accessor :account_id
348
+
349
+ # An IAM service account. A service account is an account for an application or
350
+ # a virtual machine (VM) instance, not a person. You can use a service account
351
+ # to call Google APIs. To learn more, read the [overview of service accounts](
352
+ # https://cloud.google.com/iam/help/service-accounts/overview). When you create
353
+ # a service account, you specify the project ID that owns the service account,
354
+ # as well as a name that must be unique within the project. IAM uses these
355
+ # values to create an email address that identifies the service account.
356
+ # Corresponds to the JSON property `serviceAccount`
357
+ # @return [Google::Apis::IamV1::ServiceAccount]
358
+ attr_accessor :service_account
359
+
360
+ def initialize(**args)
361
+ update!(**args)
362
+ end
363
+
364
+ # Update properties of this object
365
+ def update!(**args)
366
+ @account_id = args[:account_id] if args.key?(:account_id)
367
+ @service_account = args[:service_account] if args.key?(:service_account)
368
+ end
369
+ end
370
+
371
+ # The service account disable request.
372
+ class DisableServiceAccountRequest
373
+ include Google::Apis::Core::Hashable
374
+
375
+ def initialize(**args)
376
+ update!(**args)
377
+ end
378
+
379
+ # Update properties of this object
380
+ def update!(**args)
381
+ end
382
+ end
383
+
384
+ # A generic empty message that you can re-use to avoid defining duplicated empty
385
+ # messages in your APIs. A typical example is to use it as the request or the
386
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
387
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
388
+ # `Empty` is empty JSON object ````.
389
+ class Empty
390
+ include Google::Apis::Core::Hashable
391
+
392
+ def initialize(**args)
393
+ update!(**args)
394
+ end
395
+
396
+ # Update properties of this object
397
+ def update!(**args)
398
+ end
399
+ end
400
+
401
+ # The service account enable request.
402
+ class EnableServiceAccountRequest
403
+ include Google::Apis::Core::Hashable
404
+
405
+ def initialize(**args)
406
+ update!(**args)
407
+ end
408
+
409
+ # Update properties of this object
410
+ def update!(**args)
411
+ end
412
+ end
413
+
414
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
415
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
416
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
417
+ # "Summary size limit" description: "Determines if a summary is less than 100
418
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
419
+ # Requestor is owner" description: "Determines if requestor is the document
420
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
421
+ # Logic): title: "Public documents" description: "Determine whether the document
422
+ # should be publicly visible" expression: "document.type != 'private' &&
423
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
424
+ # string" description: "Create a notification string with a timestamp."
425
+ # expression: "'New message received at ' + string(document.create_time)" The
426
+ # exact variables and functions that may be referenced within an expression are
427
+ # determined by the service that evaluates it. See the service documentation for
428
+ # additional information.
429
+ class Expr
430
+ include Google::Apis::Core::Hashable
431
+
432
+ # Optional. Description of the expression. This is a longer text which describes
433
+ # the expression, e.g. when hovered over it in a UI.
434
+ # Corresponds to the JSON property `description`
435
+ # @return [String]
436
+ attr_accessor :description
437
+
438
+ # Textual representation of an expression in Common Expression Language syntax.
439
+ # Corresponds to the JSON property `expression`
440
+ # @return [String]
441
+ attr_accessor :expression
442
+
443
+ # Optional. String indicating the location of the expression for error reporting,
444
+ # e.g. a file name and a position in the file.
445
+ # Corresponds to the JSON property `location`
446
+ # @return [String]
447
+ attr_accessor :location
448
+
449
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
450
+ # This can be used e.g. in UIs which allow to enter the expression.
451
+ # Corresponds to the JSON property `title`
452
+ # @return [String]
453
+ attr_accessor :title
454
+
455
+ def initialize(**args)
456
+ update!(**args)
457
+ end
458
+
459
+ # Update properties of this object
460
+ def update!(**args)
461
+ @description = args[:description] if args.key?(:description)
462
+ @expression = args[:expression] if args.key?(:expression)
463
+ @location = args[:location] if args.key?(:location)
464
+ @title = args[:title] if args.key?(:title)
465
+ end
466
+ end
467
+
468
+ # The request to lint a Cloud IAM policy object.
469
+ class LintPolicyRequest
470
+ include Google::Apis::Core::Hashable
471
+
472
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
473
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
474
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
475
+ # "Summary size limit" description: "Determines if a summary is less than 100
476
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
477
+ # Requestor is owner" description: "Determines if requestor is the document
478
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
479
+ # Logic): title: "Public documents" description: "Determine whether the document
480
+ # should be publicly visible" expression: "document.type != 'private' &&
481
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
482
+ # string" description: "Create a notification string with a timestamp."
483
+ # expression: "'New message received at ' + string(document.create_time)" The
484
+ # exact variables and functions that may be referenced within an expression are
485
+ # determined by the service that evaluates it. See the service documentation for
486
+ # additional information.
487
+ # Corresponds to the JSON property `condition`
488
+ # @return [Google::Apis::IamV1::Expr]
489
+ attr_accessor :condition
490
+
491
+ # The full resource name of the policy this lint request is about. The name
492
+ # follows the Google Cloud Platform (GCP) resource format. For example, a GCP
493
+ # project with ID `my-project` will be named `//cloudresourcemanager.googleapis.
494
+ # com/projects/my-project`. The resource name is not used to read the policy
495
+ # instance from the Cloud IAM database. The candidate policy for lint has to be
496
+ # provided in the same request object.
497
+ # Corresponds to the JSON property `fullResourceName`
498
+ # @return [String]
499
+ attr_accessor :full_resource_name
500
+
501
+ def initialize(**args)
502
+ update!(**args)
503
+ end
504
+
505
+ # Update properties of this object
506
+ def update!(**args)
507
+ @condition = args[:condition] if args.key?(:condition)
508
+ @full_resource_name = args[:full_resource_name] if args.key?(:full_resource_name)
509
+ end
510
+ end
511
+
512
+ # The response of a lint operation. An empty response indicates the operation
513
+ # was able to fully execute and no lint issue was found.
514
+ class LintPolicyResponse
515
+ include Google::Apis::Core::Hashable
516
+
517
+ # List of lint results sorted by `severity` in descending order.
518
+ # Corresponds to the JSON property `lintResults`
519
+ # @return [Array<Google::Apis::IamV1::LintResult>]
520
+ attr_accessor :lint_results
521
+
522
+ def initialize(**args)
523
+ update!(**args)
524
+ end
525
+
526
+ # Update properties of this object
527
+ def update!(**args)
528
+ @lint_results = args[:lint_results] if args.key?(:lint_results)
529
+ end
530
+ end
531
+
532
+ # Structured response of a single validation unit.
533
+ class LintResult
534
+ include Google::Apis::Core::Hashable
535
+
536
+ # Human readable debug message associated with the issue.
537
+ # Corresponds to the JSON property `debugMessage`
538
+ # @return [String]
539
+ attr_accessor :debug_message
540
+
541
+ # The name of the field for which this lint result is about. For nested messages
542
+ # `field_name` consists of names of the embedded fields separated by period
543
+ # character. The top-level qualifier is the input object to lint in the request.
544
+ # For example, the `field_name` value `condition.expression` identifies a lint
545
+ # result for the `expression` field of the provided condition.
546
+ # Corresponds to the JSON property `fieldName`
547
+ # @return [String]
548
+ attr_accessor :field_name
549
+
550
+ # The validation unit level.
551
+ # Corresponds to the JSON property `level`
552
+ # @return [String]
553
+ attr_accessor :level
554
+
555
+ # 0-based character position of problematic construct within the object
556
+ # identified by `field_name`. Currently, this is populated only for condition
557
+ # expression.
558
+ # Corresponds to the JSON property `locationOffset`
559
+ # @return [Fixnum]
560
+ attr_accessor :location_offset
561
+
562
+ # The validation unit severity.
563
+ # Corresponds to the JSON property `severity`
564
+ # @return [String]
565
+ attr_accessor :severity
566
+
567
+ # The validation unit name, for instance "lintValidationUnits/
568
+ # ConditionComplexityCheck".
569
+ # Corresponds to the JSON property `validationUnitName`
570
+ # @return [String]
571
+ attr_accessor :validation_unit_name
572
+
573
+ def initialize(**args)
574
+ update!(**args)
575
+ end
576
+
577
+ # Update properties of this object
578
+ def update!(**args)
579
+ @debug_message = args[:debug_message] if args.key?(:debug_message)
580
+ @field_name = args[:field_name] if args.key?(:field_name)
581
+ @level = args[:level] if args.key?(:level)
582
+ @location_offset = args[:location_offset] if args.key?(:location_offset)
583
+ @severity = args[:severity] if args.key?(:severity)
584
+ @validation_unit_name = args[:validation_unit_name] if args.key?(:validation_unit_name)
585
+ end
586
+ end
587
+
588
+ # The response containing the roles defined under a resource.
589
+ class ListRolesResponse
590
+ include Google::Apis::Core::Hashable
591
+
592
+ # To retrieve the next page of results, set `ListRolesRequest.page_token` to
593
+ # this value.
594
+ # Corresponds to the JSON property `nextPageToken`
595
+ # @return [String]
596
+ attr_accessor :next_page_token
597
+
598
+ # The Roles defined on this resource.
599
+ # Corresponds to the JSON property `roles`
600
+ # @return [Array<Google::Apis::IamV1::Role>]
601
+ attr_accessor :roles
602
+
603
+ def initialize(**args)
604
+ update!(**args)
605
+ end
606
+
607
+ # Update properties of this object
608
+ def update!(**args)
609
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
610
+ @roles = args[:roles] if args.key?(:roles)
611
+ end
612
+ end
613
+
614
+ # The service account keys list response.
615
+ class ListServiceAccountKeysResponse
616
+ include Google::Apis::Core::Hashable
617
+
618
+ # The public keys for the service account.
619
+ # Corresponds to the JSON property `keys`
620
+ # @return [Array<Google::Apis::IamV1::ServiceAccountKey>]
621
+ attr_accessor :keys
622
+
623
+ def initialize(**args)
624
+ update!(**args)
625
+ end
626
+
627
+ # Update properties of this object
628
+ def update!(**args)
629
+ @keys = args[:keys] if args.key?(:keys)
630
+ end
631
+ end
632
+
633
+ # The service account list response.
634
+ class ListServiceAccountsResponse
635
+ include Google::Apis::Core::Hashable
636
+
637
+ # The list of matching service accounts.
638
+ # Corresponds to the JSON property `accounts`
639
+ # @return [Array<Google::Apis::IamV1::ServiceAccount>]
640
+ attr_accessor :accounts
641
+
642
+ # To retrieve the next page of results, set ListServiceAccountsRequest.
643
+ # page_token to this value.
644
+ # Corresponds to the JSON property `nextPageToken`
645
+ # @return [String]
646
+ attr_accessor :next_page_token
647
+
648
+ def initialize(**args)
649
+ update!(**args)
650
+ end
651
+
652
+ # Update properties of this object
653
+ def update!(**args)
654
+ @accounts = args[:accounts] if args.key?(:accounts)
655
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
656
+ end
657
+ end
658
+
659
+ # This resource represents a long-running operation that is the result of a
660
+ # network API call.
661
+ class Operation
662
+ include Google::Apis::Core::Hashable
663
+
664
+ # If the value is `false`, it means the operation is still in progress. If `true`
665
+ # , the operation is completed, and either `error` or `response` is available.
666
+ # Corresponds to the JSON property `done`
667
+ # @return [Boolean]
668
+ attr_accessor :done
669
+ alias_method :done?, :done
670
+
671
+ # The `Status` type defines a logical error model that is suitable for different
672
+ # programming environments, including REST APIs and RPC APIs. It is used by [
673
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
674
+ # data: error code, error message, and error details. You can find out more
675
+ # about this error model and how to work with it in the [API Design Guide](https:
676
+ # //cloud.google.com/apis/design/errors).
677
+ # Corresponds to the JSON property `error`
678
+ # @return [Google::Apis::IamV1::Status]
679
+ attr_accessor :error
680
+
681
+ # Service-specific metadata associated with the operation. It typically contains
682
+ # progress information and common metadata such as create time. Some services
683
+ # might not provide such metadata. Any method that returns a long-running
684
+ # operation should document the metadata type, if any.
685
+ # Corresponds to the JSON property `metadata`
686
+ # @return [Hash<String,Object>]
687
+ attr_accessor :metadata
688
+
689
+ # The server-assigned name, which is only unique within the same service that
690
+ # originally returns it. If you use the default HTTP mapping, the `name` should
691
+ # be a resource name ending with `operations/`unique_id``.
692
+ # Corresponds to the JSON property `name`
693
+ # @return [String]
694
+ attr_accessor :name
695
+
696
+ # The normal response of the operation in case of success. If the original
697
+ # method returns no data on success, such as `Delete`, the response is `google.
698
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
699
+ # the response should be the resource. For other methods, the response should
700
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
701
+ # example, if the original method name is `TakeSnapshot()`, the inferred
702
+ # response type is `TakeSnapshotResponse`.
703
+ # Corresponds to the JSON property `response`
704
+ # @return [Hash<String,Object>]
705
+ attr_accessor :response
706
+
707
+ def initialize(**args)
708
+ update!(**args)
709
+ end
710
+
711
+ # Update properties of this object
712
+ def update!(**args)
713
+ @done = args[:done] if args.key?(:done)
714
+ @error = args[:error] if args.key?(:error)
715
+ @metadata = args[:metadata] if args.key?(:metadata)
716
+ @name = args[:name] if args.key?(:name)
717
+ @response = args[:response] if args.key?(:response)
718
+ end
719
+ end
720
+
721
+ # The request for PatchServiceAccount. You can patch only the `display_name` and
722
+ # `description` fields. You must use the `update_mask` field to specify which of
723
+ # these fields you want to patch. Only the fields specified in the request are
724
+ # guaranteed to be returned in the response. Other fields may be empty in the
725
+ # response.
726
+ class PatchServiceAccountRequest
727
+ include Google::Apis::Core::Hashable
728
+
729
+ # An IAM service account. A service account is an account for an application or
730
+ # a virtual machine (VM) instance, not a person. You can use a service account
731
+ # to call Google APIs. To learn more, read the [overview of service accounts](
732
+ # https://cloud.google.com/iam/help/service-accounts/overview). When you create
733
+ # a service account, you specify the project ID that owns the service account,
734
+ # as well as a name that must be unique within the project. IAM uses these
735
+ # values to create an email address that identifies the service account.
736
+ # Corresponds to the JSON property `serviceAccount`
737
+ # @return [Google::Apis::IamV1::ServiceAccount]
738
+ attr_accessor :service_account
739
+
740
+ #
741
+ # Corresponds to the JSON property `updateMask`
742
+ # @return [String]
743
+ attr_accessor :update_mask
744
+
745
+ def initialize(**args)
746
+ update!(**args)
747
+ end
748
+
749
+ # Update properties of this object
750
+ def update!(**args)
751
+ @service_account = args[:service_account] if args.key?(:service_account)
752
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
753
+ end
754
+ end
755
+
756
+ # A permission which can be included by a role.
757
+ class Permission
758
+ include Google::Apis::Core::Hashable
759
+
760
+ # The service API associated with the permission is not enabled.
761
+ # Corresponds to the JSON property `apiDisabled`
762
+ # @return [Boolean]
763
+ attr_accessor :api_disabled
764
+ alias_method :api_disabled?, :api_disabled
765
+
766
+ # The current custom role support level.
767
+ # Corresponds to the JSON property `customRolesSupportLevel`
768
+ # @return [String]
769
+ attr_accessor :custom_roles_support_level
770
+
771
+ # A brief description of what this Permission is used for. This permission can
772
+ # ONLY be used in predefined roles.
773
+ # Corresponds to the JSON property `description`
774
+ # @return [String]
775
+ attr_accessor :description
776
+
777
+ # The name of this Permission.
778
+ # Corresponds to the JSON property `name`
779
+ # @return [String]
780
+ attr_accessor :name
781
+
782
+ #
783
+ # Corresponds to the JSON property `onlyInPredefinedRoles`
784
+ # @return [Boolean]
785
+ attr_accessor :only_in_predefined_roles
786
+ alias_method :only_in_predefined_roles?, :only_in_predefined_roles
787
+
788
+ # The preferred name for this permission. If present, then this permission is an
789
+ # alias of, and equivalent to, the listed primary_permission.
790
+ # Corresponds to the JSON property `primaryPermission`
791
+ # @return [String]
792
+ attr_accessor :primary_permission
793
+
794
+ # The current launch stage of the permission.
795
+ # Corresponds to the JSON property `stage`
796
+ # @return [String]
797
+ attr_accessor :stage
798
+
799
+ # The title of this Permission.
800
+ # Corresponds to the JSON property `title`
801
+ # @return [String]
802
+ attr_accessor :title
803
+
804
+ def initialize(**args)
805
+ update!(**args)
806
+ end
807
+
808
+ # Update properties of this object
809
+ def update!(**args)
810
+ @api_disabled = args[:api_disabled] if args.key?(:api_disabled)
811
+ @custom_roles_support_level = args[:custom_roles_support_level] if args.key?(:custom_roles_support_level)
812
+ @description = args[:description] if args.key?(:description)
813
+ @name = args[:name] if args.key?(:name)
814
+ @only_in_predefined_roles = args[:only_in_predefined_roles] if args.key?(:only_in_predefined_roles)
815
+ @primary_permission = args[:primary_permission] if args.key?(:primary_permission)
816
+ @stage = args[:stage] if args.key?(:stage)
817
+ @title = args[:title] if args.key?(:title)
818
+ end
819
+ end
820
+
821
+ # A PermissionDelta message to record the added_permissions and
822
+ # removed_permissions inside a role.
823
+ class PermissionDelta
824
+ include Google::Apis::Core::Hashable
825
+
826
+ # Added permissions.
827
+ # Corresponds to the JSON property `addedPermissions`
828
+ # @return [Array<String>]
829
+ attr_accessor :added_permissions
830
+
831
+ # Removed permissions.
832
+ # Corresponds to the JSON property `removedPermissions`
833
+ # @return [Array<String>]
834
+ attr_accessor :removed_permissions
835
+
836
+ def initialize(**args)
837
+ update!(**args)
838
+ end
839
+
840
+ # Update properties of this object
841
+ def update!(**args)
842
+ @added_permissions = args[:added_permissions] if args.key?(:added_permissions)
843
+ @removed_permissions = args[:removed_permissions] if args.key?(:removed_permissions)
844
+ end
845
+ end
846
+
847
+ # An Identity and Access Management (IAM) policy, which specifies access
848
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
849
+ # A `binding` binds one or more `members` to a single `role`. Members can be
850
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
851
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
852
+ # role or a user-created custom role. For some types of Google Cloud resources,
853
+ # a `binding` can also specify a `condition`, which is a logical expression that
854
+ # allows access to a resource only if the expression evaluates to `true`. A
855
+ # condition can add constraints based on attributes of the request, the resource,
856
+ # or both. To learn which resources support conditions in their IAM policies,
857
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
858
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
859
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
860
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
861
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
862
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
863
+ # title": "expirable access", "description": "Does not grant access after Sep
864
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
865
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
866
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
867
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
868
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
869
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
870
+ # description: Does not grant access after Sep 2020 expression: request.time <
871
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
872
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
873
+ # google.com/iam/docs/).
874
+ class Policy
875
+ include Google::Apis::Core::Hashable
876
+
877
+ # Specifies cloud audit logging configuration for this policy.
878
+ # Corresponds to the JSON property `auditConfigs`
879
+ # @return [Array<Google::Apis::IamV1::AuditConfig>]
880
+ attr_accessor :audit_configs
881
+
882
+ # Associates a list of `members` to a `role`. Optionally, may specify a `
883
+ # condition` that determines how and when the `bindings` are applied. Each of
884
+ # the `bindings` must contain at least one member.
885
+ # Corresponds to the JSON property `bindings`
886
+ # @return [Array<Google::Apis::IamV1::Binding>]
887
+ attr_accessor :bindings
888
+
889
+ # `etag` is used for optimistic concurrency control as a way to help prevent
890
+ # simultaneous updates of a policy from overwriting each other. It is strongly
891
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
892
+ # to perform policy updates in order to avoid race conditions: An `etag` is
893
+ # returned in the response to `getIamPolicy`, and systems are expected to put
894
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
895
+ # applied to the same version of the policy. **Important:** If you use IAM
896
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
897
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
898
+ # with a version `1` policy, and all of the conditions in the version `3` policy
899
+ # are lost.
900
+ # Corresponds to the JSON property `etag`
901
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
902
+ # @return [String]
903
+ attr_accessor :etag
904
+
905
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
906
+ # Requests that specify an invalid value are rejected. Any operation that
907
+ # affects conditional role bindings must specify version `3`. This requirement
908
+ # applies to the following operations: * Getting a policy that includes a
909
+ # conditional role binding * Adding a conditional role binding to a policy *
910
+ # Changing a conditional role binding in a policy * Removing any role binding,
911
+ # with or without a condition, from a policy that includes conditions **
912
+ # Important:** If you use IAM Conditions, you must include the `etag` field
913
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
914
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
915
+ # conditions in the version `3` policy are lost. If a policy does not include
916
+ # any conditions, operations on that policy may specify any valid version or
917
+ # leave the field unset. To learn which resources support conditions in their
918
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
919
+ # conditions/resource-policies).
920
+ # Corresponds to the JSON property `version`
921
+ # @return [Fixnum]
922
+ attr_accessor :version
923
+
924
+ def initialize(**args)
925
+ update!(**args)
926
+ end
927
+
928
+ # Update properties of this object
929
+ def update!(**args)
930
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
931
+ @bindings = args[:bindings] if args.key?(:bindings)
932
+ @etag = args[:etag] if args.key?(:etag)
933
+ @version = args[:version] if args.key?(:version)
934
+ end
935
+ end
936
+
937
+ # The difference delta between two policies.
938
+ class PolicyDelta
939
+ include Google::Apis::Core::Hashable
940
+
941
+ # The delta for Bindings between two policies.
942
+ # Corresponds to the JSON property `bindingDeltas`
943
+ # @return [Array<Google::Apis::IamV1::BindingDelta>]
944
+ attr_accessor :binding_deltas
945
+
946
+ def initialize(**args)
947
+ update!(**args)
948
+ end
949
+
950
+ # Update properties of this object
951
+ def update!(**args)
952
+ @binding_deltas = args[:binding_deltas] if args.key?(:binding_deltas)
953
+ end
954
+ end
955
+
956
+ # A request to get the list of auditable services for a resource.
957
+ class QueryAuditableServicesRequest
958
+ include Google::Apis::Core::Hashable
959
+
960
+ # Required. The full resource name to query from the list of auditable services.
961
+ # The name follows the Google Cloud Platform resource format. For example, a
962
+ # Cloud Platform project with id `my-project` will be named `//
963
+ # cloudresourcemanager.googleapis.com/projects/my-project`.
964
+ # Corresponds to the JSON property `fullResourceName`
965
+ # @return [String]
966
+ attr_accessor :full_resource_name
967
+
968
+ def initialize(**args)
969
+ update!(**args)
970
+ end
971
+
972
+ # Update properties of this object
973
+ def update!(**args)
974
+ @full_resource_name = args[:full_resource_name] if args.key?(:full_resource_name)
975
+ end
976
+ end
977
+
978
+ # A response containing a list of auditable services for a resource.
979
+ class QueryAuditableServicesResponse
980
+ include Google::Apis::Core::Hashable
981
+
982
+ # The auditable services for a resource.
983
+ # Corresponds to the JSON property `services`
984
+ # @return [Array<Google::Apis::IamV1::AuditableService>]
985
+ attr_accessor :services
986
+
987
+ def initialize(**args)
988
+ update!(**args)
989
+ end
990
+
991
+ # Update properties of this object
992
+ def update!(**args)
993
+ @services = args[:services] if args.key?(:services)
994
+ end
995
+ end
996
+
997
+ # The grantable role query request.
998
+ class QueryGrantableRolesRequest
999
+ include Google::Apis::Core::Hashable
1000
+
1001
+ # Required. The full resource name to query from the list of grantable roles.
1002
+ # The name follows the Google Cloud Platform resource format. For example, a
1003
+ # Cloud Platform project with id `my-project` will be named `//
1004
+ # cloudresourcemanager.googleapis.com/projects/my-project`.
1005
+ # Corresponds to the JSON property `fullResourceName`
1006
+ # @return [String]
1007
+ attr_accessor :full_resource_name
1008
+
1009
+ # Optional limit on the number of roles to include in the response. The default
1010
+ # is 300, and the maximum is 1,000.
1011
+ # Corresponds to the JSON property `pageSize`
1012
+ # @return [Fixnum]
1013
+ attr_accessor :page_size
1014
+
1015
+ # Optional pagination token returned in an earlier QueryGrantableRolesResponse.
1016
+ # Corresponds to the JSON property `pageToken`
1017
+ # @return [String]
1018
+ attr_accessor :page_token
1019
+
1020
+ #
1021
+ # Corresponds to the JSON property `view`
1022
+ # @return [String]
1023
+ attr_accessor :view
1024
+
1025
+ def initialize(**args)
1026
+ update!(**args)
1027
+ end
1028
+
1029
+ # Update properties of this object
1030
+ def update!(**args)
1031
+ @full_resource_name = args[:full_resource_name] if args.key?(:full_resource_name)
1032
+ @page_size = args[:page_size] if args.key?(:page_size)
1033
+ @page_token = args[:page_token] if args.key?(:page_token)
1034
+ @view = args[:view] if args.key?(:view)
1035
+ end
1036
+ end
1037
+
1038
+ # The grantable role query response.
1039
+ class QueryGrantableRolesResponse
1040
+ include Google::Apis::Core::Hashable
1041
+
1042
+ # To retrieve the next page of results, set `QueryGrantableRolesRequest.
1043
+ # page_token` to this value.
1044
+ # Corresponds to the JSON property `nextPageToken`
1045
+ # @return [String]
1046
+ attr_accessor :next_page_token
1047
+
1048
+ # The list of matching roles.
1049
+ # Corresponds to the JSON property `roles`
1050
+ # @return [Array<Google::Apis::IamV1::Role>]
1051
+ attr_accessor :roles
1052
+
1053
+ def initialize(**args)
1054
+ update!(**args)
1055
+ end
1056
+
1057
+ # Update properties of this object
1058
+ def update!(**args)
1059
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1060
+ @roles = args[:roles] if args.key?(:roles)
1061
+ end
1062
+ end
1063
+
1064
+ # A request to get permissions which can be tested on a resource.
1065
+ class QueryTestablePermissionsRequest
1066
+ include Google::Apis::Core::Hashable
1067
+
1068
+ # Required. The full resource name to query from the list of testable
1069
+ # permissions. The name follows the Google Cloud Platform resource format. For
1070
+ # example, a Cloud Platform project with id `my-project` will be named `//
1071
+ # cloudresourcemanager.googleapis.com/projects/my-project`.
1072
+ # Corresponds to the JSON property `fullResourceName`
1073
+ # @return [String]
1074
+ attr_accessor :full_resource_name
1075
+
1076
+ # Optional limit on the number of permissions to include in the response. The
1077
+ # default is 100, and the maximum is 1,000.
1078
+ # Corresponds to the JSON property `pageSize`
1079
+ # @return [Fixnum]
1080
+ attr_accessor :page_size
1081
+
1082
+ # Optional pagination token returned in an earlier
1083
+ # QueryTestablePermissionsRequest.
1084
+ # Corresponds to the JSON property `pageToken`
1085
+ # @return [String]
1086
+ attr_accessor :page_token
1087
+
1088
+ def initialize(**args)
1089
+ update!(**args)
1090
+ end
1091
+
1092
+ # Update properties of this object
1093
+ def update!(**args)
1094
+ @full_resource_name = args[:full_resource_name] if args.key?(:full_resource_name)
1095
+ @page_size = args[:page_size] if args.key?(:page_size)
1096
+ @page_token = args[:page_token] if args.key?(:page_token)
1097
+ end
1098
+ end
1099
+
1100
+ # The response containing permissions which can be tested on a resource.
1101
+ class QueryTestablePermissionsResponse
1102
+ include Google::Apis::Core::Hashable
1103
+
1104
+ # To retrieve the next page of results, set `QueryTestableRolesRequest.
1105
+ # page_token` to this value.
1106
+ # Corresponds to the JSON property `nextPageToken`
1107
+ # @return [String]
1108
+ attr_accessor :next_page_token
1109
+
1110
+ # The Permissions testable on the requested resource.
1111
+ # Corresponds to the JSON property `permissions`
1112
+ # @return [Array<Google::Apis::IamV1::Permission>]
1113
+ attr_accessor :permissions
1114
+
1115
+ def initialize(**args)
1116
+ update!(**args)
1117
+ end
1118
+
1119
+ # Update properties of this object
1120
+ def update!(**args)
1121
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1122
+ @permissions = args[:permissions] if args.key?(:permissions)
1123
+ end
1124
+ end
1125
+
1126
+ # A role in the Identity and Access Management API.
1127
+ class Role
1128
+ include Google::Apis::Core::Hashable
1129
+
1130
+ # The current deleted state of the role. This field is read only. It will be
1131
+ # ignored in calls to CreateRole and UpdateRole.
1132
+ # Corresponds to the JSON property `deleted`
1133
+ # @return [Boolean]
1134
+ attr_accessor :deleted
1135
+ alias_method :deleted?, :deleted
1136
+
1137
+ # Optional. A human-readable description for the role.
1138
+ # Corresponds to the JSON property `description`
1139
+ # @return [String]
1140
+ attr_accessor :description
1141
+
1142
+ # Used to perform a consistent read-modify-write.
1143
+ # Corresponds to the JSON property `etag`
1144
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1145
+ # @return [String]
1146
+ attr_accessor :etag
1147
+
1148
+ # The names of the permissions this role grants when bound in an IAM policy.
1149
+ # Corresponds to the JSON property `includedPermissions`
1150
+ # @return [Array<String>]
1151
+ attr_accessor :included_permissions
1152
+
1153
+ # The name of the role. When Role is used in CreateRole, the role name must not
1154
+ # be set. When Role is used in output and other input such as UpdateRole, the
1155
+ # role name is the complete path, e.g., roles/logging.viewer for predefined
1156
+ # roles and organizations/`ORGANIZATION_ID`/roles/logging.viewer for custom
1157
+ # roles.
1158
+ # Corresponds to the JSON property `name`
1159
+ # @return [String]
1160
+ attr_accessor :name
1161
+
1162
+ # The current launch stage of the role. If the `ALPHA` launch stage has been
1163
+ # selected for a role, the `stage` field will not be included in the returned
1164
+ # definition for the role.
1165
+ # Corresponds to the JSON property `stage`
1166
+ # @return [String]
1167
+ attr_accessor :stage
1168
+
1169
+ # Optional. A human-readable title for the role. Typically this is limited to
1170
+ # 100 UTF-8 bytes.
1171
+ # Corresponds to the JSON property `title`
1172
+ # @return [String]
1173
+ attr_accessor :title
1174
+
1175
+ def initialize(**args)
1176
+ update!(**args)
1177
+ end
1178
+
1179
+ # Update properties of this object
1180
+ def update!(**args)
1181
+ @deleted = args[:deleted] if args.key?(:deleted)
1182
+ @description = args[:description] if args.key?(:description)
1183
+ @etag = args[:etag] if args.key?(:etag)
1184
+ @included_permissions = args[:included_permissions] if args.key?(:included_permissions)
1185
+ @name = args[:name] if args.key?(:name)
1186
+ @stage = args[:stage] if args.key?(:stage)
1187
+ @title = args[:title] if args.key?(:title)
1188
+ end
1189
+ end
1190
+
1191
+ # An IAM service account. A service account is an account for an application or
1192
+ # a virtual machine (VM) instance, not a person. You can use a service account
1193
+ # to call Google APIs. To learn more, read the [overview of service accounts](
1194
+ # https://cloud.google.com/iam/help/service-accounts/overview). When you create
1195
+ # a service account, you specify the project ID that owns the service account,
1196
+ # as well as a name that must be unique within the project. IAM uses these
1197
+ # values to create an email address that identifies the service account.
1198
+ class ServiceAccount
1199
+ include Google::Apis::Core::Hashable
1200
+
1201
+ # Optional. A user-specified, human-readable description of the service account.
1202
+ # The maximum length is 256 UTF-8 bytes.
1203
+ # Corresponds to the JSON property `description`
1204
+ # @return [String]
1205
+ attr_accessor :description
1206
+
1207
+ # Output only. Whether the service account is disabled.
1208
+ # Corresponds to the JSON property `disabled`
1209
+ # @return [Boolean]
1210
+ attr_accessor :disabled
1211
+ alias_method :disabled?, :disabled
1212
+
1213
+ # Optional. A user-specified, human-readable name for the service account. The
1214
+ # maximum length is 100 UTF-8 bytes.
1215
+ # Corresponds to the JSON property `displayName`
1216
+ # @return [String]
1217
+ attr_accessor :display_name
1218
+
1219
+ # Output only. The email address of the service account.
1220
+ # Corresponds to the JSON property `email`
1221
+ # @return [String]
1222
+ attr_accessor :email
1223
+
1224
+ # Deprecated. Do not use.
1225
+ # Corresponds to the JSON property `etag`
1226
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1227
+ # @return [String]
1228
+ attr_accessor :etag
1229
+
1230
+ # The resource name of the service account. Use one of the following formats: * `
1231
+ # projects/`PROJECT_ID`/serviceAccounts/`EMAIL_ADDRESS`` * `projects/`PROJECT_ID`
1232
+ # /serviceAccounts/`UNIQUE_ID`` As an alternative, you can use the `-` wildcard
1233
+ # character instead of the project ID: * `projects/-/serviceAccounts/`
1234
+ # EMAIL_ADDRESS`` * `projects/-/serviceAccounts/`UNIQUE_ID`` When possible,
1235
+ # avoid using the `-` wildcard character, because it can cause response messages
1236
+ # to contain misleading error codes. For example, if you try to get the service
1237
+ # account `projects/-/serviceAccounts/fake@example.com`, which does not exist,
1238
+ # the response contains an HTTP `403 Forbidden` error instead of a `404 Not
1239
+ # Found` error.
1240
+ # Corresponds to the JSON property `name`
1241
+ # @return [String]
1242
+ attr_accessor :name
1243
+
1244
+ # Output only. The OAuth 2.0 client ID for the service account.
1245
+ # Corresponds to the JSON property `oauth2ClientId`
1246
+ # @return [String]
1247
+ attr_accessor :oauth2_client_id
1248
+
1249
+ # Output only. The ID of the project that owns the service account.
1250
+ # Corresponds to the JSON property `projectId`
1251
+ # @return [String]
1252
+ attr_accessor :project_id
1253
+
1254
+ # Output only. The unique, stable numeric ID for the service account. Each
1255
+ # service account retains its unique ID even if you delete the service account.
1256
+ # For example, if you delete a service account, then create a new service
1257
+ # account with the same name, the new service account has a different unique ID
1258
+ # than the deleted service account.
1259
+ # Corresponds to the JSON property `uniqueId`
1260
+ # @return [String]
1261
+ attr_accessor :unique_id
1262
+
1263
+ def initialize(**args)
1264
+ update!(**args)
1265
+ end
1266
+
1267
+ # Update properties of this object
1268
+ def update!(**args)
1269
+ @description = args[:description] if args.key?(:description)
1270
+ @disabled = args[:disabled] if args.key?(:disabled)
1271
+ @display_name = args[:display_name] if args.key?(:display_name)
1272
+ @email = args[:email] if args.key?(:email)
1273
+ @etag = args[:etag] if args.key?(:etag)
1274
+ @name = args[:name] if args.key?(:name)
1275
+ @oauth2_client_id = args[:oauth2_client_id] if args.key?(:oauth2_client_id)
1276
+ @project_id = args[:project_id] if args.key?(:project_id)
1277
+ @unique_id = args[:unique_id] if args.key?(:unique_id)
1278
+ end
1279
+ end
1280
+
1281
+ # Represents a service account key. A service account has two sets of key-pairs:
1282
+ # user-managed, and system-managed. User-managed key-pairs can be created and
1283
+ # deleted by users. Users are responsible for rotating these keys periodically
1284
+ # to ensure security of their service accounts. Users retain the private key of
1285
+ # these key-pairs, and Google retains ONLY the public key. System-managed keys
1286
+ # are automatically rotated by Google, and are used for signing for a maximum of
1287
+ # two weeks. The rotation process is probabilistic, and usage of the new key
1288
+ # will gradually ramp up and down over the key's lifetime. If you cache the
1289
+ # public key set for a service account, we recommend that you update the cache
1290
+ # every 15 minutes. User-managed keys can be added and removed at any time, so
1291
+ # it is important to update the cache frequently. For Google-managed keys,
1292
+ # Google will publish a key at least 6 hours before it is first used for signing
1293
+ # and will keep publishing it for at least 6 hours after it was last used for
1294
+ # signing. Public keys for all service accounts are also published at the OAuth2
1295
+ # Service Account API.
1296
+ class ServiceAccountKey
1297
+ include Google::Apis::Core::Hashable
1298
+
1299
+ # Specifies the algorithm (and possibly key size) for the key.
1300
+ # Corresponds to the JSON property `keyAlgorithm`
1301
+ # @return [String]
1302
+ attr_accessor :key_algorithm
1303
+
1304
+ # The key origin.
1305
+ # Corresponds to the JSON property `keyOrigin`
1306
+ # @return [String]
1307
+ attr_accessor :key_origin
1308
+
1309
+ # The key type.
1310
+ # Corresponds to the JSON property `keyType`
1311
+ # @return [String]
1312
+ attr_accessor :key_type
1313
+
1314
+ # The resource name of the service account key in the following format `projects/
1315
+ # `PROJECT_ID`/serviceAccounts/`ACCOUNT`/keys/`key``.
1316
+ # Corresponds to the JSON property `name`
1317
+ # @return [String]
1318
+ attr_accessor :name
1319
+
1320
+ # The private key data. Only provided in `CreateServiceAccountKey` responses.
1321
+ # Make sure to keep the private key data secure because it allows for the
1322
+ # assertion of the service account identity. When base64 decoded, the private
1323
+ # key data can be used to authenticate with Google API client libraries and with
1324
+ # gcloud auth activate-service-account.
1325
+ # Corresponds to the JSON property `privateKeyData`
1326
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1327
+ # @return [String]
1328
+ attr_accessor :private_key_data
1329
+
1330
+ # The output format for the private key. Only provided in `
1331
+ # CreateServiceAccountKey` responses, not in `GetServiceAccountKey` or `
1332
+ # ListServiceAccountKey` responses. Google never exposes system-managed private
1333
+ # keys, and never retains user-managed private keys.
1334
+ # Corresponds to the JSON property `privateKeyType`
1335
+ # @return [String]
1336
+ attr_accessor :private_key_type
1337
+
1338
+ # The public key data. Only provided in `GetServiceAccountKey` responses.
1339
+ # Corresponds to the JSON property `publicKeyData`
1340
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1341
+ # @return [String]
1342
+ attr_accessor :public_key_data
1343
+
1344
+ # The key can be used after this timestamp.
1345
+ # Corresponds to the JSON property `validAfterTime`
1346
+ # @return [String]
1347
+ attr_accessor :valid_after_time
1348
+
1349
+ # The key can be used before this timestamp. For system-managed key pairs, this
1350
+ # timestamp is the end time for the private key signing operation. The public
1351
+ # key could still be used for verification for a few hours after this time.
1352
+ # Corresponds to the JSON property `validBeforeTime`
1353
+ # @return [String]
1354
+ attr_accessor :valid_before_time
1355
+
1356
+ def initialize(**args)
1357
+ update!(**args)
1358
+ end
1359
+
1360
+ # Update properties of this object
1361
+ def update!(**args)
1362
+ @key_algorithm = args[:key_algorithm] if args.key?(:key_algorithm)
1363
+ @key_origin = args[:key_origin] if args.key?(:key_origin)
1364
+ @key_type = args[:key_type] if args.key?(:key_type)
1365
+ @name = args[:name] if args.key?(:name)
1366
+ @private_key_data = args[:private_key_data] if args.key?(:private_key_data)
1367
+ @private_key_type = args[:private_key_type] if args.key?(:private_key_type)
1368
+ @public_key_data = args[:public_key_data] if args.key?(:public_key_data)
1369
+ @valid_after_time = args[:valid_after_time] if args.key?(:valid_after_time)
1370
+ @valid_before_time = args[:valid_before_time] if args.key?(:valid_before_time)
1371
+ end
1372
+ end
1373
+
1374
+ # Request message for `SetIamPolicy` method.
1375
+ class SetIamPolicyRequest
1376
+ include Google::Apis::Core::Hashable
1377
+
1378
+ # An Identity and Access Management (IAM) policy, which specifies access
1379
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1380
+ # A `binding` binds one or more `members` to a single `role`. Members can be
1381
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
1382
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
1383
+ # role or a user-created custom role. For some types of Google Cloud resources,
1384
+ # a `binding` can also specify a `condition`, which is a logical expression that
1385
+ # allows access to a resource only if the expression evaluates to `true`. A
1386
+ # condition can add constraints based on attributes of the request, the resource,
1387
+ # or both. To learn which resources support conditions in their IAM policies,
1388
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
1389
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
1390
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
1391
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
1392
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
1393
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
1394
+ # title": "expirable access", "description": "Does not grant access after Sep
1395
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
1396
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
1397
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
1398
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
1399
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
1400
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
1401
+ # description: Does not grant access after Sep 2020 expression: request.time <
1402
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
1403
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
1404
+ # google.com/iam/docs/).
1405
+ # Corresponds to the JSON property `policy`
1406
+ # @return [Google::Apis::IamV1::Policy]
1407
+ attr_accessor :policy
1408
+
1409
+ # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
1410
+ # the fields in the mask will be modified. If no mask is provided, the following
1411
+ # default mask is used: `paths: "bindings, etag"`
1412
+ # Corresponds to the JSON property `updateMask`
1413
+ # @return [String]
1414
+ attr_accessor :update_mask
1415
+
1416
+ def initialize(**args)
1417
+ update!(**args)
1418
+ end
1419
+
1420
+ # Update properties of this object
1421
+ def update!(**args)
1422
+ @policy = args[:policy] if args.key?(:policy)
1423
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1424
+ end
1425
+ end
1426
+
1427
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1428
+ # com/iam/help/credentials/migrate-api). The service account sign blob request.
1429
+ class SignBlobRequest
1430
+ include Google::Apis::Core::Hashable
1431
+
1432
+ # Required. Deprecated. [Migrate to Service Account Credentials API](https://
1433
+ # cloud.google.com/iam/help/credentials/migrate-api). The bytes to sign.
1434
+ # Corresponds to the JSON property `bytesToSign`
1435
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1436
+ # @return [String]
1437
+ attr_accessor :bytes_to_sign
1438
+
1439
+ def initialize(**args)
1440
+ update!(**args)
1441
+ end
1442
+
1443
+ # Update properties of this object
1444
+ def update!(**args)
1445
+ @bytes_to_sign = args[:bytes_to_sign] if args.key?(:bytes_to_sign)
1446
+ end
1447
+ end
1448
+
1449
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1450
+ # com/iam/help/credentials/migrate-api). The service account sign blob response.
1451
+ class SignBlobResponse
1452
+ include Google::Apis::Core::Hashable
1453
+
1454
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1455
+ # com/iam/help/credentials/migrate-api). The id of the key used to sign the blob.
1456
+ # Corresponds to the JSON property `keyId`
1457
+ # @return [String]
1458
+ attr_accessor :key_id
1459
+
1460
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1461
+ # com/iam/help/credentials/migrate-api). The signed blob.
1462
+ # Corresponds to the JSON property `signature`
1463
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1464
+ # @return [String]
1465
+ attr_accessor :signature
1466
+
1467
+ def initialize(**args)
1468
+ update!(**args)
1469
+ end
1470
+
1471
+ # Update properties of this object
1472
+ def update!(**args)
1473
+ @key_id = args[:key_id] if args.key?(:key_id)
1474
+ @signature = args[:signature] if args.key?(:signature)
1475
+ end
1476
+ end
1477
+
1478
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1479
+ # com/iam/help/credentials/migrate-api). The service account sign JWT request.
1480
+ class SignJwtRequest
1481
+ include Google::Apis::Core::Hashable
1482
+
1483
+ # Required. Deprecated. [Migrate to Service Account Credentials API](https://
1484
+ # cloud.google.com/iam/help/credentials/migrate-api). The JWT payload to sign.
1485
+ # Must be a serialized JSON object that contains a JWT Claims Set. For example: `
1486
+ # `"sub": "user@example.com", "iat": 313435`` If the JWT Claims Set contains an
1487
+ # expiration time (`exp`) claim, it must be an integer timestamp that is not in
1488
+ # the past and no more than 1 hour in the future. If the JWT Claims Set does not
1489
+ # contain an expiration time (`exp`) claim, this claim is added automatically,
1490
+ # with a timestamp that is 1 hour in the future.
1491
+ # Corresponds to the JSON property `payload`
1492
+ # @return [String]
1493
+ attr_accessor :payload
1494
+
1495
+ def initialize(**args)
1496
+ update!(**args)
1497
+ end
1498
+
1499
+ # Update properties of this object
1500
+ def update!(**args)
1501
+ @payload = args[:payload] if args.key?(:payload)
1502
+ end
1503
+ end
1504
+
1505
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1506
+ # com/iam/help/credentials/migrate-api). The service account sign JWT response.
1507
+ class SignJwtResponse
1508
+ include Google::Apis::Core::Hashable
1509
+
1510
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1511
+ # com/iam/help/credentials/migrate-api). The id of the key used to sign the JWT.
1512
+ # Corresponds to the JSON property `keyId`
1513
+ # @return [String]
1514
+ attr_accessor :key_id
1515
+
1516
+ # Deprecated. [Migrate to Service Account Credentials API](https://cloud.google.
1517
+ # com/iam/help/credentials/migrate-api). The signed JWT.
1518
+ # Corresponds to the JSON property `signedJwt`
1519
+ # @return [String]
1520
+ attr_accessor :signed_jwt
1521
+
1522
+ def initialize(**args)
1523
+ update!(**args)
1524
+ end
1525
+
1526
+ # Update properties of this object
1527
+ def update!(**args)
1528
+ @key_id = args[:key_id] if args.key?(:key_id)
1529
+ @signed_jwt = args[:signed_jwt] if args.key?(:signed_jwt)
1530
+ end
1531
+ end
1532
+
1533
+ # The `Status` type defines a logical error model that is suitable for different
1534
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1535
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1536
+ # data: error code, error message, and error details. You can find out more
1537
+ # about this error model and how to work with it in the [API Design Guide](https:
1538
+ # //cloud.google.com/apis/design/errors).
1539
+ class Status
1540
+ include Google::Apis::Core::Hashable
1541
+
1542
+ # The status code, which should be an enum value of google.rpc.Code.
1543
+ # Corresponds to the JSON property `code`
1544
+ # @return [Fixnum]
1545
+ attr_accessor :code
1546
+
1547
+ # A list of messages that carry the error details. There is a common set of
1548
+ # message types for APIs to use.
1549
+ # Corresponds to the JSON property `details`
1550
+ # @return [Array<Hash<String,Object>>]
1551
+ attr_accessor :details
1552
+
1553
+ # A developer-facing error message, which should be in English. Any user-facing
1554
+ # error message should be localized and sent in the google.rpc.Status.details
1555
+ # field, or localized by the client.
1556
+ # Corresponds to the JSON property `message`
1557
+ # @return [String]
1558
+ attr_accessor :message
1559
+
1560
+ def initialize(**args)
1561
+ update!(**args)
1562
+ end
1563
+
1564
+ # Update properties of this object
1565
+ def update!(**args)
1566
+ @code = args[:code] if args.key?(:code)
1567
+ @details = args[:details] if args.key?(:details)
1568
+ @message = args[:message] if args.key?(:message)
1569
+ end
1570
+ end
1571
+
1572
+ # Request message for `TestIamPermissions` method.
1573
+ class TestIamPermissionsRequest
1574
+ include Google::Apis::Core::Hashable
1575
+
1576
+ # The set of permissions to check for the `resource`. Permissions with wildcards
1577
+ # (such as '*' or 'storage.*') are not allowed. For more information see [IAM
1578
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
1579
+ # Corresponds to the JSON property `permissions`
1580
+ # @return [Array<String>]
1581
+ attr_accessor :permissions
1582
+
1583
+ def initialize(**args)
1584
+ update!(**args)
1585
+ end
1586
+
1587
+ # Update properties of this object
1588
+ def update!(**args)
1589
+ @permissions = args[:permissions] if args.key?(:permissions)
1590
+ end
1591
+ end
1592
+
1593
+ # Response message for `TestIamPermissions` method.
1594
+ class TestIamPermissionsResponse
1595
+ include Google::Apis::Core::Hashable
1596
+
1597
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
1598
+ # Corresponds to the JSON property `permissions`
1599
+ # @return [Array<String>]
1600
+ attr_accessor :permissions
1601
+
1602
+ def initialize(**args)
1603
+ update!(**args)
1604
+ end
1605
+
1606
+ # Update properties of this object
1607
+ def update!(**args)
1608
+ @permissions = args[:permissions] if args.key?(:permissions)
1609
+ end
1610
+ end
1611
+
1612
+ # The request to undelete an existing role.
1613
+ class UndeleteRoleRequest
1614
+ include Google::Apis::Core::Hashable
1615
+
1616
+ # Used to perform a consistent read-modify-write.
1617
+ # Corresponds to the JSON property `etag`
1618
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1619
+ # @return [String]
1620
+ attr_accessor :etag
1621
+
1622
+ def initialize(**args)
1623
+ update!(**args)
1624
+ end
1625
+
1626
+ # Update properties of this object
1627
+ def update!(**args)
1628
+ @etag = args[:etag] if args.key?(:etag)
1629
+ end
1630
+ end
1631
+
1632
+ # The service account undelete request.
1633
+ class UndeleteServiceAccountRequest
1634
+ include Google::Apis::Core::Hashable
1635
+
1636
+ def initialize(**args)
1637
+ update!(**args)
1638
+ end
1639
+
1640
+ # Update properties of this object
1641
+ def update!(**args)
1642
+ end
1643
+ end
1644
+
1645
+ #
1646
+ class UndeleteServiceAccountResponse
1647
+ include Google::Apis::Core::Hashable
1648
+
1649
+ # An IAM service account. A service account is an account for an application or
1650
+ # a virtual machine (VM) instance, not a person. You can use a service account
1651
+ # to call Google APIs. To learn more, read the [overview of service accounts](
1652
+ # https://cloud.google.com/iam/help/service-accounts/overview). When you create
1653
+ # a service account, you specify the project ID that owns the service account,
1654
+ # as well as a name that must be unique within the project. IAM uses these
1655
+ # values to create an email address that identifies the service account.
1656
+ # Corresponds to the JSON property `restoredAccount`
1657
+ # @return [Google::Apis::IamV1::ServiceAccount]
1658
+ attr_accessor :restored_account
1659
+
1660
+ def initialize(**args)
1661
+ update!(**args)
1662
+ end
1663
+
1664
+ # Update properties of this object
1665
+ def update!(**args)
1666
+ @restored_account = args[:restored_account] if args.key?(:restored_account)
1667
+ end
1668
+ end
1669
+
1670
+ # The service account key upload request.
1671
+ class UploadServiceAccountKeyRequest
1672
+ include Google::Apis::Core::Hashable
1673
+
1674
+ # A field that allows clients to upload their own public key. If set, use this
1675
+ # public key data to create a service account key for given service account.
1676
+ # Please note, the expected format for this field is X509_PEM.
1677
+ # Corresponds to the JSON property `publicKeyData`
1678
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1679
+ # @return [String]
1680
+ attr_accessor :public_key_data
1681
+
1682
+ def initialize(**args)
1683
+ update!(**args)
1684
+ end
1685
+
1686
+ # Update properties of this object
1687
+ def update!(**args)
1688
+ @public_key_data = args[:public_key_data] if args.key?(:public_key_data)
1689
+ end
1690
+ end
1691
+ end
1692
+ end
1693
+ end