google-apis-serviceconsumermanagement_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: 5de4b05aaba94d11f2283c65410599d8b3f69ab4d09b368c68542083cbd7256e
4
+ data.tar.gz: 3b4c5bb94fbd062aff10d1616d37c9520f3773a066230483121bb079418681ab
5
+ SHA512:
6
+ metadata.gz: 58ea1340b542746f5914d4256280d17ded46e5484ef7c3ca1ecb6fab473f311805b7f949efd6d2070e6f8198c0046fde58a4ff6c66a25753db2b4aab58b0fedc
7
+ data.tar.gz: 2293e7c04d2fd28fd593f5e88292abffabc06901dcad2d9e87a8615f1f5e96d6465d2b796c8bc657fdf78767a7a959cf3f8117a721f26f429bf1e64a334cba86
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-serviceconsumermanagement_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/serviceconsumermanagement_v1/*.rb
9
+ lib/google/apis/serviceconsumermanagement_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-serviceconsumermanagement_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201208
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 Service Consumer Management API
2
+
3
+ This is a simple client library for version V1 of the Service Consumer Management 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/serviceconsumermanagement.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-serviceconsumermanagement_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-serviceconsumermanagement_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/serviceconsumermanagement_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::ServiceconsumermanagementV1::ServiceConsumerManagementService.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 Serviceconsumermanagement service in particular.)
67
+
68
+ For reference information on specific calls in the Service Consumer Management API, see the {Google::Apis::ServiceconsumermanagementV1::ServiceConsumerManagementService 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-serviceconsumermanagement_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/service-consumer-management/docs/overview) 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/serviceconsumermanagement_v1"
@@ -0,0 +1,36 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/serviceconsumermanagement_v1/service.rb'
16
+ require 'google/apis/serviceconsumermanagement_v1/classes.rb'
17
+ require 'google/apis/serviceconsumermanagement_v1/representations.rb'
18
+ require 'google/apis/serviceconsumermanagement_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Service Consumer Management API
23
+ #
24
+ # Manages the service consumers of a Service Infrastructure service.
25
+ #
26
+ # @see https://cloud.google.com/service-consumer-management/docs/overview
27
+ module ServiceconsumermanagementV1
28
+ # Version of the Service Consumer Management API this client connects to.
29
+ # This is NOT the gem version.
30
+ VERSION = 'V1'
31
+
32
+ # View and manage your data across Google Cloud Platform services
33
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,3864 @@
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 ServiceconsumermanagementV1
24
+
25
+ # Request to add a newly created and configured tenant project to a tenancy unit.
26
+ class AddTenantProjectRequest
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # This structure defines a tenant project to be added to the specified tenancy
30
+ # unit and its initial configuration and properties. A project lien is created
31
+ # for the tenant project to prevent the tenant project from being deleted
32
+ # accidentally. The lien is deleted as part of tenant project removal.
33
+ # Corresponds to the JSON property `projectConfig`
34
+ # @return [Google::Apis::ServiceconsumermanagementV1::TenantProjectConfig]
35
+ attr_accessor :project_config
36
+
37
+ # Required. Tag of the added project. Must be less than 128 characters. Required.
38
+ # Corresponds to the JSON property `tag`
39
+ # @return [String]
40
+ attr_accessor :tag
41
+
42
+ def initialize(**args)
43
+ update!(**args)
44
+ end
45
+
46
+ # Update properties of this object
47
+ def update!(**args)
48
+ @project_config = args[:project_config] if args.key?(:project_config)
49
+ @tag = args[:tag] if args.key?(:tag)
50
+ end
51
+ end
52
+
53
+ # Api is a light-weight descriptor for an API Interface. Interfaces are also
54
+ # described as "protocol buffer services" in some contexts, such as by the "
55
+ # service" keyword in a .proto file, but they are different from API Services,
56
+ # which represent a concrete implementation of an interface as opposed to simply
57
+ # a description of methods and bindings. They are also sometimes simply referred
58
+ # to as "APIs" in other contexts, such as the name of this message itself. See
59
+ # https://cloud.google.com/apis/design/glossary for detailed terminology.
60
+ class Api
61
+ include Google::Apis::Core::Hashable
62
+
63
+ # The methods of this interface, in unspecified order.
64
+ # Corresponds to the JSON property `methods`
65
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::MethodProp>]
66
+ attr_accessor :methods_prop
67
+
68
+ # Included interfaces. See Mixin.
69
+ # Corresponds to the JSON property `mixins`
70
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Mixin>]
71
+ attr_accessor :mixins
72
+
73
+ # The fully qualified name of this interface, including package name followed by
74
+ # the interface's simple name.
75
+ # Corresponds to the JSON property `name`
76
+ # @return [String]
77
+ attr_accessor :name
78
+
79
+ # Any metadata attached to the interface.
80
+ # Corresponds to the JSON property `options`
81
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Option>]
82
+ attr_accessor :options
83
+
84
+ # `SourceContext` represents information about the source of a protobuf element,
85
+ # like the file in which it is defined.
86
+ # Corresponds to the JSON property `sourceContext`
87
+ # @return [Google::Apis::ServiceconsumermanagementV1::SourceContext]
88
+ attr_accessor :source_context
89
+
90
+ # The source syntax of the service.
91
+ # Corresponds to the JSON property `syntax`
92
+ # @return [String]
93
+ attr_accessor :syntax
94
+
95
+ # A version string for this interface. If specified, must have the form `major-
96
+ # version.minor-version`, as in `1.10`. If the minor version is omitted, it
97
+ # defaults to zero. If the entire version field is empty, the major version is
98
+ # derived from the package name, as outlined below. If the field is not empty,
99
+ # the version in the package name will be verified to be consistent with what is
100
+ # provided here. The versioning schema uses [semantic versioning](http://semver.
101
+ # org) where the major version number indicates a breaking change and the minor
102
+ # version an additive, non-breaking change. Both version numbers are signals to
103
+ # users what to expect from different versions, and should be carefully chosen
104
+ # based on the product plan. The major version is also reflected in the package
105
+ # name of the interface, which must end in `v`, as in `google.feature.v1`. For
106
+ # major versions 0 and 1, the suffix can be omitted. Zero major versions must
107
+ # only be used for experimental, non-GA interfaces.
108
+ # Corresponds to the JSON property `version`
109
+ # @return [String]
110
+ attr_accessor :version
111
+
112
+ def initialize(**args)
113
+ update!(**args)
114
+ end
115
+
116
+ # Update properties of this object
117
+ def update!(**args)
118
+ @methods_prop = args[:methods_prop] if args.key?(:methods_prop)
119
+ @mixins = args[:mixins] if args.key?(:mixins)
120
+ @name = args[:name] if args.key?(:name)
121
+ @options = args[:options] if args.key?(:options)
122
+ @source_context = args[:source_context] if args.key?(:source_context)
123
+ @syntax = args[:syntax] if args.key?(:syntax)
124
+ @version = args[:version] if args.key?(:version)
125
+ end
126
+ end
127
+
128
+ # Request to apply configuration to an existing tenant project.
129
+ class ApplyTenantProjectConfigRequest
130
+ include Google::Apis::Core::Hashable
131
+
132
+ # This structure defines a tenant project to be added to the specified tenancy
133
+ # unit and its initial configuration and properties. A project lien is created
134
+ # for the tenant project to prevent the tenant project from being deleted
135
+ # accidentally. The lien is deleted as part of tenant project removal.
136
+ # Corresponds to the JSON property `projectConfig`
137
+ # @return [Google::Apis::ServiceconsumermanagementV1::TenantProjectConfig]
138
+ attr_accessor :project_config
139
+
140
+ # Required. Tag of the project. Must be less than 128 characters. Required.
141
+ # Corresponds to the JSON property `tag`
142
+ # @return [String]
143
+ attr_accessor :tag
144
+
145
+ def initialize(**args)
146
+ update!(**args)
147
+ end
148
+
149
+ # Update properties of this object
150
+ def update!(**args)
151
+ @project_config = args[:project_config] if args.key?(:project_config)
152
+ @tag = args[:tag] if args.key?(:tag)
153
+ end
154
+ end
155
+
156
+ # Request to attach an existing project to the tenancy unit as a new tenant
157
+ # resource.
158
+ class AttachTenantProjectRequest
159
+ include Google::Apis::Core::Hashable
160
+
161
+ # When attaching an external project, this is in the format of `projects/`
162
+ # project_number``.
163
+ # Corresponds to the JSON property `externalResource`
164
+ # @return [String]
165
+ attr_accessor :external_resource
166
+
167
+ # When attaching a reserved project already in tenancy units, this is the tag of
168
+ # a tenant resource under the tenancy unit for the managed service's service
169
+ # producer project. The reserved tenant resource must be in an active state.
170
+ # Corresponds to the JSON property `reservedResource`
171
+ # @return [String]
172
+ attr_accessor :reserved_resource
173
+
174
+ # Required. Tag of the tenant resource after attachment. Must be less than 128
175
+ # characters. Required.
176
+ # Corresponds to the JSON property `tag`
177
+ # @return [String]
178
+ attr_accessor :tag
179
+
180
+ def initialize(**args)
181
+ update!(**args)
182
+ end
183
+
184
+ # Update properties of this object
185
+ def update!(**args)
186
+ @external_resource = args[:external_resource] if args.key?(:external_resource)
187
+ @reserved_resource = args[:reserved_resource] if args.key?(:reserved_resource)
188
+ @tag = args[:tag] if args.key?(:tag)
189
+ end
190
+ end
191
+
192
+ # Configuration for an authentication provider, including support for [JSON Web
193
+ # Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
194
+ class AuthProvider
195
+ include Google::Apis::Core::Hashable
196
+
197
+ # The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-
198
+ # web-token-32#section-4.1.3). that are allowed to access. A JWT containing any
199
+ # of these audiences will be accepted. When this setting is absent, JWTs with
200
+ # audiences: - "https://[service.name]/[google.protobuf.Api.name]" - "https://[
201
+ # service.name]/" will be accepted. For example, if no audiences are in the
202
+ # setting, LibraryService API will accept JWTs with the following audiences: -
203
+ # https://library-example.googleapis.com/google.example.library.v1.
204
+ # LibraryService - https://library-example.googleapis.com/ Example: audiences:
205
+ # bookstore_android.apps.googleusercontent.com, bookstore_web.apps.
206
+ # googleusercontent.com
207
+ # Corresponds to the JSON property `audiences`
208
+ # @return [String]
209
+ attr_accessor :audiences
210
+
211
+ # Redirect URL if JWT token is required but not present or is expired. Implement
212
+ # authorizationUrl of securityDefinitions in OpenAPI spec.
213
+ # Corresponds to the JSON property `authorizationUrl`
214
+ # @return [String]
215
+ attr_accessor :authorization_url
216
+
217
+ # The unique identifier of the auth provider. It will be referred to by `
218
+ # AuthRequirement.provider_id`. Example: "bookstore_auth".
219
+ # Corresponds to the JSON property `id`
220
+ # @return [String]
221
+ attr_accessor :id
222
+
223
+ # Identifies the principal that issued the JWT. See https://tools.ietf.org/html/
224
+ # draft-ietf-oauth-json-web-token-32#section-4.1.1 Usually a URL or an email
225
+ # address. Example: https://securetoken.google.com Example: 1234567-compute@
226
+ # developer.gserviceaccount.com
227
+ # Corresponds to the JSON property `issuer`
228
+ # @return [String]
229
+ attr_accessor :issuer
230
+
231
+ # URL of the provider's public key set to validate signature of the JWT. See [
232
+ # OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#
233
+ # ProviderMetadata). Optional if the key set document: - can be retrieved from [
234
+ # OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html)
235
+ # of the issuer. - can be inferred from the email domain of the issuer (e.g. a
236
+ # Google service account). Example: https://www.googleapis.com/oauth2/v1/certs
237
+ # Corresponds to the JSON property `jwksUri`
238
+ # @return [String]
239
+ attr_accessor :jwks_uri
240
+
241
+ # Defines the locations to extract the JWT. JWT locations can be either from
242
+ # HTTP headers or URL query parameters. The rule is that the first match wins.
243
+ # The checking order is: checking all headers first, then URL query parameters.
244
+ # If not specified, default to use following 3 locations: 1) Authorization:
245
+ # Bearer 2) x-goog-iap-jwt-assertion 3) access_token query parameter Default
246
+ # locations can be specified as followings: jwt_locations: - header:
247
+ # Authorization value_prefix: "Bearer " - header: x-goog-iap-jwt-assertion -
248
+ # query: access_token
249
+ # Corresponds to the JSON property `jwtLocations`
250
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::JwtLocation>]
251
+ attr_accessor :jwt_locations
252
+
253
+ def initialize(**args)
254
+ update!(**args)
255
+ end
256
+
257
+ # Update properties of this object
258
+ def update!(**args)
259
+ @audiences = args[:audiences] if args.key?(:audiences)
260
+ @authorization_url = args[:authorization_url] if args.key?(:authorization_url)
261
+ @id = args[:id] if args.key?(:id)
262
+ @issuer = args[:issuer] if args.key?(:issuer)
263
+ @jwks_uri = args[:jwks_uri] if args.key?(:jwks_uri)
264
+ @jwt_locations = args[:jwt_locations] if args.key?(:jwt_locations)
265
+ end
266
+ end
267
+
268
+ # User-defined authentication requirements, including support for [JSON Web
269
+ # Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
270
+ class AuthRequirement
271
+ include Google::Apis::Core::Hashable
272
+
273
+ # NOTE: This will be deprecated soon, once AuthProvider.audiences is implemented
274
+ # and accepted in all the runtime components. The list of JWT [audiences](https:/
275
+ # /tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that
276
+ # are allowed to access. A JWT containing any of these audiences will be
277
+ # accepted. When this setting is absent, only JWTs with audience "https://
278
+ # Service_name/API_name" will be accepted. For example, if no audiences are in
279
+ # the setting, LibraryService API will only accept JWTs with the following
280
+ # audience "https://library-example.googleapis.com/google.example.library.v1.
281
+ # LibraryService". Example: audiences: bookstore_android.apps.googleusercontent.
282
+ # com, bookstore_web.apps.googleusercontent.com
283
+ # Corresponds to the JSON property `audiences`
284
+ # @return [String]
285
+ attr_accessor :audiences
286
+
287
+ # id from authentication provider. Example: provider_id: bookstore_auth
288
+ # Corresponds to the JSON property `providerId`
289
+ # @return [String]
290
+ attr_accessor :provider_id
291
+
292
+ def initialize(**args)
293
+ update!(**args)
294
+ end
295
+
296
+ # Update properties of this object
297
+ def update!(**args)
298
+ @audiences = args[:audiences] if args.key?(:audiences)
299
+ @provider_id = args[:provider_id] if args.key?(:provider_id)
300
+ end
301
+ end
302
+
303
+ # `Authentication` defines the authentication configuration for an API. Example
304
+ # for an API targeted for external use: name: calendar.googleapis.com
305
+ # authentication: providers: - id: google_calendar_auth jwks_uri: https://www.
306
+ # googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: -
307
+ # selector: "*" requirements: provider_id: google_calendar_auth
308
+ class Authentication
309
+ include Google::Apis::Core::Hashable
310
+
311
+ # Defines a set of authentication providers that a service supports.
312
+ # Corresponds to the JSON property `providers`
313
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::AuthProvider>]
314
+ attr_accessor :providers
315
+
316
+ # A list of authentication rules that apply to individual API methods. **NOTE:**
317
+ # All service configuration rules follow "last one wins" order.
318
+ # Corresponds to the JSON property `rules`
319
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::AuthenticationRule>]
320
+ attr_accessor :rules
321
+
322
+ def initialize(**args)
323
+ update!(**args)
324
+ end
325
+
326
+ # Update properties of this object
327
+ def update!(**args)
328
+ @providers = args[:providers] if args.key?(:providers)
329
+ @rules = args[:rules] if args.key?(:rules)
330
+ end
331
+ end
332
+
333
+ # Authentication rules for the service. By default, if a method has any
334
+ # authentication requirements, every request must include a valid credential
335
+ # matching one of the requirements. It's an error to include more than one kind
336
+ # of credential in a single request. If a method doesn't have any auth
337
+ # requirements, request credentials will be ignored.
338
+ class AuthenticationRule
339
+ include Google::Apis::Core::Hashable
340
+
341
+ # If true, the service accepts API keys without any other credential. This flag
342
+ # only applies to HTTP and gRPC requests.
343
+ # Corresponds to the JSON property `allowWithoutCredential`
344
+ # @return [Boolean]
345
+ attr_accessor :allow_without_credential
346
+ alias_method :allow_without_credential?, :allow_without_credential
347
+
348
+ # OAuth scopes are a way to define data and permissions on data. For example,
349
+ # there are scopes defined for "Read-only access to Google Calendar" and "Access
350
+ # to Cloud Platform". Users can consent to a scope for an application, giving it
351
+ # permission to access that data on their behalf. OAuth scope specifications
352
+ # should be fairly coarse grained; a user will need to see and understand the
353
+ # text description of what your scope means. In most cases: use one or at most
354
+ # two OAuth scopes for an entire family of products. If your product has
355
+ # multiple APIs, you should probably be sharing the OAuth scope across all of
356
+ # those APIs. When you need finer grained OAuth consent screens: talk with your
357
+ # product management about how developers will use them in practice. Please note
358
+ # that even though each of the canonical scopes is enough for a request to be
359
+ # accepted and passed to the backend, a request can still fail due to the
360
+ # backend requiring additional scopes or permissions.
361
+ # Corresponds to the JSON property `oauth`
362
+ # @return [Google::Apis::ServiceconsumermanagementV1::OAuthRequirements]
363
+ attr_accessor :oauth
364
+
365
+ # Requirements for additional authentication providers.
366
+ # Corresponds to the JSON property `requirements`
367
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::AuthRequirement>]
368
+ attr_accessor :requirements
369
+
370
+ # Selects the methods to which this rule applies. Refer to selector for syntax
371
+ # details.
372
+ # Corresponds to the JSON property `selector`
373
+ # @return [String]
374
+ attr_accessor :selector
375
+
376
+ def initialize(**args)
377
+ update!(**args)
378
+ end
379
+
380
+ # Update properties of this object
381
+ def update!(**args)
382
+ @allow_without_credential = args[:allow_without_credential] if args.key?(:allow_without_credential)
383
+ @oauth = args[:oauth] if args.key?(:oauth)
384
+ @requirements = args[:requirements] if args.key?(:requirements)
385
+ @selector = args[:selector] if args.key?(:selector)
386
+ end
387
+ end
388
+
389
+ # `Backend` defines the backend configuration for a service.
390
+ class Backend
391
+ include Google::Apis::Core::Hashable
392
+
393
+ # A list of API backend rules that apply to individual API methods. **NOTE:**
394
+ # All service configuration rules follow "last one wins" order.
395
+ # Corresponds to the JSON property `rules`
396
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::BackendRule>]
397
+ attr_accessor :rules
398
+
399
+ def initialize(**args)
400
+ update!(**args)
401
+ end
402
+
403
+ # Update properties of this object
404
+ def update!(**args)
405
+ @rules = args[:rules] if args.key?(:rules)
406
+ end
407
+ end
408
+
409
+ # A backend rule provides configuration for an individual API element.
410
+ class BackendRule
411
+ include Google::Apis::Core::Hashable
412
+
413
+ # The address of the API backend. The scheme is used to determine the backend
414
+ # protocol and security. The following schemes are accepted: SCHEME PROTOCOL
415
+ # SECURITY http:// HTTP None https:// HTTP TLS grpc:// gRPC None grpcs:// gRPC
416
+ # TLS It is recommended to explicitly include a scheme. Leaving out the scheme
417
+ # may cause constrasting behaviors across platforms. If the port is unspecified,
418
+ # the default is: - 80 for schemes without TLS - 443 for schemes with TLS For
419
+ # HTTP backends, use protocol to specify the protocol version.
420
+ # Corresponds to the JSON property `address`
421
+ # @return [String]
422
+ attr_accessor :address
423
+
424
+ # The number of seconds to wait for a response from a request. The default
425
+ # varies based on the request protocol and deployment environment.
426
+ # Corresponds to the JSON property `deadline`
427
+ # @return [Float]
428
+ attr_accessor :deadline
429
+
430
+ # When disable_auth is true, a JWT ID token won't be generated and the original "
431
+ # Authorization" HTTP header will be preserved. If the header is used to carry
432
+ # the original token and is expected by the backend, this field must be set to
433
+ # true to preserve the header.
434
+ # Corresponds to the JSON property `disableAuth`
435
+ # @return [Boolean]
436
+ attr_accessor :disable_auth
437
+ alias_method :disable_auth?, :disable_auth
438
+
439
+ # The JWT audience is used when generating a JWT ID token for the backend. This
440
+ # ID token will be added in the HTTP "authorization" header, and sent to the
441
+ # backend.
442
+ # Corresponds to the JSON property `jwtAudience`
443
+ # @return [String]
444
+ attr_accessor :jwt_audience
445
+
446
+ # Minimum deadline in seconds needed for this method. Calls having deadline
447
+ # value lower than this will be rejected.
448
+ # Corresponds to the JSON property `minDeadline`
449
+ # @return [Float]
450
+ attr_accessor :min_deadline
451
+
452
+ # The number of seconds to wait for the completion of a long running operation.
453
+ # The default is no deadline.
454
+ # Corresponds to the JSON property `operationDeadline`
455
+ # @return [Float]
456
+ attr_accessor :operation_deadline
457
+
458
+ #
459
+ # Corresponds to the JSON property `pathTranslation`
460
+ # @return [String]
461
+ attr_accessor :path_translation
462
+
463
+ # The protocol used for sending a request to the backend. The supported values
464
+ # are "http/1.1" and "h2". The default value is inferred from the scheme in the
465
+ # address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1 grpc:// h2
466
+ # grpcs:// h2 For secure HTTP backends (https://) that support HTTP/2, set this
467
+ # field to "h2" for improved performance. Configuring this field to non-default
468
+ # values is only supported for secure HTTP backends. This field will be ignored
469
+ # for all other backends. See https://www.iana.org/assignments/tls-extensiontype-
470
+ # values/tls-extensiontype-values.xhtml#alpn-protocol-ids for more details on
471
+ # the supported values.
472
+ # Corresponds to the JSON property `protocol`
473
+ # @return [String]
474
+ attr_accessor :protocol
475
+
476
+ # Selects the methods to which this rule applies. Refer to selector for syntax
477
+ # details.
478
+ # Corresponds to the JSON property `selector`
479
+ # @return [String]
480
+ attr_accessor :selector
481
+
482
+ def initialize(**args)
483
+ update!(**args)
484
+ end
485
+
486
+ # Update properties of this object
487
+ def update!(**args)
488
+ @address = args[:address] if args.key?(:address)
489
+ @deadline = args[:deadline] if args.key?(:deadline)
490
+ @disable_auth = args[:disable_auth] if args.key?(:disable_auth)
491
+ @jwt_audience = args[:jwt_audience] if args.key?(:jwt_audience)
492
+ @min_deadline = args[:min_deadline] if args.key?(:min_deadline)
493
+ @operation_deadline = args[:operation_deadline] if args.key?(:operation_deadline)
494
+ @path_translation = args[:path_translation] if args.key?(:path_translation)
495
+ @protocol = args[:protocol] if args.key?(:protocol)
496
+ @selector = args[:selector] if args.key?(:selector)
497
+ end
498
+ end
499
+
500
+ # Billing related configuration of the service. The following example shows how
501
+ # to configure monitored resources and metrics for billing, `
502
+ # consumer_destinations` is the only supported destination and the monitored
503
+ # resources need at least one label key `cloud.googleapis.com/location` to
504
+ # indicate the location of the billing usage, using different monitored
505
+ # resources between monitoring and billing is recommended so they can be evolved
506
+ # independently: monitored_resources: - type: library.googleapis.com/
507
+ # billing_branch labels: - key: cloud.googleapis.com/location description: |
508
+ # Predefined label to support billing location restriction. - key: city
509
+ # description: | Custom label to define the city where the library branch is
510
+ # located in. - key: name description: Custom label to define the name of the
511
+ # library branch. metrics: - name: library.googleapis.com/book/borrowed_count
512
+ # metric_kind: DELTA value_type: INT64 unit: "1" billing: consumer_destinations:
513
+ # - monitored_resource: library.googleapis.com/billing_branch metrics: - library.
514
+ # googleapis.com/book/borrowed_count
515
+ class Billing
516
+ include Google::Apis::Core::Hashable
517
+
518
+ # Billing configurations for sending metrics to the consumer project. There can
519
+ # be multiple consumer destinations per service, each one must have a different
520
+ # monitored resource type. A metric can be used in at most one consumer
521
+ # destination.
522
+ # Corresponds to the JSON property `consumerDestinations`
523
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::BillingDestination>]
524
+ attr_accessor :consumer_destinations
525
+
526
+ def initialize(**args)
527
+ update!(**args)
528
+ end
529
+
530
+ # Update properties of this object
531
+ def update!(**args)
532
+ @consumer_destinations = args[:consumer_destinations] if args.key?(:consumer_destinations)
533
+ end
534
+ end
535
+
536
+ # Describes the billing configuration for a new tenant project.
537
+ class BillingConfig
538
+ include Google::Apis::Core::Hashable
539
+
540
+ # Name of the billing account. For example `billingAccounts/012345-567890-ABCDEF`
541
+ # .
542
+ # Corresponds to the JSON property `billingAccount`
543
+ # @return [String]
544
+ attr_accessor :billing_account
545
+
546
+ def initialize(**args)
547
+ update!(**args)
548
+ end
549
+
550
+ # Update properties of this object
551
+ def update!(**args)
552
+ @billing_account = args[:billing_account] if args.key?(:billing_account)
553
+ end
554
+ end
555
+
556
+ # Configuration of a specific billing destination (Currently only support bill
557
+ # against consumer project).
558
+ class BillingDestination
559
+ include Google::Apis::Core::Hashable
560
+
561
+ # Names of the metrics to report to this billing destination. Each name must be
562
+ # defined in Service.metrics section.
563
+ # Corresponds to the JSON property `metrics`
564
+ # @return [Array<String>]
565
+ attr_accessor :metrics
566
+
567
+ # The monitored resource type. The type must be defined in Service.
568
+ # monitored_resources section.
569
+ # Corresponds to the JSON property `monitoredResource`
570
+ # @return [String]
571
+ attr_accessor :monitored_resource
572
+
573
+ def initialize(**args)
574
+ update!(**args)
575
+ end
576
+
577
+ # Update properties of this object
578
+ def update!(**args)
579
+ @metrics = args[:metrics] if args.key?(:metrics)
580
+ @monitored_resource = args[:monitored_resource] if args.key?(:monitored_resource)
581
+ end
582
+ end
583
+
584
+ # The request message for Operations.CancelOperation.
585
+ class CancelOperationRequest
586
+ include Google::Apis::Core::Hashable
587
+
588
+ def initialize(**args)
589
+ update!(**args)
590
+ end
591
+
592
+ # Update properties of this object
593
+ def update!(**args)
594
+ end
595
+ end
596
+
597
+ # `Context` defines which contexts an API requests. Example: context: rules: -
598
+ # selector: "*" requested: - google.rpc.context.ProjectContext - google.rpc.
599
+ # context.OriginContext The above specifies that all methods in the API request `
600
+ # google.rpc.context.ProjectContext` and `google.rpc.context.OriginContext`.
601
+ # Available context types are defined in package `google.rpc.context`. This also
602
+ # provides mechanism to allowlist any protobuf message extension that can be
603
+ # sent in grpc metadata using “x-goog-ext--bin” and “x-goog-ext--jspb” format.
604
+ # For example, list any service specific protobuf types that can appear in grpc
605
+ # metadata as follows in your yaml file: Example: context: rules: - selector: "
606
+ # google.example.library.v1.LibraryService.CreateBook"
607
+ # allowed_request_extensions: - google.foo.v1.NewExtension
608
+ # allowed_response_extensions: - google.foo.v1.NewExtension You can also specify
609
+ # extension ID instead of fully qualified extension name here.
610
+ class Context
611
+ include Google::Apis::Core::Hashable
612
+
613
+ # A list of RPC context rules that apply to individual API methods. **NOTE:**
614
+ # All service configuration rules follow "last one wins" order.
615
+ # Corresponds to the JSON property `rules`
616
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::ContextRule>]
617
+ attr_accessor :rules
618
+
619
+ def initialize(**args)
620
+ update!(**args)
621
+ end
622
+
623
+ # Update properties of this object
624
+ def update!(**args)
625
+ @rules = args[:rules] if args.key?(:rules)
626
+ end
627
+ end
628
+
629
+ # A context rule provides information about the context for an individual API
630
+ # element.
631
+ class ContextRule
632
+ include Google::Apis::Core::Hashable
633
+
634
+ # A list of full type names or extension IDs of extensions allowed in grpc side
635
+ # channel from client to backend.
636
+ # Corresponds to the JSON property `allowedRequestExtensions`
637
+ # @return [Array<String>]
638
+ attr_accessor :allowed_request_extensions
639
+
640
+ # A list of full type names or extension IDs of extensions allowed in grpc side
641
+ # channel from backend to client.
642
+ # Corresponds to the JSON property `allowedResponseExtensions`
643
+ # @return [Array<String>]
644
+ attr_accessor :allowed_response_extensions
645
+
646
+ # A list of full type names of provided contexts.
647
+ # Corresponds to the JSON property `provided`
648
+ # @return [Array<String>]
649
+ attr_accessor :provided
650
+
651
+ # A list of full type names of requested contexts.
652
+ # Corresponds to the JSON property `requested`
653
+ # @return [Array<String>]
654
+ attr_accessor :requested
655
+
656
+ # Selects the methods to which this rule applies. Refer to selector for syntax
657
+ # details.
658
+ # Corresponds to the JSON property `selector`
659
+ # @return [String]
660
+ attr_accessor :selector
661
+
662
+ def initialize(**args)
663
+ update!(**args)
664
+ end
665
+
666
+ # Update properties of this object
667
+ def update!(**args)
668
+ @allowed_request_extensions = args[:allowed_request_extensions] if args.key?(:allowed_request_extensions)
669
+ @allowed_response_extensions = args[:allowed_response_extensions] if args.key?(:allowed_response_extensions)
670
+ @provided = args[:provided] if args.key?(:provided)
671
+ @requested = args[:requested] if args.key?(:requested)
672
+ @selector = args[:selector] if args.key?(:selector)
673
+ end
674
+ end
675
+
676
+ # Selects and configures the service controller used by the service. The service
677
+ # controller handles features like abuse, quota, billing, logging, monitoring,
678
+ # etc.
679
+ class Control
680
+ include Google::Apis::Core::Hashable
681
+
682
+ # The service control environment to use. If empty, no control plane feature (
683
+ # like quota and billing) will be enabled.
684
+ # Corresponds to the JSON property `environment`
685
+ # @return [String]
686
+ attr_accessor :environment
687
+
688
+ def initialize(**args)
689
+ update!(**args)
690
+ end
691
+
692
+ # Update properties of this object
693
+ def update!(**args)
694
+ @environment = args[:environment] if args.key?(:environment)
695
+ end
696
+ end
697
+
698
+ # Request to create a tenancy unit for a service consumer of a managed service.
699
+ class CreateTenancyUnitRequest
700
+ include Google::Apis::Core::Hashable
701
+
702
+ # Optional. Optional service producer-provided identifier of the tenancy unit.
703
+ # Must be no longer than 40 characters and preferably URI friendly. If it isn't
704
+ # provided, a UID for the tenancy unit is automatically generated. The
705
+ # identifier must be unique across a managed service. If the tenancy unit
706
+ # already exists for the managed service and service consumer pair, calling `
707
+ # CreateTenancyUnit` returns the existing tenancy unit if the provided
708
+ # identifier is identical or empty, otherwise the call fails.
709
+ # Corresponds to the JSON property `tenancyUnitId`
710
+ # @return [String]
711
+ attr_accessor :tenancy_unit_id
712
+
713
+ def initialize(**args)
714
+ update!(**args)
715
+ end
716
+
717
+ # Update properties of this object
718
+ def update!(**args)
719
+ @tenancy_unit_id = args[:tenancy_unit_id] if args.key?(:tenancy_unit_id)
720
+ end
721
+ end
722
+
723
+ # Customize service error responses. For example, list any service specific
724
+ # protobuf types that can appear in error detail lists of error responses.
725
+ # Example: custom_error: types: - google.foo.v1.CustomError - google.foo.v1.
726
+ # AnotherError
727
+ class CustomError
728
+ include Google::Apis::Core::Hashable
729
+
730
+ # The list of custom error rules that apply to individual API messages. **NOTE:**
731
+ # All service configuration rules follow "last one wins" order.
732
+ # Corresponds to the JSON property `rules`
733
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::CustomErrorRule>]
734
+ attr_accessor :rules
735
+
736
+ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
737
+ # Corresponds to the JSON property `types`
738
+ # @return [Array<String>]
739
+ attr_accessor :types
740
+
741
+ def initialize(**args)
742
+ update!(**args)
743
+ end
744
+
745
+ # Update properties of this object
746
+ def update!(**args)
747
+ @rules = args[:rules] if args.key?(:rules)
748
+ @types = args[:types] if args.key?(:types)
749
+ end
750
+ end
751
+
752
+ # A custom error rule.
753
+ class CustomErrorRule
754
+ include Google::Apis::Core::Hashable
755
+
756
+ # Mark this message as possible payload in error response. Otherwise, objects of
757
+ # this type will be filtered when they appear in error payload.
758
+ # Corresponds to the JSON property `isErrorType`
759
+ # @return [Boolean]
760
+ attr_accessor :is_error_type
761
+ alias_method :is_error_type?, :is_error_type
762
+
763
+ # Selects messages to which this rule applies. Refer to selector for syntax
764
+ # details.
765
+ # Corresponds to the JSON property `selector`
766
+ # @return [String]
767
+ attr_accessor :selector
768
+
769
+ def initialize(**args)
770
+ update!(**args)
771
+ end
772
+
773
+ # Update properties of this object
774
+ def update!(**args)
775
+ @is_error_type = args[:is_error_type] if args.key?(:is_error_type)
776
+ @selector = args[:selector] if args.key?(:selector)
777
+ end
778
+ end
779
+
780
+ # A custom pattern is used for defining custom HTTP verb.
781
+ class CustomHttpPattern
782
+ include Google::Apis::Core::Hashable
783
+
784
+ # The name of this custom HTTP verb.
785
+ # Corresponds to the JSON property `kind`
786
+ # @return [String]
787
+ attr_accessor :kind
788
+
789
+ # The path matched by this custom verb.
790
+ # Corresponds to the JSON property `path`
791
+ # @return [String]
792
+ attr_accessor :path
793
+
794
+ def initialize(**args)
795
+ update!(**args)
796
+ end
797
+
798
+ # Update properties of this object
799
+ def update!(**args)
800
+ @kind = args[:kind] if args.key?(:kind)
801
+ @path = args[:path] if args.key?(:path)
802
+ end
803
+ end
804
+
805
+ # Request message to delete tenant project resource from the tenancy unit.
806
+ class DeleteTenantProjectRequest
807
+ include Google::Apis::Core::Hashable
808
+
809
+ # Required. Tag of the resource within the tenancy unit.
810
+ # Corresponds to the JSON property `tag`
811
+ # @return [String]
812
+ attr_accessor :tag
813
+
814
+ def initialize(**args)
815
+ update!(**args)
816
+ end
817
+
818
+ # Update properties of this object
819
+ def update!(**args)
820
+ @tag = args[:tag] if args.key?(:tag)
821
+ end
822
+ end
823
+
824
+ # `Documentation` provides the information for describing a service. Example:
825
+ # documentation: summary: > The Google Calendar API gives access to most
826
+ # calendar features. pages: - name: Overview content: (== include google/foo/
827
+ # overview.md ==) - name: Tutorial content: (== include google/foo/tutorial.md ==
828
+ # ) subpages; - name: Java content: (== include google/foo/tutorial_java.md ==)
829
+ # rules: - selector: google.calendar.Calendar.Get description: > ... - selector:
830
+ # google.calendar.Calendar.Put description: > ... Documentation is provided in
831
+ # markdown syntax. In addition to standard markdown features, definition lists,
832
+ # tables and fenced code blocks are supported. Section headers can be provided
833
+ # and are interpreted relative to the section nesting of the context where a
834
+ # documentation fragment is embedded. Documentation from the IDL is merged with
835
+ # documentation defined via the config at normalization time, where
836
+ # documentation provided by config rules overrides IDL provided. A number of
837
+ # constructs specific to the API platform are supported in documentation text.
838
+ # In order to reference a proto element, the following notation can be used: [
839
+ # fully.qualified.proto.name][] To override the display text used for the link,
840
+ # this can be used: [display text][fully.qualified.proto.name] Text can be
841
+ # excluded from doc using the following notation: (-- internal comment --) A few
842
+ # directives are available in documentation. Note that directives must appear on
843
+ # a single line to be properly identified. The `include` directive includes a
844
+ # markdown file from an external source: (== include path/to/file ==) The `
845
+ # resource_for` directive marks a message to be the resource of a collection in
846
+ # REST view. If it is not specified, tools attempt to infer the resource from
847
+ # the operations in a collection: (== resource_for v1.shelves.books ==) The
848
+ # directive `suppress_warning` does not directly affect documentation and is
849
+ # documented together with service config validation.
850
+ class Documentation
851
+ include Google::Apis::Core::Hashable
852
+
853
+ # The URL to the root of documentation.
854
+ # Corresponds to the JSON property `documentationRootUrl`
855
+ # @return [String]
856
+ attr_accessor :documentation_root_url
857
+
858
+ # Declares a single overview page. For example: documentation: summary: ...
859
+ # overview: (== include overview.md ==) This is a shortcut for the following
860
+ # declaration (using pages style): documentation: summary: ... pages: - name:
861
+ # Overview content: (== include overview.md ==) Note: you cannot specify both `
862
+ # overview` field and `pages` field.
863
+ # Corresponds to the JSON property `overview`
864
+ # @return [String]
865
+ attr_accessor :overview
866
+
867
+ # The top level pages for the documentation set.
868
+ # Corresponds to the JSON property `pages`
869
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Page>]
870
+ attr_accessor :pages
871
+
872
+ # A list of documentation rules that apply to individual API elements. **NOTE:**
873
+ # All service configuration rules follow "last one wins" order.
874
+ # Corresponds to the JSON property `rules`
875
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::DocumentationRule>]
876
+ attr_accessor :rules
877
+
878
+ # Specifies the service root url if the default one (the service name from the
879
+ # yaml file) is not suitable. This can be seen in any fully specified service
880
+ # urls as well as sections that show a base that other urls are relative to.
881
+ # Corresponds to the JSON property `serviceRootUrl`
882
+ # @return [String]
883
+ attr_accessor :service_root_url
884
+
885
+ # A short summary of what the service does. Can only be provided by plain text.
886
+ # Corresponds to the JSON property `summary`
887
+ # @return [String]
888
+ attr_accessor :summary
889
+
890
+ def initialize(**args)
891
+ update!(**args)
892
+ end
893
+
894
+ # Update properties of this object
895
+ def update!(**args)
896
+ @documentation_root_url = args[:documentation_root_url] if args.key?(:documentation_root_url)
897
+ @overview = args[:overview] if args.key?(:overview)
898
+ @pages = args[:pages] if args.key?(:pages)
899
+ @rules = args[:rules] if args.key?(:rules)
900
+ @service_root_url = args[:service_root_url] if args.key?(:service_root_url)
901
+ @summary = args[:summary] if args.key?(:summary)
902
+ end
903
+ end
904
+
905
+ # A documentation rule provides information about individual API elements.
906
+ class DocumentationRule
907
+ include Google::Apis::Core::Hashable
908
+
909
+ # Deprecation description of the selected element(s). It can be provided if an
910
+ # element is marked as `deprecated`.
911
+ # Corresponds to the JSON property `deprecationDescription`
912
+ # @return [String]
913
+ attr_accessor :deprecation_description
914
+
915
+ # Description of the selected API(s).
916
+ # Corresponds to the JSON property `description`
917
+ # @return [String]
918
+ attr_accessor :description
919
+
920
+ # The selector is a comma-separated list of patterns. Each pattern is a
921
+ # qualified name of the element which may end in "*", indicating a wildcard.
922
+ # Wildcards are only allowed at the end and for a whole component of the
923
+ # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
924
+ # wildcard will match one or more components. To specify a default for all
925
+ # applicable elements, the whole pattern "*" is used.
926
+ # Corresponds to the JSON property `selector`
927
+ # @return [String]
928
+ attr_accessor :selector
929
+
930
+ def initialize(**args)
931
+ update!(**args)
932
+ end
933
+
934
+ # Update properties of this object
935
+ def update!(**args)
936
+ @deprecation_description = args[:deprecation_description] if args.key?(:deprecation_description)
937
+ @description = args[:description] if args.key?(:description)
938
+ @selector = args[:selector] if args.key?(:selector)
939
+ end
940
+ end
941
+
942
+ # A generic empty message that you can re-use to avoid defining duplicated empty
943
+ # messages in your APIs. A typical example is to use it as the request or the
944
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
945
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
946
+ # `Empty` is empty JSON object ````.
947
+ class Empty
948
+ include Google::Apis::Core::Hashable
949
+
950
+ def initialize(**args)
951
+ update!(**args)
952
+ end
953
+
954
+ # Update properties of this object
955
+ def update!(**args)
956
+ end
957
+ end
958
+
959
+ # `Endpoint` describes a network endpoint of a service that serves a set of APIs.
960
+ # It is commonly known as a service endpoint. A service may expose any number
961
+ # of service endpoints, and all service endpoints share the same service
962
+ # definition, such as quota limits and monitoring metrics. Example service
963
+ # configuration: name: library-example.googleapis.com endpoints: # Below entry
964
+ # makes 'google.example.library.v1.Library' # API be served from endpoint
965
+ # address library-example.googleapis.com. # It also allows HTTP OPTIONS calls to
966
+ # be passed to the backend, for # it to decide whether the subsequent cross-
967
+ # origin request is # allowed to proceed. - name: library-example.googleapis.com
968
+ # allow_cors: true
969
+ class Endpoint
970
+ include Google::Apis::Core::Hashable
971
+
972
+ # DEPRECATED: This field is no longer supported. Instead of using aliases,
973
+ # please specify multiple google.api.Endpoint for each of the intended aliases.
974
+ # Additional names that this endpoint will be hosted on.
975
+ # Corresponds to the JSON property `aliases`
976
+ # @return [Array<String>]
977
+ attr_accessor :aliases
978
+
979
+ # Allowing [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing),
980
+ # aka cross-domain traffic, would allow the backends served from this endpoint
981
+ # to receive and respond to HTTP OPTIONS requests. The response will be used by
982
+ # the browser to determine whether the subsequent cross-origin request is
983
+ # allowed to proceed.
984
+ # Corresponds to the JSON property `allowCors`
985
+ # @return [Boolean]
986
+ attr_accessor :allow_cors
987
+ alias_method :allow_cors?, :allow_cors
988
+
989
+ # The canonical name of this endpoint.
990
+ # Corresponds to the JSON property `name`
991
+ # @return [String]
992
+ attr_accessor :name
993
+
994
+ # The specification of an Internet routable address of API frontend that will
995
+ # handle requests to this [API Endpoint](https://cloud.google.com/apis/design/
996
+ # glossary). It should be either a valid IPv4 address or a fully-qualified
997
+ # domain name. For example, "8.8.8.8" or "myservice.appspot.com".
998
+ # Corresponds to the JSON property `target`
999
+ # @return [String]
1000
+ attr_accessor :target
1001
+
1002
+ def initialize(**args)
1003
+ update!(**args)
1004
+ end
1005
+
1006
+ # Update properties of this object
1007
+ def update!(**args)
1008
+ @aliases = args[:aliases] if args.key?(:aliases)
1009
+ @allow_cors = args[:allow_cors] if args.key?(:allow_cors)
1010
+ @name = args[:name] if args.key?(:name)
1011
+ @target = args[:target] if args.key?(:target)
1012
+ end
1013
+ end
1014
+
1015
+ # Enum type definition.
1016
+ class Enum
1017
+ include Google::Apis::Core::Hashable
1018
+
1019
+ # Enum value definitions.
1020
+ # Corresponds to the JSON property `enumvalue`
1021
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::EnumValue>]
1022
+ attr_accessor :enumvalue
1023
+
1024
+ # Enum type name.
1025
+ # Corresponds to the JSON property `name`
1026
+ # @return [String]
1027
+ attr_accessor :name
1028
+
1029
+ # Protocol buffer options.
1030
+ # Corresponds to the JSON property `options`
1031
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Option>]
1032
+ attr_accessor :options
1033
+
1034
+ # `SourceContext` represents information about the source of a protobuf element,
1035
+ # like the file in which it is defined.
1036
+ # Corresponds to the JSON property `sourceContext`
1037
+ # @return [Google::Apis::ServiceconsumermanagementV1::SourceContext]
1038
+ attr_accessor :source_context
1039
+
1040
+ # The source syntax.
1041
+ # Corresponds to the JSON property `syntax`
1042
+ # @return [String]
1043
+ attr_accessor :syntax
1044
+
1045
+ def initialize(**args)
1046
+ update!(**args)
1047
+ end
1048
+
1049
+ # Update properties of this object
1050
+ def update!(**args)
1051
+ @enumvalue = args[:enumvalue] if args.key?(:enumvalue)
1052
+ @name = args[:name] if args.key?(:name)
1053
+ @options = args[:options] if args.key?(:options)
1054
+ @source_context = args[:source_context] if args.key?(:source_context)
1055
+ @syntax = args[:syntax] if args.key?(:syntax)
1056
+ end
1057
+ end
1058
+
1059
+ # Enum value definition.
1060
+ class EnumValue
1061
+ include Google::Apis::Core::Hashable
1062
+
1063
+ # Enum value name.
1064
+ # Corresponds to the JSON property `name`
1065
+ # @return [String]
1066
+ attr_accessor :name
1067
+
1068
+ # Enum value number.
1069
+ # Corresponds to the JSON property `number`
1070
+ # @return [Fixnum]
1071
+ attr_accessor :number
1072
+
1073
+ # Protocol buffer options.
1074
+ # Corresponds to the JSON property `options`
1075
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Option>]
1076
+ attr_accessor :options
1077
+
1078
+ def initialize(**args)
1079
+ update!(**args)
1080
+ end
1081
+
1082
+ # Update properties of this object
1083
+ def update!(**args)
1084
+ @name = args[:name] if args.key?(:name)
1085
+ @number = args[:number] if args.key?(:number)
1086
+ @options = args[:options] if args.key?(:options)
1087
+ end
1088
+ end
1089
+
1090
+ # A single field of a message type.
1091
+ class Field
1092
+ include Google::Apis::Core::Hashable
1093
+
1094
+ # The field cardinality.
1095
+ # Corresponds to the JSON property `cardinality`
1096
+ # @return [String]
1097
+ attr_accessor :cardinality
1098
+
1099
+ # The string value of the default value of this field. Proto2 syntax only.
1100
+ # Corresponds to the JSON property `defaultValue`
1101
+ # @return [String]
1102
+ attr_accessor :default_value
1103
+
1104
+ # The field JSON name.
1105
+ # Corresponds to the JSON property `jsonName`
1106
+ # @return [String]
1107
+ attr_accessor :json_name
1108
+
1109
+ # The field type.
1110
+ # Corresponds to the JSON property `kind`
1111
+ # @return [String]
1112
+ attr_accessor :kind
1113
+
1114
+ # The field name.
1115
+ # Corresponds to the JSON property `name`
1116
+ # @return [String]
1117
+ attr_accessor :name
1118
+
1119
+ # The field number.
1120
+ # Corresponds to the JSON property `number`
1121
+ # @return [Fixnum]
1122
+ attr_accessor :number
1123
+
1124
+ # The index of the field type in `Type.oneofs`, for message or enumeration types.
1125
+ # The first type has index 1; zero means the type is not in the list.
1126
+ # Corresponds to the JSON property `oneofIndex`
1127
+ # @return [Fixnum]
1128
+ attr_accessor :oneof_index
1129
+
1130
+ # The protocol buffer options.
1131
+ # Corresponds to the JSON property `options`
1132
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Option>]
1133
+ attr_accessor :options
1134
+
1135
+ # Whether to use alternative packed wire representation.
1136
+ # Corresponds to the JSON property `packed`
1137
+ # @return [Boolean]
1138
+ attr_accessor :packed
1139
+ alias_method :packed?, :packed
1140
+
1141
+ # The field type URL, without the scheme, for message or enumeration types.
1142
+ # Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
1143
+ # Corresponds to the JSON property `typeUrl`
1144
+ # @return [String]
1145
+ attr_accessor :type_url
1146
+
1147
+ def initialize(**args)
1148
+ update!(**args)
1149
+ end
1150
+
1151
+ # Update properties of this object
1152
+ def update!(**args)
1153
+ @cardinality = args[:cardinality] if args.key?(:cardinality)
1154
+ @default_value = args[:default_value] if args.key?(:default_value)
1155
+ @json_name = args[:json_name] if args.key?(:json_name)
1156
+ @kind = args[:kind] if args.key?(:kind)
1157
+ @name = args[:name] if args.key?(:name)
1158
+ @number = args[:number] if args.key?(:number)
1159
+ @oneof_index = args[:oneof_index] if args.key?(:oneof_index)
1160
+ @options = args[:options] if args.key?(:options)
1161
+ @packed = args[:packed] if args.key?(:packed)
1162
+ @type_url = args[:type_url] if args.key?(:type_url)
1163
+ end
1164
+ end
1165
+
1166
+ # Defines the HTTP configuration for an API service. It contains a list of
1167
+ # HttpRule, each specifying the mapping of an RPC method to one or more HTTP
1168
+ # REST API methods.
1169
+ class Http
1170
+ include Google::Apis::Core::Hashable
1171
+
1172
+ # When set to true, URL path parameters will be fully URI-decoded except in
1173
+ # cases of single segment matches in reserved expansion, where "%2F" will be
1174
+ # left encoded. The default behavior is to not decode RFC 6570 reserved
1175
+ # characters in multi segment matches.
1176
+ # Corresponds to the JSON property `fullyDecodeReservedExpansion`
1177
+ # @return [Boolean]
1178
+ attr_accessor :fully_decode_reserved_expansion
1179
+ alias_method :fully_decode_reserved_expansion?, :fully_decode_reserved_expansion
1180
+
1181
+ # A list of HTTP configuration rules that apply to individual API methods. **
1182
+ # NOTE:** All service configuration rules follow "last one wins" order.
1183
+ # Corresponds to the JSON property `rules`
1184
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::HttpRule>]
1185
+ attr_accessor :rules
1186
+
1187
+ def initialize(**args)
1188
+ update!(**args)
1189
+ end
1190
+
1191
+ # Update properties of this object
1192
+ def update!(**args)
1193
+ @fully_decode_reserved_expansion = args[:fully_decode_reserved_expansion] if args.key?(:fully_decode_reserved_expansion)
1194
+ @rules = args[:rules] if args.key?(:rules)
1195
+ end
1196
+ end
1197
+
1198
+ # # gRPC Transcoding gRPC Transcoding is a feature for mapping between a gRPC
1199
+ # method and one or more HTTP REST endpoints. It allows developers to build a
1200
+ # single API service that supports both gRPC APIs and REST APIs. Many systems,
1201
+ # including [Google APIs](https://github.com/googleapis/googleapis), [Cloud
1202
+ # Endpoints](https://cloud.google.com/endpoints), [gRPC Gateway](https://github.
1203
+ # com/grpc-ecosystem/grpc-gateway), and [Envoy](https://github.com/envoyproxy/
1204
+ # envoy) proxy support this feature and use it for large scale production
1205
+ # services. `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
1206
+ # specifies how different portions of the gRPC request message are mapped to the
1207
+ # URL path, URL query parameters, and HTTP request body. It also controls how
1208
+ # the gRPC response message is mapped to the HTTP response body. `HttpRule` is
1209
+ # typically specified as an `google.api.http` annotation on the gRPC method.
1210
+ # Each mapping specifies a URL path template and an HTTP method. The path
1211
+ # template may refer to one or more fields in the gRPC request message, as long
1212
+ # as each field is a non-repeated field with a primitive (non-message) type. The
1213
+ # path template controls how fields of the request message are mapped to the URL
1214
+ # path. Example: service Messaging ` rpc GetMessage(GetMessageRequest) returns (
1215
+ # Message) ` option (google.api.http) = ` get: "/v1/`name=messages/*`" `; ` `
1216
+ # message GetMessageRequest ` string name = 1; // Mapped to URL path. ` message
1217
+ # Message ` string text = 1; // The resource content. ` This enables an HTTP
1218
+ # REST to gRPC mapping as below: HTTP | gRPC -----|----- `GET /v1/messages/
1219
+ # 123456` | `GetMessage(name: "messages/123456")` Any fields in the request
1220
+ # message which are not bound by the path template automatically become HTTP
1221
+ # query parameters if there is no HTTP request body. For example: service
1222
+ # Messaging ` rpc GetMessage(GetMessageRequest) returns (Message) ` option (
1223
+ # google.api.http) = ` get:"/v1/messages/`message_id`" `; ` ` message
1224
+ # GetMessageRequest ` message SubMessage ` string subfield = 1; ` string
1225
+ # message_id = 1; // Mapped to URL path. int64 revision = 2; // Mapped to URL
1226
+ # query parameter `revision`. SubMessage sub = 3; // Mapped to URL query
1227
+ # parameter `sub.subfield`. ` This enables a HTTP JSON to RPC mapping as below:
1228
+ # HTTP | gRPC -----|----- `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
1229
+ # `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))
1230
+ # ` Note that fields which are mapped to URL query parameters must have a
1231
+ # primitive type or a repeated primitive type or a non-repeated message type. In
1232
+ # the case of a repeated type, the parameter can be repeated in the URL as `...?
1233
+ # param=A&param=B`. In the case of a message type, each field of the message is
1234
+ # mapped to a separate parameter, such as `...?foo.a=A&foo.b=B&foo.c=C`. For
1235
+ # HTTP methods that allow a request body, the `body` field specifies the mapping.
1236
+ # Consider a REST update method on the message resource collection: service
1237
+ # Messaging ` rpc UpdateMessage(UpdateMessageRequest) returns (Message) ` option
1238
+ # (google.api.http) = ` patch: "/v1/messages/`message_id`" body: "message" `; ` `
1239
+ # message UpdateMessageRequest ` string message_id = 1; // mapped to the URL
1240
+ # Message message = 2; // mapped to the body ` The following HTTP JSON to RPC
1241
+ # mapping is enabled, where the representation of the JSON in the request body
1242
+ # is determined by protos JSON encoding: HTTP | gRPC -----|----- `PATCH /v1/
1243
+ # messages/123456 ` "text": "Hi!" `` | `UpdateMessage(message_id: "123456"
1244
+ # message ` text: "Hi!" `)` The special name `*` can be used in the body mapping
1245
+ # to define that every field not bound by the path template should be mapped to
1246
+ # the request body. This enables the following alternative definition of the
1247
+ # update method: service Messaging ` rpc UpdateMessage(Message) returns (Message)
1248
+ # ` option (google.api.http) = ` patch: "/v1/messages/`message_id`" body: "*" `;
1249
+ # ` ` message Message ` string message_id = 1; string text = 2; ` The following
1250
+ # HTTP JSON to RPC mapping is enabled: HTTP | gRPC -----|----- `PATCH /v1/
1251
+ # messages/123456 ` "text": "Hi!" `` | `UpdateMessage(message_id: "123456" text:
1252
+ # "Hi!")` Note that when using `*` in the body mapping, it is not possible to
1253
+ # have HTTP parameters, as all fields not bound by the path end in the body.
1254
+ # This makes this option more rarely used in practice when defining REST APIs.
1255
+ # The common usage of `*` is in custom methods which don't use the URL at all
1256
+ # for transferring data. It is possible to define multiple HTTP methods for one
1257
+ # RPC by using the `additional_bindings` option. Example: service Messaging `
1258
+ # rpc GetMessage(GetMessageRequest) returns (Message) ` option (google.api.http)
1259
+ # = ` get: "/v1/messages/`message_id`" additional_bindings ` get: "/v1/users/`
1260
+ # user_id`/messages/`message_id`" ` `; ` ` message GetMessageRequest ` string
1261
+ # message_id = 1; string user_id = 2; ` This enables the following two
1262
+ # alternative HTTP JSON to RPC mappings: HTTP | gRPC -----|----- `GET /v1/
1263
+ # messages/123456` | `GetMessage(message_id: "123456")` `GET /v1/users/me/
1264
+ # messages/123456` | `GetMessage(user_id: "me" message_id: "123456")` ## Rules
1265
+ # for HTTP mapping 1. Leaf request fields (recursive expansion nested messages
1266
+ # in the request message) are classified into three categories: - Fields
1267
+ # referred by the path template. They are passed via the URL path. - Fields
1268
+ # referred by the HttpRule.body. They are passed via the HTTP request body. -
1269
+ # All other fields are passed via the URL query parameters, and the parameter
1270
+ # name is the field path in the request message. A repeated field can be
1271
+ # represented as multiple query parameters under the same name. 2. If HttpRule.
1272
+ # body is "*", there is no URL query parameter, all fields are passed via URL
1273
+ # path and HTTP request body. 3. If HttpRule.body is omitted, there is no HTTP
1274
+ # request body, all fields are passed via URL path and URL query parameters. ###
1275
+ # Path template syntax Template = "/" Segments [ Verb ] ; Segments = Segment ` "/
1276
+ # " Segment ` ; Segment = "*" | "**" | LITERAL | Variable ; Variable = "`"
1277
+ # FieldPath [ "=" Segments ] "`" ; FieldPath = IDENT ` "." IDENT ` ; Verb = ":"
1278
+ # LITERAL ; The syntax `*` matches a single URL path segment. The syntax `**`
1279
+ # matches zero or more URL path segments, which must be the last part of the URL
1280
+ # path except the `Verb`. The syntax `Variable` matches part of the URL path as
1281
+ # specified by its template. A variable template must not contain other
1282
+ # variables. If a variable matches a single path segment, its template may be
1283
+ # omitted, e.g. ``var`` is equivalent to ``var=*``. The syntax `LITERAL` matches
1284
+ # literal text in the URL path. If the `LITERAL` contains any reserved character,
1285
+ # such characters should be percent-encoded before the matching. If a variable
1286
+ # contains exactly one path segment, such as `"`var`"` or `"`var=*`"`, when such
1287
+ # a variable is expanded into a URL path on the client side, all characters
1288
+ # except `[-_.~0-9a-zA-Z]` are percent-encoded. The server side does the reverse
1289
+ # decoding. Such variables show up in the [Discovery Document](https://
1290
+ # developers.google.com/discovery/v1/reference/apis) as ``var``. If a variable
1291
+ # contains multiple path segments, such as `"`var=foo/*`"` or `"`var=**`"`, when
1292
+ # such a variable is expanded into a URL path on the client side, all characters
1293
+ # except `[-_.~/0-9a-zA-Z]` are percent-encoded. The server side does the
1294
+ # reverse decoding, except "%2F" and "%2f" are left unchanged. Such variables
1295
+ # show up in the [Discovery Document](https://developers.google.com/discovery/v1/
1296
+ # reference/apis) as ``+var``. ## Using gRPC API Service Configuration gRPC API
1297
+ # Service Configuration (service config) is a configuration language for
1298
+ # configuring a gRPC service to become a user-facing product. The service config
1299
+ # is simply the YAML representation of the `google.api.Service` proto message.
1300
+ # As an alternative to annotating your proto file, you can configure gRPC
1301
+ # transcoding in your service config YAML files. You do this by specifying a `
1302
+ # HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
1303
+ # effect as the proto annotation. This can be particularly useful if you have a
1304
+ # proto that is reused in multiple services. Note that any transcoding specified
1305
+ # in the service config will override any matching transcoding configuration in
1306
+ # the proto. Example: http: rules: # Selects a gRPC method and applies HttpRule
1307
+ # to it. - selector: example.v1.Messaging.GetMessage get: /v1/messages/`
1308
+ # message_id`/`sub.subfield` ## Special notes When gRPC Transcoding is used to
1309
+ # map a gRPC to JSON REST endpoints, the proto to JSON conversion must follow
1310
+ # the [proto3 specification](https://developers.google.com/protocol-buffers/docs/
1311
+ # proto3#json). While the single segment variable follows the semantics of [RFC
1312
+ # 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
1313
+ # Expansion, the multi segment variable **does not** follow RFC 6570 Section 3.2.
1314
+ # 3 Reserved Expansion. The reason is that the Reserved Expansion does not
1315
+ # expand special characters like `?` and `#`, which would lead to invalid URLs.
1316
+ # As the result, gRPC Transcoding uses a custom encoding for multi segment
1317
+ # variables. The path variables **must not** refer to any repeated or mapped
1318
+ # field, because client libraries are not capable of handling such variable
1319
+ # expansion. The path variables **must not** capture the leading "/" character.
1320
+ # The reason is that the most common use case "`var`" does not capture the
1321
+ # leading "/" character. For consistency, all path variables must share the same
1322
+ # behavior. Repeated message fields must not be mapped to URL query parameters,
1323
+ # because no client library can support such complicated mapping. If an API
1324
+ # needs to use a JSON array for request or response body, it can map the request
1325
+ # or response body to a repeated field. However, some gRPC Transcoding
1326
+ # implementations may not support this feature.
1327
+ class HttpRule
1328
+ include Google::Apis::Core::Hashable
1329
+
1330
+ # Additional HTTP bindings for the selector. Nested bindings must not contain an
1331
+ # `additional_bindings` field themselves (that is, the nesting may only be one
1332
+ # level deep).
1333
+ # Corresponds to the JSON property `additionalBindings`
1334
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::HttpRule>]
1335
+ attr_accessor :additional_bindings
1336
+
1337
+ # The name of the request field whose value is mapped to the HTTP request body,
1338
+ # or `*` for mapping all request fields not captured by the path pattern to the
1339
+ # HTTP body, or omitted for not having any HTTP request body. NOTE: the referred
1340
+ # field must be present at the top-level of the request message type.
1341
+ # Corresponds to the JSON property `body`
1342
+ # @return [String]
1343
+ attr_accessor :body
1344
+
1345
+ # A custom pattern is used for defining custom HTTP verb.
1346
+ # Corresponds to the JSON property `custom`
1347
+ # @return [Google::Apis::ServiceconsumermanagementV1::CustomHttpPattern]
1348
+ attr_accessor :custom
1349
+
1350
+ # Maps to HTTP DELETE. Used for deleting a resource.
1351
+ # Corresponds to the JSON property `delete`
1352
+ # @return [String]
1353
+ attr_accessor :delete
1354
+
1355
+ # Maps to HTTP GET. Used for listing and getting information about resources.
1356
+ # Corresponds to the JSON property `get`
1357
+ # @return [String]
1358
+ attr_accessor :get
1359
+
1360
+ # Maps to HTTP PATCH. Used for updating a resource.
1361
+ # Corresponds to the JSON property `patch`
1362
+ # @return [String]
1363
+ attr_accessor :patch
1364
+
1365
+ # Maps to HTTP POST. Used for creating a resource or performing an action.
1366
+ # Corresponds to the JSON property `post`
1367
+ # @return [String]
1368
+ attr_accessor :post
1369
+
1370
+ # Maps to HTTP PUT. Used for replacing a resource.
1371
+ # Corresponds to the JSON property `put`
1372
+ # @return [String]
1373
+ attr_accessor :put
1374
+
1375
+ # Optional. The name of the response field whose value is mapped to the HTTP
1376
+ # response body. When omitted, the entire response message will be used as the
1377
+ # HTTP response body. NOTE: The referred field must be present at the top-level
1378
+ # of the response message type.
1379
+ # Corresponds to the JSON property `responseBody`
1380
+ # @return [String]
1381
+ attr_accessor :response_body
1382
+
1383
+ # Selects a method to which this rule applies. Refer to selector for syntax
1384
+ # details.
1385
+ # Corresponds to the JSON property `selector`
1386
+ # @return [String]
1387
+ attr_accessor :selector
1388
+
1389
+ def initialize(**args)
1390
+ update!(**args)
1391
+ end
1392
+
1393
+ # Update properties of this object
1394
+ def update!(**args)
1395
+ @additional_bindings = args[:additional_bindings] if args.key?(:additional_bindings)
1396
+ @body = args[:body] if args.key?(:body)
1397
+ @custom = args[:custom] if args.key?(:custom)
1398
+ @delete = args[:delete] if args.key?(:delete)
1399
+ @get = args[:get] if args.key?(:get)
1400
+ @patch = args[:patch] if args.key?(:patch)
1401
+ @post = args[:post] if args.key?(:post)
1402
+ @put = args[:put] if args.key?(:put)
1403
+ @response_body = args[:response_body] if args.key?(:response_body)
1404
+ @selector = args[:selector] if args.key?(:selector)
1405
+ end
1406
+ end
1407
+
1408
+ # Specifies a location to extract JWT from an API request.
1409
+ class JwtLocation
1410
+ include Google::Apis::Core::Hashable
1411
+
1412
+ # Specifies HTTP header name to extract JWT token.
1413
+ # Corresponds to the JSON property `header`
1414
+ # @return [String]
1415
+ attr_accessor :header
1416
+
1417
+ # Specifies URL query parameter name to extract JWT token.
1418
+ # Corresponds to the JSON property `query`
1419
+ # @return [String]
1420
+ attr_accessor :query
1421
+
1422
+ # The value prefix. The value format is "value_prefix`token`" Only applies to "
1423
+ # in" header type. Must be empty for "in" query type. If not empty, the header
1424
+ # value has to match (case sensitive) this prefix. If not matched, JWT will not
1425
+ # be extracted. If matched, JWT will be extracted after the prefix is removed.
1426
+ # For example, for "Authorization: Bearer `JWT`", value_prefix="Bearer " with a
1427
+ # space at the end.
1428
+ # Corresponds to the JSON property `valuePrefix`
1429
+ # @return [String]
1430
+ attr_accessor :value_prefix
1431
+
1432
+ def initialize(**args)
1433
+ update!(**args)
1434
+ end
1435
+
1436
+ # Update properties of this object
1437
+ def update!(**args)
1438
+ @header = args[:header] if args.key?(:header)
1439
+ @query = args[:query] if args.key?(:query)
1440
+ @value_prefix = args[:value_prefix] if args.key?(:value_prefix)
1441
+ end
1442
+ end
1443
+
1444
+ # A description of a label.
1445
+ class LabelDescriptor
1446
+ include Google::Apis::Core::Hashable
1447
+
1448
+ # A human-readable description for the label.
1449
+ # Corresponds to the JSON property `description`
1450
+ # @return [String]
1451
+ attr_accessor :description
1452
+
1453
+ # The label key.
1454
+ # Corresponds to the JSON property `key`
1455
+ # @return [String]
1456
+ attr_accessor :key
1457
+
1458
+ # The type of data that can be assigned to the label.
1459
+ # Corresponds to the JSON property `valueType`
1460
+ # @return [String]
1461
+ attr_accessor :value_type
1462
+
1463
+ def initialize(**args)
1464
+ update!(**args)
1465
+ end
1466
+
1467
+ # Update properties of this object
1468
+ def update!(**args)
1469
+ @description = args[:description] if args.key?(:description)
1470
+ @key = args[:key] if args.key?(:key)
1471
+ @value_type = args[:value_type] if args.key?(:value_type)
1472
+ end
1473
+ end
1474
+
1475
+ # The response message for Operations.ListOperations.
1476
+ class ListOperationsResponse
1477
+ include Google::Apis::Core::Hashable
1478
+
1479
+ # The standard List next-page token.
1480
+ # Corresponds to the JSON property `nextPageToken`
1481
+ # @return [String]
1482
+ attr_accessor :next_page_token
1483
+
1484
+ # A list of operations that matches the specified filter in the request.
1485
+ # Corresponds to the JSON property `operations`
1486
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Operation>]
1487
+ attr_accessor :operations
1488
+
1489
+ def initialize(**args)
1490
+ update!(**args)
1491
+ end
1492
+
1493
+ # Update properties of this object
1494
+ def update!(**args)
1495
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1496
+ @operations = args[:operations] if args.key?(:operations)
1497
+ end
1498
+ end
1499
+
1500
+ # Response for the list request.
1501
+ class ListTenancyUnitsResponse
1502
+ include Google::Apis::Core::Hashable
1503
+
1504
+ # Pagination token for large results.
1505
+ # Corresponds to the JSON property `nextPageToken`
1506
+ # @return [String]
1507
+ attr_accessor :next_page_token
1508
+
1509
+ # Tenancy units matching the request.
1510
+ # Corresponds to the JSON property `tenancyUnits`
1511
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::TenancyUnit>]
1512
+ attr_accessor :tenancy_units
1513
+
1514
+ def initialize(**args)
1515
+ update!(**args)
1516
+ end
1517
+
1518
+ # Update properties of this object
1519
+ def update!(**args)
1520
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1521
+ @tenancy_units = args[:tenancy_units] if args.key?(:tenancy_units)
1522
+ end
1523
+ end
1524
+
1525
+ # A description of a log type. Example in YAML format: - name: library.
1526
+ # googleapis.com/activity_history description: The history of borrowing and
1527
+ # returning library items. display_name: Activity labels: - key: /customer_id
1528
+ # description: Identifier of a library customer
1529
+ class LogDescriptor
1530
+ include Google::Apis::Core::Hashable
1531
+
1532
+ # A human-readable description of this log. This information appears in the
1533
+ # documentation and can contain details.
1534
+ # Corresponds to the JSON property `description`
1535
+ # @return [String]
1536
+ attr_accessor :description
1537
+
1538
+ # The human-readable name for this log. This information appears on the user
1539
+ # interface and should be concise.
1540
+ # Corresponds to the JSON property `displayName`
1541
+ # @return [String]
1542
+ attr_accessor :display_name
1543
+
1544
+ # The set of labels that are available to describe a specific log entry. Runtime
1545
+ # requests that contain labels not specified here are considered invalid.
1546
+ # Corresponds to the JSON property `labels`
1547
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::LabelDescriptor>]
1548
+ attr_accessor :labels
1549
+
1550
+ # The name of the log. It must be less than 512 characters long and can include
1551
+ # the following characters: upper- and lower-case alphanumeric characters [A-Za-
1552
+ # z0-9], and punctuation characters including slash, underscore, hyphen, period [
1553
+ # /_-.].
1554
+ # Corresponds to the JSON property `name`
1555
+ # @return [String]
1556
+ attr_accessor :name
1557
+
1558
+ def initialize(**args)
1559
+ update!(**args)
1560
+ end
1561
+
1562
+ # Update properties of this object
1563
+ def update!(**args)
1564
+ @description = args[:description] if args.key?(:description)
1565
+ @display_name = args[:display_name] if args.key?(:display_name)
1566
+ @labels = args[:labels] if args.key?(:labels)
1567
+ @name = args[:name] if args.key?(:name)
1568
+ end
1569
+ end
1570
+
1571
+ # Logging configuration of the service. The following example shows how to
1572
+ # configure logs to be sent to the producer and consumer projects. In the
1573
+ # example, the `activity_history` log is sent to both the producer and consumer
1574
+ # projects, whereas the `purchase_history` log is only sent to the producer
1575
+ # project. monitored_resources: - type: library.googleapis.com/branch labels: -
1576
+ # key: /city description: The city where the library branch is located in. - key:
1577
+ # /name description: The name of the branch. logs: - name: activity_history
1578
+ # labels: - key: /customer_id - name: purchase_history logging:
1579
+ # producer_destinations: - monitored_resource: library.googleapis.com/branch
1580
+ # logs: - activity_history - purchase_history consumer_destinations: -
1581
+ # monitored_resource: library.googleapis.com/branch logs: - activity_history
1582
+ class Logging
1583
+ include Google::Apis::Core::Hashable
1584
+
1585
+ # Logging configurations for sending logs to the consumer project. There can be
1586
+ # multiple consumer destinations, each one must have a different monitored
1587
+ # resource type. A log can be used in at most one consumer destination.
1588
+ # Corresponds to the JSON property `consumerDestinations`
1589
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::LoggingDestination>]
1590
+ attr_accessor :consumer_destinations
1591
+
1592
+ # Logging configurations for sending logs to the producer project. There can be
1593
+ # multiple producer destinations, each one must have a different monitored
1594
+ # resource type. A log can be used in at most one producer destination.
1595
+ # Corresponds to the JSON property `producerDestinations`
1596
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::LoggingDestination>]
1597
+ attr_accessor :producer_destinations
1598
+
1599
+ def initialize(**args)
1600
+ update!(**args)
1601
+ end
1602
+
1603
+ # Update properties of this object
1604
+ def update!(**args)
1605
+ @consumer_destinations = args[:consumer_destinations] if args.key?(:consumer_destinations)
1606
+ @producer_destinations = args[:producer_destinations] if args.key?(:producer_destinations)
1607
+ end
1608
+ end
1609
+
1610
+ # Configuration of a specific logging destination (the producer project or the
1611
+ # consumer project).
1612
+ class LoggingDestination
1613
+ include Google::Apis::Core::Hashable
1614
+
1615
+ # Names of the logs to be sent to this destination. Each name must be defined in
1616
+ # the Service.logs section. If the log name is not a domain scoped name, it will
1617
+ # be automatically prefixed with the service name followed by "/".
1618
+ # Corresponds to the JSON property `logs`
1619
+ # @return [Array<String>]
1620
+ attr_accessor :logs
1621
+
1622
+ # The monitored resource type. The type must be defined in the Service.
1623
+ # monitored_resources section.
1624
+ # Corresponds to the JSON property `monitoredResource`
1625
+ # @return [String]
1626
+ attr_accessor :monitored_resource
1627
+
1628
+ def initialize(**args)
1629
+ update!(**args)
1630
+ end
1631
+
1632
+ # Update properties of this object
1633
+ def update!(**args)
1634
+ @logs = args[:logs] if args.key?(:logs)
1635
+ @monitored_resource = args[:monitored_resource] if args.key?(:monitored_resource)
1636
+ end
1637
+ end
1638
+
1639
+ # Method represents a method of an API interface.
1640
+ class MethodProp
1641
+ include Google::Apis::Core::Hashable
1642
+
1643
+ # The simple name of this method.
1644
+ # Corresponds to the JSON property `name`
1645
+ # @return [String]
1646
+ attr_accessor :name
1647
+
1648
+ # Any metadata attached to the method.
1649
+ # Corresponds to the JSON property `options`
1650
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Option>]
1651
+ attr_accessor :options
1652
+
1653
+ # If true, the request is streamed.
1654
+ # Corresponds to the JSON property `requestStreaming`
1655
+ # @return [Boolean]
1656
+ attr_accessor :request_streaming
1657
+ alias_method :request_streaming?, :request_streaming
1658
+
1659
+ # A URL of the input message type.
1660
+ # Corresponds to the JSON property `requestTypeUrl`
1661
+ # @return [String]
1662
+ attr_accessor :request_type_url
1663
+
1664
+ # If true, the response is streamed.
1665
+ # Corresponds to the JSON property `responseStreaming`
1666
+ # @return [Boolean]
1667
+ attr_accessor :response_streaming
1668
+ alias_method :response_streaming?, :response_streaming
1669
+
1670
+ # The URL of the output message type.
1671
+ # Corresponds to the JSON property `responseTypeUrl`
1672
+ # @return [String]
1673
+ attr_accessor :response_type_url
1674
+
1675
+ # The source syntax of this method.
1676
+ # Corresponds to the JSON property `syntax`
1677
+ # @return [String]
1678
+ attr_accessor :syntax
1679
+
1680
+ def initialize(**args)
1681
+ update!(**args)
1682
+ end
1683
+
1684
+ # Update properties of this object
1685
+ def update!(**args)
1686
+ @name = args[:name] if args.key?(:name)
1687
+ @options = args[:options] if args.key?(:options)
1688
+ @request_streaming = args[:request_streaming] if args.key?(:request_streaming)
1689
+ @request_type_url = args[:request_type_url] if args.key?(:request_type_url)
1690
+ @response_streaming = args[:response_streaming] if args.key?(:response_streaming)
1691
+ @response_type_url = args[:response_type_url] if args.key?(:response_type_url)
1692
+ @syntax = args[:syntax] if args.key?(:syntax)
1693
+ end
1694
+ end
1695
+
1696
+ # Defines a metric type and its schema. Once a metric descriptor is created,
1697
+ # deleting or altering it stops data collection and makes the metric type's
1698
+ # existing data unusable.
1699
+ class MetricDescriptor
1700
+ include Google::Apis::Core::Hashable
1701
+
1702
+ # A detailed description of the metric, which can be used in documentation.
1703
+ # Corresponds to the JSON property `description`
1704
+ # @return [String]
1705
+ attr_accessor :description
1706
+
1707
+ # A concise name for the metric, which can be displayed in user interfaces. Use
1708
+ # sentence case without an ending period, for example "Request count". This
1709
+ # field is optional but it is recommended to be set for any metrics associated
1710
+ # with user-visible concepts, such as Quota.
1711
+ # Corresponds to the JSON property `displayName`
1712
+ # @return [String]
1713
+ attr_accessor :display_name
1714
+
1715
+ # The set of labels that can be used to describe a specific instance of this
1716
+ # metric type. For example, the `appengine.googleapis.com/http/server/
1717
+ # response_latencies` metric type has a label for the HTTP response code, `
1718
+ # response_code`, so you can look at latencies for successful responses or just
1719
+ # for responses that failed.
1720
+ # Corresponds to the JSON property `labels`
1721
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::LabelDescriptor>]
1722
+ attr_accessor :labels
1723
+
1724
+ # Optional. The launch stage of the metric definition.
1725
+ # Corresponds to the JSON property `launchStage`
1726
+ # @return [String]
1727
+ attr_accessor :launch_stage
1728
+
1729
+ # Additional annotations that can be used to guide the usage of a metric.
1730
+ # Corresponds to the JSON property `metadata`
1731
+ # @return [Google::Apis::ServiceconsumermanagementV1::MetricDescriptorMetadata]
1732
+ attr_accessor :metadata
1733
+
1734
+ # Whether the metric records instantaneous values, changes to a value, etc. Some
1735
+ # combinations of `metric_kind` and `value_type` might not be supported.
1736
+ # Corresponds to the JSON property `metricKind`
1737
+ # @return [String]
1738
+ attr_accessor :metric_kind
1739
+
1740
+ # Read-only. If present, then a time series, which is identified partially by a
1741
+ # metric type and a MonitoredResourceDescriptor, that is associated with this
1742
+ # metric type can only be associated with one of the monitored resource types
1743
+ # listed here.
1744
+ # Corresponds to the JSON property `monitoredResourceTypes`
1745
+ # @return [Array<String>]
1746
+ attr_accessor :monitored_resource_types
1747
+
1748
+ # The resource name of the metric descriptor.
1749
+ # Corresponds to the JSON property `name`
1750
+ # @return [String]
1751
+ attr_accessor :name
1752
+
1753
+ # The metric type, including its DNS name prefix. The type is not URL-encoded.
1754
+ # All user-defined metric types have the DNS name `custom.googleapis.com` or `
1755
+ # external.googleapis.com`. Metric types should use a natural hierarchical
1756
+ # grouping. For example: "custom.googleapis.com/invoice/paid/amount" "external.
1757
+ # googleapis.com/prometheus/up" "appengine.googleapis.com/http/server/
1758
+ # response_latencies"
1759
+ # Corresponds to the JSON property `type`
1760
+ # @return [String]
1761
+ attr_accessor :type
1762
+
1763
+ # The units in which the metric value is reported. It is only applicable if the `
1764
+ # value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the
1765
+ # representation of the stored metric values. Different systems may scale the
1766
+ # values to be more easily displayed (so a value of `0.02KBy` _might_ be
1767
+ # displayed as `20By`, and a value of `3523KBy` _might_ be displayed as `3.5MBy`)
1768
+ # . However, if the `unit` is `KBy`, then the value of the metric is always in
1769
+ # thousands of bytes, no matter how it may be displayed.. If you want a custom
1770
+ # metric to record the exact number of CPU-seconds used by a job, you can create
1771
+ # an `INT64 CUMULATIVE` metric whose `unit` is `s`CPU`` (or equivalently `1s`CPU`
1772
+ # ` or just `s`). If the job uses 12,005 CPU-seconds, then the value is written
1773
+ # as `12005`. Alternatively, if you want a custom metric to record data in a
1774
+ # more granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
1775
+ # `ks`CPU``, and then write the value `12.005` (which is `12005/1000`), or use `
1776
+ # Kis`CPU`` and write `11.723` (which is `12005/1024`). The supported units are
1777
+ # a subset of [The Unified Code for Units of Measure](http://unitsofmeasure.org/
1778
+ # ucum.html) standard: **Basic units (UNIT)** * `bit` bit * `By` byte * `s`
1779
+ # second * `min` minute * `h` hour * `d` day * `1` dimensionless **Prefixes (
1780
+ # PREFIX)** * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera (10^
1781
+ # 12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^
1782
+ # 24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-
1783
+ # 12) * `f` femto (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto (
1784
+ # 10^-24) * `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (
1785
+ # 2^40) * `Pi` pebi (2^50) **Grammar** The grammar also includes these
1786
+ # connectors: * `/` division or ratio (as an infix operator). For examples, `kBy/
1787
+ # `email`` or `MiBy/10ms` (although you should almost never have `/s` in a
1788
+ # metric `unit`; rates should always be computed at query time from the
1789
+ # underlying cumulative or delta value). * `.` multiplication or composition (as
1790
+ # an infix operator). For examples, `GBy.d` or `k`watt`.h`. The grammar for a
1791
+ # unit is as follows: Expression = Component ` "." Component ` ` "/" Component `
1792
+ # ; Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ] | Annotation | "1" ;
1793
+ # Annotation = "`" NAME "`" ; Notes: * `Annotation` is just a comment if it
1794
+ # follows a `UNIT`. If the annotation is used alone, then the unit is equivalent
1795
+ # to `1`. For examples, ``request`/s == 1/s`, `By`transmitted`/s == By/s`. * `
1796
+ # NAME` is a sequence of non-blank printable ASCII characters not containing ```
1797
+ # or ```. * `1` represents a unitary [dimensionless unit](https://en.wikipedia.
1798
+ # org/wiki/Dimensionless_quantity) of 1, such as in `1/s`. It is typically used
1799
+ # when none of the basic units are appropriate. For example, "new users per day"
1800
+ # can be represented as `1/d` or ``new-users`/d` (and a metric value `5` would
1801
+ # mean "5 new users). Alternatively, "thousands of page views per day" would be
1802
+ # represented as `1000/d` or `k1/d` or `k`page_views`/d` (and a metric value of `
1803
+ # 5.3` would mean "5300 page views per day"). * `%` represents dimensionless
1804
+ # value of 1/100, and annotates values giving a percentage (so the metric values
1805
+ # are typically in the range of 0..100, and a metric value `3` means "3 percent")
1806
+ # . * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1,
1807
+ # that will be multiplied by 100 and displayed as a percentage (so a metric
1808
+ # value `0.03` means "3 percent").
1809
+ # Corresponds to the JSON property `unit`
1810
+ # @return [String]
1811
+ attr_accessor :unit
1812
+
1813
+ # Whether the measurement is an integer, a floating-point number, etc. Some
1814
+ # combinations of `metric_kind` and `value_type` might not be supported.
1815
+ # Corresponds to the JSON property `valueType`
1816
+ # @return [String]
1817
+ attr_accessor :value_type
1818
+
1819
+ def initialize(**args)
1820
+ update!(**args)
1821
+ end
1822
+
1823
+ # Update properties of this object
1824
+ def update!(**args)
1825
+ @description = args[:description] if args.key?(:description)
1826
+ @display_name = args[:display_name] if args.key?(:display_name)
1827
+ @labels = args[:labels] if args.key?(:labels)
1828
+ @launch_stage = args[:launch_stage] if args.key?(:launch_stage)
1829
+ @metadata = args[:metadata] if args.key?(:metadata)
1830
+ @metric_kind = args[:metric_kind] if args.key?(:metric_kind)
1831
+ @monitored_resource_types = args[:monitored_resource_types] if args.key?(:monitored_resource_types)
1832
+ @name = args[:name] if args.key?(:name)
1833
+ @type = args[:type] if args.key?(:type)
1834
+ @unit = args[:unit] if args.key?(:unit)
1835
+ @value_type = args[:value_type] if args.key?(:value_type)
1836
+ end
1837
+ end
1838
+
1839
+ # Additional annotations that can be used to guide the usage of a metric.
1840
+ class MetricDescriptorMetadata
1841
+ include Google::Apis::Core::Hashable
1842
+
1843
+ # The delay of data points caused by ingestion. Data points older than this age
1844
+ # are guaranteed to be ingested and available to be read, excluding data loss
1845
+ # due to errors.
1846
+ # Corresponds to the JSON property `ingestDelay`
1847
+ # @return [String]
1848
+ attr_accessor :ingest_delay
1849
+
1850
+ # Deprecated. Must use the MetricDescriptor.launch_stage instead.
1851
+ # Corresponds to the JSON property `launchStage`
1852
+ # @return [String]
1853
+ attr_accessor :launch_stage
1854
+
1855
+ # The sampling period of metric data points. For metrics which are written
1856
+ # periodically, consecutive data points are stored at this time interval,
1857
+ # excluding data loss due to errors. Metrics with a higher granularity have a
1858
+ # smaller sampling period.
1859
+ # Corresponds to the JSON property `samplePeriod`
1860
+ # @return [String]
1861
+ attr_accessor :sample_period
1862
+
1863
+ def initialize(**args)
1864
+ update!(**args)
1865
+ end
1866
+
1867
+ # Update properties of this object
1868
+ def update!(**args)
1869
+ @ingest_delay = args[:ingest_delay] if args.key?(:ingest_delay)
1870
+ @launch_stage = args[:launch_stage] if args.key?(:launch_stage)
1871
+ @sample_period = args[:sample_period] if args.key?(:sample_period)
1872
+ end
1873
+ end
1874
+
1875
+ # Bind API methods to metrics. Binding a method to a metric causes that metric's
1876
+ # configured quota behaviors to apply to the method call.
1877
+ class MetricRule
1878
+ include Google::Apis::Core::Hashable
1879
+
1880
+ # Metrics to update when the selected methods are called, and the associated
1881
+ # cost applied to each metric. The key of the map is the metric name, and the
1882
+ # values are the amount increased for the metric against which the quota limits
1883
+ # are defined. The value must not be negative.
1884
+ # Corresponds to the JSON property `metricCosts`
1885
+ # @return [Hash<String,Fixnum>]
1886
+ attr_accessor :metric_costs
1887
+
1888
+ # Selects the methods to which this rule applies. Refer to selector for syntax
1889
+ # details.
1890
+ # Corresponds to the JSON property `selector`
1891
+ # @return [String]
1892
+ attr_accessor :selector
1893
+
1894
+ def initialize(**args)
1895
+ update!(**args)
1896
+ end
1897
+
1898
+ # Update properties of this object
1899
+ def update!(**args)
1900
+ @metric_costs = args[:metric_costs] if args.key?(:metric_costs)
1901
+ @selector = args[:selector] if args.key?(:selector)
1902
+ end
1903
+ end
1904
+
1905
+ # Declares an API Interface to be included in this interface. The including
1906
+ # interface must redeclare all the methods from the included interface, but
1907
+ # documentation and options are inherited as follows: - If after comment and
1908
+ # whitespace stripping, the documentation string of the redeclared method is
1909
+ # empty, it will be inherited from the original method. - Each annotation
1910
+ # belonging to the service config (http, visibility) which is not set in the
1911
+ # redeclared method will be inherited. - If an http annotation is inherited, the
1912
+ # path pattern will be modified as follows. Any version prefix will be replaced
1913
+ # by the version of the including interface plus the root path if specified.
1914
+ # Example of a simple mixin: package google.acl.v1; service AccessControl ` //
1915
+ # Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) `
1916
+ # option (google.api.http).get = "/v1/`resource=**`:getAcl"; ` ` package google.
1917
+ # storage.v2; service Storage ` // rpc GetAcl(GetAclRequest) returns (Acl); //
1918
+ # Get a data record. rpc GetData(GetDataRequest) returns (Data) ` option (google.
1919
+ # api.http).get = "/v2/`resource=**`"; ` ` Example of a mixin configuration:
1920
+ # apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.
1921
+ # AccessControl The mixin construct implies that all methods in `AccessControl`
1922
+ # are also declared with same name and request/response types in `Storage`. A
1923
+ # documentation generator or annotation processor will see the effective `
1924
+ # Storage.GetAcl` method after inheriting documentation and annotations as
1925
+ # follows: service Storage ` // Get the underlying ACL object. rpc GetAcl(
1926
+ # GetAclRequest) returns (Acl) ` option (google.api.http).get = "/v2/`resource=**
1927
+ # `:getAcl"; ` ... ` Note how the version in the path pattern changed from `v1`
1928
+ # to `v2`. If the `root` field in the mixin is specified, it should be a
1929
+ # relative path under which inherited HTTP paths are placed. Example: apis: -
1930
+ # name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
1931
+ # root: acls This implies the following inherited HTTP annotation: service
1932
+ # Storage ` // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (
1933
+ # Acl) ` option (google.api.http).get = "/v2/acls/`resource=**`:getAcl"; ` ... `
1934
+ class Mixin
1935
+ include Google::Apis::Core::Hashable
1936
+
1937
+ # The fully qualified name of the interface which is included.
1938
+ # Corresponds to the JSON property `name`
1939
+ # @return [String]
1940
+ attr_accessor :name
1941
+
1942
+ # If non-empty specifies a path under which inherited HTTP paths are rooted.
1943
+ # Corresponds to the JSON property `root`
1944
+ # @return [String]
1945
+ attr_accessor :root
1946
+
1947
+ def initialize(**args)
1948
+ update!(**args)
1949
+ end
1950
+
1951
+ # Update properties of this object
1952
+ def update!(**args)
1953
+ @name = args[:name] if args.key?(:name)
1954
+ @root = args[:root] if args.key?(:root)
1955
+ end
1956
+ end
1957
+
1958
+ # An object that describes the schema of a MonitoredResource object using a type
1959
+ # name and a set of labels. For example, the monitored resource descriptor for
1960
+ # Google Compute Engine VM instances has a type of `"gce_instance"` and
1961
+ # specifies the use of the labels `"instance_id"` and `"zone"` to identify
1962
+ # particular VM instances. Different APIs can support different monitored
1963
+ # resource types. APIs generally provide a `list` method that returns the
1964
+ # monitored resource descriptors used by the API.
1965
+ class MonitoredResourceDescriptor
1966
+ include Google::Apis::Core::Hashable
1967
+
1968
+ # Optional. A detailed description of the monitored resource type that might be
1969
+ # used in documentation.
1970
+ # Corresponds to the JSON property `description`
1971
+ # @return [String]
1972
+ attr_accessor :description
1973
+
1974
+ # Optional. A concise name for the monitored resource type that might be
1975
+ # displayed in user interfaces. It should be a Title Cased Noun Phrase, without
1976
+ # any article or other determiners. For example, `"Google Cloud SQL Database"`.
1977
+ # Corresponds to the JSON property `displayName`
1978
+ # @return [String]
1979
+ attr_accessor :display_name
1980
+
1981
+ # Required. A set of labels used to describe instances of this monitored
1982
+ # resource type. For example, an individual Google Cloud SQL database is
1983
+ # identified by values for the labels `"database_id"` and `"zone"`.
1984
+ # Corresponds to the JSON property `labels`
1985
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::LabelDescriptor>]
1986
+ attr_accessor :labels
1987
+
1988
+ # Optional. The launch stage of the monitored resource definition.
1989
+ # Corresponds to the JSON property `launchStage`
1990
+ # @return [String]
1991
+ attr_accessor :launch_stage
1992
+
1993
+ # Optional. The resource name of the monitored resource descriptor: `"projects/`
1994
+ # project_id`/monitoredResourceDescriptors/`type`"` where `type` is the value of
1995
+ # the `type` field in this object and `project_id` is a project ID that provides
1996
+ # API-specific context for accessing the type. APIs that do not use project
1997
+ # information can use the resource name format `"monitoredResourceDescriptors/`
1998
+ # type`"`.
1999
+ # Corresponds to the JSON property `name`
2000
+ # @return [String]
2001
+ attr_accessor :name
2002
+
2003
+ # Required. The monitored resource type. For example, the type `"
2004
+ # cloudsql_database"` represents databases in Google Cloud SQL.
2005
+ # Corresponds to the JSON property `type`
2006
+ # @return [String]
2007
+ attr_accessor :type
2008
+
2009
+ def initialize(**args)
2010
+ update!(**args)
2011
+ end
2012
+
2013
+ # Update properties of this object
2014
+ def update!(**args)
2015
+ @description = args[:description] if args.key?(:description)
2016
+ @display_name = args[:display_name] if args.key?(:display_name)
2017
+ @labels = args[:labels] if args.key?(:labels)
2018
+ @launch_stage = args[:launch_stage] if args.key?(:launch_stage)
2019
+ @name = args[:name] if args.key?(:name)
2020
+ @type = args[:type] if args.key?(:type)
2021
+ end
2022
+ end
2023
+
2024
+ # Monitoring configuration of the service. The example below shows how to
2025
+ # configure monitored resources and metrics for monitoring. In the example, a
2026
+ # monitored resource and two metrics are defined. The `library.googleapis.com/
2027
+ # book/returned_count` metric is sent to both producer and consumer projects,
2028
+ # whereas the `library.googleapis.com/book/num_overdue` metric is only sent to
2029
+ # the consumer project. monitored_resources: - type: library.googleapis.com/
2030
+ # Branch display_name: "Library Branch" description: "A branch of a library."
2031
+ # launch_stage: GA labels: - key: resource_container description: "The Cloud
2032
+ # container (ie. project id) for the Branch." - key: location description: "The
2033
+ # location of the library branch." - key: branch_id description: "The id of the
2034
+ # branch." metrics: - name: library.googleapis.com/book/returned_count
2035
+ # display_name: "Books Returned" description: "The count of books that have been
2036
+ # returned." launch_stage: GA metric_kind: DELTA value_type: INT64 unit: "1"
2037
+ # labels: - key: customer_id description: "The id of the customer." - name:
2038
+ # library.googleapis.com/book/num_overdue display_name: "Books Overdue"
2039
+ # description: "The current number of overdue books." launch_stage: GA
2040
+ # metric_kind: GAUGE value_type: INT64 unit: "1" labels: - key: customer_id
2041
+ # description: "The id of the customer." monitoring: producer_destinations: -
2042
+ # monitored_resource: library.googleapis.com/Branch metrics: - library.
2043
+ # googleapis.com/book/returned_count consumer_destinations: - monitored_resource:
2044
+ # library.googleapis.com/Branch metrics: - library.googleapis.com/book/
2045
+ # returned_count - library.googleapis.com/book/num_overdue
2046
+ class Monitoring
2047
+ include Google::Apis::Core::Hashable
2048
+
2049
+ # Monitoring configurations for sending metrics to the consumer project. There
2050
+ # can be multiple consumer destinations. A monitored resource type may appear in
2051
+ # multiple monitoring destinations if different aggregations are needed for
2052
+ # different sets of metrics associated with that monitored resource type. A
2053
+ # monitored resource and metric pair may only be used once in the Monitoring
2054
+ # configuration.
2055
+ # Corresponds to the JSON property `consumerDestinations`
2056
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::MonitoringDestination>]
2057
+ attr_accessor :consumer_destinations
2058
+
2059
+ # Monitoring configurations for sending metrics to the producer project. There
2060
+ # can be multiple producer destinations. A monitored resource type may appear in
2061
+ # multiple monitoring destinations if different aggregations are needed for
2062
+ # different sets of metrics associated with that monitored resource type. A
2063
+ # monitored resource and metric pair may only be used once in the Monitoring
2064
+ # configuration.
2065
+ # Corresponds to the JSON property `producerDestinations`
2066
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::MonitoringDestination>]
2067
+ attr_accessor :producer_destinations
2068
+
2069
+ def initialize(**args)
2070
+ update!(**args)
2071
+ end
2072
+
2073
+ # Update properties of this object
2074
+ def update!(**args)
2075
+ @consumer_destinations = args[:consumer_destinations] if args.key?(:consumer_destinations)
2076
+ @producer_destinations = args[:producer_destinations] if args.key?(:producer_destinations)
2077
+ end
2078
+ end
2079
+
2080
+ # Configuration of a specific monitoring destination (the producer project or
2081
+ # the consumer project).
2082
+ class MonitoringDestination
2083
+ include Google::Apis::Core::Hashable
2084
+
2085
+ # Types of the metrics to report to this monitoring destination. Each type must
2086
+ # be defined in Service.metrics section.
2087
+ # Corresponds to the JSON property `metrics`
2088
+ # @return [Array<String>]
2089
+ attr_accessor :metrics
2090
+
2091
+ # The monitored resource type. The type must be defined in Service.
2092
+ # monitored_resources section.
2093
+ # Corresponds to the JSON property `monitoredResource`
2094
+ # @return [String]
2095
+ attr_accessor :monitored_resource
2096
+
2097
+ def initialize(**args)
2098
+ update!(**args)
2099
+ end
2100
+
2101
+ # Update properties of this object
2102
+ def update!(**args)
2103
+ @metrics = args[:metrics] if args.key?(:metrics)
2104
+ @monitored_resource = args[:monitored_resource] if args.key?(:monitored_resource)
2105
+ end
2106
+ end
2107
+
2108
+ # OAuth scopes are a way to define data and permissions on data. For example,
2109
+ # there are scopes defined for "Read-only access to Google Calendar" and "Access
2110
+ # to Cloud Platform". Users can consent to a scope for an application, giving it
2111
+ # permission to access that data on their behalf. OAuth scope specifications
2112
+ # should be fairly coarse grained; a user will need to see and understand the
2113
+ # text description of what your scope means. In most cases: use one or at most
2114
+ # two OAuth scopes for an entire family of products. If your product has
2115
+ # multiple APIs, you should probably be sharing the OAuth scope across all of
2116
+ # those APIs. When you need finer grained OAuth consent screens: talk with your
2117
+ # product management about how developers will use them in practice. Please note
2118
+ # that even though each of the canonical scopes is enough for a request to be
2119
+ # accepted and passed to the backend, a request can still fail due to the
2120
+ # backend requiring additional scopes or permissions.
2121
+ class OAuthRequirements
2122
+ include Google::Apis::Core::Hashable
2123
+
2124
+ # The list of publicly documented OAuth scopes that are allowed access. An OAuth
2125
+ # token containing any of these scopes will be accepted. Example:
2126
+ # canonical_scopes: https://www.googleapis.com/auth/calendar, https://www.
2127
+ # googleapis.com/auth/calendar.read
2128
+ # Corresponds to the JSON property `canonicalScopes`
2129
+ # @return [String]
2130
+ attr_accessor :canonical_scopes
2131
+
2132
+ def initialize(**args)
2133
+ update!(**args)
2134
+ end
2135
+
2136
+ # Update properties of this object
2137
+ def update!(**args)
2138
+ @canonical_scopes = args[:canonical_scopes] if args.key?(:canonical_scopes)
2139
+ end
2140
+ end
2141
+
2142
+ # This resource represents a long-running operation that is the result of a
2143
+ # network API call.
2144
+ class Operation
2145
+ include Google::Apis::Core::Hashable
2146
+
2147
+ # If the value is `false`, it means the operation is still in progress. If `true`
2148
+ # , the operation is completed, and either `error` or `response` is available.
2149
+ # Corresponds to the JSON property `done`
2150
+ # @return [Boolean]
2151
+ attr_accessor :done
2152
+ alias_method :done?, :done
2153
+
2154
+ # The `Status` type defines a logical error model that is suitable for different
2155
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2156
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2157
+ # data: error code, error message, and error details. You can find out more
2158
+ # about this error model and how to work with it in the [API Design Guide](https:
2159
+ # //cloud.google.com/apis/design/errors).
2160
+ # Corresponds to the JSON property `error`
2161
+ # @return [Google::Apis::ServiceconsumermanagementV1::Status]
2162
+ attr_accessor :error
2163
+
2164
+ # Service-specific metadata associated with the operation. It typically contains
2165
+ # progress information and common metadata such as create time. Some services
2166
+ # might not provide such metadata. Any method that returns a long-running
2167
+ # operation should document the metadata type, if any.
2168
+ # Corresponds to the JSON property `metadata`
2169
+ # @return [Hash<String,Object>]
2170
+ attr_accessor :metadata
2171
+
2172
+ # The server-assigned name, which is only unique within the same service that
2173
+ # originally returns it. If you use the default HTTP mapping, the `name` should
2174
+ # be a resource name ending with `operations/`unique_id``.
2175
+ # Corresponds to the JSON property `name`
2176
+ # @return [String]
2177
+ attr_accessor :name
2178
+
2179
+ # The normal response of the operation in case of success. If the original
2180
+ # method returns no data on success, such as `Delete`, the response is `google.
2181
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
2182
+ # the response should be the resource. For other methods, the response should
2183
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
2184
+ # example, if the original method name is `TakeSnapshot()`, the inferred
2185
+ # response type is `TakeSnapshotResponse`.
2186
+ # Corresponds to the JSON property `response`
2187
+ # @return [Hash<String,Object>]
2188
+ attr_accessor :response
2189
+
2190
+ def initialize(**args)
2191
+ update!(**args)
2192
+ end
2193
+
2194
+ # Update properties of this object
2195
+ def update!(**args)
2196
+ @done = args[:done] if args.key?(:done)
2197
+ @error = args[:error] if args.key?(:error)
2198
+ @metadata = args[:metadata] if args.key?(:metadata)
2199
+ @name = args[:name] if args.key?(:name)
2200
+ @response = args[:response] if args.key?(:response)
2201
+ end
2202
+ end
2203
+
2204
+ # A protocol buffer option, which can be attached to a message, field,
2205
+ # enumeration, etc.
2206
+ class Option
2207
+ include Google::Apis::Core::Hashable
2208
+
2209
+ # The option's name. For protobuf built-in options (options defined in
2210
+ # descriptor.proto), this is the short name. For example, `"map_entry"`. For
2211
+ # custom options, it should be the fully-qualified name. For example, `"google.
2212
+ # api.http"`.
2213
+ # Corresponds to the JSON property `name`
2214
+ # @return [String]
2215
+ attr_accessor :name
2216
+
2217
+ # The option's value packed in an Any message. If the value is a primitive, the
2218
+ # corresponding wrapper type defined in google/protobuf/wrappers.proto should be
2219
+ # used. If the value is an enum, it should be stored as an int32 value using the
2220
+ # google.protobuf.Int32Value type.
2221
+ # Corresponds to the JSON property `value`
2222
+ # @return [Hash<String,Object>]
2223
+ attr_accessor :value
2224
+
2225
+ def initialize(**args)
2226
+ update!(**args)
2227
+ end
2228
+
2229
+ # Update properties of this object
2230
+ def update!(**args)
2231
+ @name = args[:name] if args.key?(:name)
2232
+ @value = args[:value] if args.key?(:value)
2233
+ end
2234
+ end
2235
+
2236
+ # Represents a documentation page. A page can contain subpages to represent
2237
+ # nested documentation set structure.
2238
+ class Page
2239
+ include Google::Apis::Core::Hashable
2240
+
2241
+ # The Markdown content of the page. You can use (== include `path` ==) to
2242
+ # include content from a Markdown file.
2243
+ # Corresponds to the JSON property `content`
2244
+ # @return [String]
2245
+ attr_accessor :content
2246
+
2247
+ # The name of the page. It will be used as an identity of the page to generate
2248
+ # URI of the page, text of the link to this page in navigation, etc. The full
2249
+ # page name (start from the root page name to this page concatenated with `.`)
2250
+ # can be used as reference to the page in your documentation. For example: pages:
2251
+ # - name: Tutorial content: (== include tutorial.md ==) subpages: - name: Java
2252
+ # content: (== include tutorial_java.md ==) You can reference `Java` page using
2253
+ # Markdown reference link syntax: `Java`.
2254
+ # Corresponds to the JSON property `name`
2255
+ # @return [String]
2256
+ attr_accessor :name
2257
+
2258
+ # Subpages of this page. The order of subpages specified here will be honored in
2259
+ # the generated docset.
2260
+ # Corresponds to the JSON property `subpages`
2261
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Page>]
2262
+ attr_accessor :subpages
2263
+
2264
+ def initialize(**args)
2265
+ update!(**args)
2266
+ end
2267
+
2268
+ # Update properties of this object
2269
+ def update!(**args)
2270
+ @content = args[:content] if args.key?(:content)
2271
+ @name = args[:name] if args.key?(:name)
2272
+ @subpages = args[:subpages] if args.key?(:subpages)
2273
+ end
2274
+ end
2275
+
2276
+ # Translates to IAM Policy bindings (without auditing at this level)
2277
+ class PolicyBinding
2278
+ include Google::Apis::Core::Hashable
2279
+
2280
+ # Uses the same format as in IAM policy. `member` must include both a prefix and
2281
+ # ID. For example, `user:`emailId``, `serviceAccount:`emailId``, `group:`emailId`
2282
+ # `.
2283
+ # Corresponds to the JSON property `members`
2284
+ # @return [Array<String>]
2285
+ attr_accessor :members
2286
+
2287
+ # Role. (https://cloud.google.com/iam/docs/understanding-roles) For example, `
2288
+ # roles/viewer`, `roles/editor`, or `roles/owner`.
2289
+ # Corresponds to the JSON property `role`
2290
+ # @return [String]
2291
+ attr_accessor :role
2292
+
2293
+ def initialize(**args)
2294
+ update!(**args)
2295
+ end
2296
+
2297
+ # Update properties of this object
2298
+ def update!(**args)
2299
+ @members = args[:members] if args.key?(:members)
2300
+ @role = args[:role] if args.key?(:role)
2301
+ end
2302
+ end
2303
+
2304
+ # Quota configuration helps to achieve fairness and budgeting in service usage.
2305
+ # The metric based quota configuration works this way: - The service
2306
+ # configuration defines a set of metrics. - For API calls, the quota.
2307
+ # metric_rules maps methods to metrics with corresponding costs. - The quota.
2308
+ # limits defines limits on the metrics, which will be used for quota checks at
2309
+ # runtime. An example quota configuration in yaml format: quota: limits: - name:
2310
+ # apiWriteQpsPerProject metric: library.googleapis.com/write_calls unit: "1/min/`
2311
+ # project`" # rate limit for consumer projects values: STANDARD: 10000 # The
2312
+ # metric rules bind all methods to the read_calls metric, # except for the
2313
+ # UpdateBook and DeleteBook methods. These two methods # are mapped to the
2314
+ # write_calls metric, with the UpdateBook method # consuming at twice rate as
2315
+ # the DeleteBook method. metric_rules: - selector: "*" metric_costs: library.
2316
+ # googleapis.com/read_calls: 1 - selector: google.example.library.v1.
2317
+ # LibraryService.UpdateBook metric_costs: library.googleapis.com/write_calls: 2 -
2318
+ # selector: google.example.library.v1.LibraryService.DeleteBook metric_costs:
2319
+ # library.googleapis.com/write_calls: 1 Corresponding Metric definition: metrics:
2320
+ # - name: library.googleapis.com/read_calls display_name: Read requests
2321
+ # metric_kind: DELTA value_type: INT64 - name: library.googleapis.com/
2322
+ # write_calls display_name: Write requests metric_kind: DELTA value_type: INT64
2323
+ class Quota
2324
+ include Google::Apis::Core::Hashable
2325
+
2326
+ # List of `QuotaLimit` definitions for the service.
2327
+ # Corresponds to the JSON property `limits`
2328
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::QuotaLimit>]
2329
+ attr_accessor :limits
2330
+
2331
+ # List of `MetricRule` definitions, each one mapping a selected method to one or
2332
+ # more metrics.
2333
+ # Corresponds to the JSON property `metricRules`
2334
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::MetricRule>]
2335
+ attr_accessor :metric_rules
2336
+
2337
+ def initialize(**args)
2338
+ update!(**args)
2339
+ end
2340
+
2341
+ # Update properties of this object
2342
+ def update!(**args)
2343
+ @limits = args[:limits] if args.key?(:limits)
2344
+ @metric_rules = args[:metric_rules] if args.key?(:metric_rules)
2345
+ end
2346
+ end
2347
+
2348
+ # `QuotaLimit` defines a specific limit that applies over a specified duration
2349
+ # for a limit type. There can be at most one limit for a duration and limit type
2350
+ # combination defined within a `QuotaGroup`.
2351
+ class QuotaLimit
2352
+ include Google::Apis::Core::Hashable
2353
+
2354
+ # Default number of tokens that can be consumed during the specified duration.
2355
+ # This is the number of tokens assigned when a client application developer
2356
+ # activates the service for his/her project. Specifying a value of 0 will block
2357
+ # all requests. This can be used if you are provisioning quota to selected
2358
+ # consumers and blocking others. Similarly, a value of -1 will indicate an
2359
+ # unlimited quota. No other negative values are allowed. Used by group-based
2360
+ # quotas only.
2361
+ # Corresponds to the JSON property `defaultLimit`
2362
+ # @return [Fixnum]
2363
+ attr_accessor :default_limit
2364
+
2365
+ # Optional. User-visible, extended description for this quota limit. Should be
2366
+ # used only when more context is needed to understand this limit than provided
2367
+ # by the limit's display name (see: `display_name`).
2368
+ # Corresponds to the JSON property `description`
2369
+ # @return [String]
2370
+ attr_accessor :description
2371
+
2372
+ # User-visible display name for this limit. Optional. If not set, the UI will
2373
+ # provide a default display name based on the quota configuration. This field
2374
+ # can be used to override the default display name generated from the
2375
+ # configuration.
2376
+ # Corresponds to the JSON property `displayName`
2377
+ # @return [String]
2378
+ attr_accessor :display_name
2379
+
2380
+ # Duration of this limit in textual notation. Must be "100s" or "1d". Used by
2381
+ # group-based quotas only.
2382
+ # Corresponds to the JSON property `duration`
2383
+ # @return [String]
2384
+ attr_accessor :duration
2385
+
2386
+ # Free tier value displayed in the Developers Console for this limit. The free
2387
+ # tier is the number of tokens that will be subtracted from the billed amount
2388
+ # when billing is enabled. This field can only be set on a limit with duration "
2389
+ # 1d", in a billable group; it is invalid on any other limit. If this field is
2390
+ # not set, it defaults to 0, indicating that there is no free tier for this
2391
+ # service. Used by group-based quotas only.
2392
+ # Corresponds to the JSON property `freeTier`
2393
+ # @return [Fixnum]
2394
+ attr_accessor :free_tier
2395
+
2396
+ # Maximum number of tokens that can be consumed during the specified duration.
2397
+ # Client application developers can override the default limit up to this
2398
+ # maximum. If specified, this value cannot be set to a value less than the
2399
+ # default limit. If not specified, it is set to the default limit. To allow
2400
+ # clients to apply overrides with no upper bound, set this to -1, indicating
2401
+ # unlimited maximum quota. Used by group-based quotas only.
2402
+ # Corresponds to the JSON property `maxLimit`
2403
+ # @return [Fixnum]
2404
+ attr_accessor :max_limit
2405
+
2406
+ # The name of the metric this quota limit applies to. The quota limits with the
2407
+ # same metric will be checked together during runtime. The metric must be
2408
+ # defined within the service config.
2409
+ # Corresponds to the JSON property `metric`
2410
+ # @return [String]
2411
+ attr_accessor :metric
2412
+
2413
+ # Name of the quota limit. The name must be provided, and it must be unique
2414
+ # within the service. The name can only include alphanumeric characters as well
2415
+ # as '-'. The maximum length of the limit name is 64 characters.
2416
+ # Corresponds to the JSON property `name`
2417
+ # @return [String]
2418
+ attr_accessor :name
2419
+
2420
+ # Specify the unit of the quota limit. It uses the same syntax as Metric.unit.
2421
+ # The supported unit kinds are determined by the quota backend system. Here are
2422
+ # some examples: * "1/min/`project`" for quota per minute per project. Note: the
2423
+ # order of unit components is insignificant. The "1" at the beginning is
2424
+ # required to follow the metric unit syntax.
2425
+ # Corresponds to the JSON property `unit`
2426
+ # @return [String]
2427
+ attr_accessor :unit
2428
+
2429
+ # Tiered limit values. You must specify this as a key:value pair, with an
2430
+ # integer value that is the maximum number of requests allowed for the specified
2431
+ # unit. Currently only STANDARD is supported.
2432
+ # Corresponds to the JSON property `values`
2433
+ # @return [Hash<String,Fixnum>]
2434
+ attr_accessor :values
2435
+
2436
+ def initialize(**args)
2437
+ update!(**args)
2438
+ end
2439
+
2440
+ # Update properties of this object
2441
+ def update!(**args)
2442
+ @default_limit = args[:default_limit] if args.key?(:default_limit)
2443
+ @description = args[:description] if args.key?(:description)
2444
+ @display_name = args[:display_name] if args.key?(:display_name)
2445
+ @duration = args[:duration] if args.key?(:duration)
2446
+ @free_tier = args[:free_tier] if args.key?(:free_tier)
2447
+ @max_limit = args[:max_limit] if args.key?(:max_limit)
2448
+ @metric = args[:metric] if args.key?(:metric)
2449
+ @name = args[:name] if args.key?(:name)
2450
+ @unit = args[:unit] if args.key?(:unit)
2451
+ @values = args[:values] if args.key?(:values)
2452
+ end
2453
+ end
2454
+
2455
+ # Request message to remove a tenant project resource from the tenancy unit.
2456
+ class RemoveTenantProjectRequest
2457
+ include Google::Apis::Core::Hashable
2458
+
2459
+ # Required. Tag of the resource within the tenancy unit.
2460
+ # Corresponds to the JSON property `tag`
2461
+ # @return [String]
2462
+ attr_accessor :tag
2463
+
2464
+ def initialize(**args)
2465
+ update!(**args)
2466
+ end
2467
+
2468
+ # Update properties of this object
2469
+ def update!(**args)
2470
+ @tag = args[:tag] if args.key?(:tag)
2471
+ end
2472
+ end
2473
+
2474
+ # Response for the search query.
2475
+ class SearchTenancyUnitsResponse
2476
+ include Google::Apis::Core::Hashable
2477
+
2478
+ # Pagination token for large results.
2479
+ # Corresponds to the JSON property `nextPageToken`
2480
+ # @return [String]
2481
+ attr_accessor :next_page_token
2482
+
2483
+ # Tenancy Units matching the request.
2484
+ # Corresponds to the JSON property `tenancyUnits`
2485
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::TenancyUnit>]
2486
+ attr_accessor :tenancy_units
2487
+
2488
+ def initialize(**args)
2489
+ update!(**args)
2490
+ end
2491
+
2492
+ # Update properties of this object
2493
+ def update!(**args)
2494
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2495
+ @tenancy_units = args[:tenancy_units] if args.key?(:tenancy_units)
2496
+ end
2497
+ end
2498
+
2499
+ # `Service` is the root object of Google service configuration schema. It
2500
+ # describes basic information about a service, such as the name and the title,
2501
+ # and delegates other aspects to sub-sections. Each sub-section is either a
2502
+ # proto message or a repeated proto message that configures a specific aspect,
2503
+ # such as auth. See each proto message definition for details. Example: type:
2504
+ # google.api.Service config_version: 3 name: calendar.googleapis.com title:
2505
+ # Google Calendar API apis: - name: google.calendar.v3.Calendar authentication:
2506
+ # providers: - id: google_calendar_auth jwks_uri: https://www.googleapis.com/
2507
+ # oauth2/v1/certs issuer: https://securetoken.google.com rules: - selector: "*"
2508
+ # requirements: provider_id: google_calendar_auth
2509
+ class Service
2510
+ include Google::Apis::Core::Hashable
2511
+
2512
+ # A list of API interfaces exported by this service. Only the `name` field of
2513
+ # the google.protobuf.Api needs to be provided by the configuration author, as
2514
+ # the remaining fields will be derived from the IDL during the normalization
2515
+ # process. It is an error to specify an API interface here which cannot be
2516
+ # resolved against the associated IDL files.
2517
+ # Corresponds to the JSON property `apis`
2518
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Api>]
2519
+ attr_accessor :apis
2520
+
2521
+ # `Authentication` defines the authentication configuration for an API. Example
2522
+ # for an API targeted for external use: name: calendar.googleapis.com
2523
+ # authentication: providers: - id: google_calendar_auth jwks_uri: https://www.
2524
+ # googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: -
2525
+ # selector: "*" requirements: provider_id: google_calendar_auth
2526
+ # Corresponds to the JSON property `authentication`
2527
+ # @return [Google::Apis::ServiceconsumermanagementV1::Authentication]
2528
+ attr_accessor :authentication
2529
+
2530
+ # `Backend` defines the backend configuration for a service.
2531
+ # Corresponds to the JSON property `backend`
2532
+ # @return [Google::Apis::ServiceconsumermanagementV1::Backend]
2533
+ attr_accessor :backend
2534
+
2535
+ # Billing related configuration of the service. The following example shows how
2536
+ # to configure monitored resources and metrics for billing, `
2537
+ # consumer_destinations` is the only supported destination and the monitored
2538
+ # resources need at least one label key `cloud.googleapis.com/location` to
2539
+ # indicate the location of the billing usage, using different monitored
2540
+ # resources between monitoring and billing is recommended so they can be evolved
2541
+ # independently: monitored_resources: - type: library.googleapis.com/
2542
+ # billing_branch labels: - key: cloud.googleapis.com/location description: |
2543
+ # Predefined label to support billing location restriction. - key: city
2544
+ # description: | Custom label to define the city where the library branch is
2545
+ # located in. - key: name description: Custom label to define the name of the
2546
+ # library branch. metrics: - name: library.googleapis.com/book/borrowed_count
2547
+ # metric_kind: DELTA value_type: INT64 unit: "1" billing: consumer_destinations:
2548
+ # - monitored_resource: library.googleapis.com/billing_branch metrics: - library.
2549
+ # googleapis.com/book/borrowed_count
2550
+ # Corresponds to the JSON property `billing`
2551
+ # @return [Google::Apis::ServiceconsumermanagementV1::Billing]
2552
+ attr_accessor :billing
2553
+
2554
+ # Deprecated. The service config compiler always sets this field to `3`.
2555
+ # Corresponds to the JSON property `configVersion`
2556
+ # @return [Fixnum]
2557
+ attr_accessor :config_version
2558
+
2559
+ # `Context` defines which contexts an API requests. Example: context: rules: -
2560
+ # selector: "*" requested: - google.rpc.context.ProjectContext - google.rpc.
2561
+ # context.OriginContext The above specifies that all methods in the API request `
2562
+ # google.rpc.context.ProjectContext` and `google.rpc.context.OriginContext`.
2563
+ # Available context types are defined in package `google.rpc.context`. This also
2564
+ # provides mechanism to allowlist any protobuf message extension that can be
2565
+ # sent in grpc metadata using “x-goog-ext--bin” and “x-goog-ext--jspb” format.
2566
+ # For example, list any service specific protobuf types that can appear in grpc
2567
+ # metadata as follows in your yaml file: Example: context: rules: - selector: "
2568
+ # google.example.library.v1.LibraryService.CreateBook"
2569
+ # allowed_request_extensions: - google.foo.v1.NewExtension
2570
+ # allowed_response_extensions: - google.foo.v1.NewExtension You can also specify
2571
+ # extension ID instead of fully qualified extension name here.
2572
+ # Corresponds to the JSON property `context`
2573
+ # @return [Google::Apis::ServiceconsumermanagementV1::Context]
2574
+ attr_accessor :context
2575
+
2576
+ # Selects and configures the service controller used by the service. The service
2577
+ # controller handles features like abuse, quota, billing, logging, monitoring,
2578
+ # etc.
2579
+ # Corresponds to the JSON property `control`
2580
+ # @return [Google::Apis::ServiceconsumermanagementV1::Control]
2581
+ attr_accessor :control
2582
+
2583
+ # Customize service error responses. For example, list any service specific
2584
+ # protobuf types that can appear in error detail lists of error responses.
2585
+ # Example: custom_error: types: - google.foo.v1.CustomError - google.foo.v1.
2586
+ # AnotherError
2587
+ # Corresponds to the JSON property `customError`
2588
+ # @return [Google::Apis::ServiceconsumermanagementV1::CustomError]
2589
+ attr_accessor :custom_error
2590
+
2591
+ # `Documentation` provides the information for describing a service. Example:
2592
+ # documentation: summary: > The Google Calendar API gives access to most
2593
+ # calendar features. pages: - name: Overview content: (== include google/foo/
2594
+ # overview.md ==) - name: Tutorial content: (== include google/foo/tutorial.md ==
2595
+ # ) subpages; - name: Java content: (== include google/foo/tutorial_java.md ==)
2596
+ # rules: - selector: google.calendar.Calendar.Get description: > ... - selector:
2597
+ # google.calendar.Calendar.Put description: > ... Documentation is provided in
2598
+ # markdown syntax. In addition to standard markdown features, definition lists,
2599
+ # tables and fenced code blocks are supported. Section headers can be provided
2600
+ # and are interpreted relative to the section nesting of the context where a
2601
+ # documentation fragment is embedded. Documentation from the IDL is merged with
2602
+ # documentation defined via the config at normalization time, where
2603
+ # documentation provided by config rules overrides IDL provided. A number of
2604
+ # constructs specific to the API platform are supported in documentation text.
2605
+ # In order to reference a proto element, the following notation can be used: [
2606
+ # fully.qualified.proto.name][] To override the display text used for the link,
2607
+ # this can be used: [display text][fully.qualified.proto.name] Text can be
2608
+ # excluded from doc using the following notation: (-- internal comment --) A few
2609
+ # directives are available in documentation. Note that directives must appear on
2610
+ # a single line to be properly identified. The `include` directive includes a
2611
+ # markdown file from an external source: (== include path/to/file ==) The `
2612
+ # resource_for` directive marks a message to be the resource of a collection in
2613
+ # REST view. If it is not specified, tools attempt to infer the resource from
2614
+ # the operations in a collection: (== resource_for v1.shelves.books ==) The
2615
+ # directive `suppress_warning` does not directly affect documentation and is
2616
+ # documented together with service config validation.
2617
+ # Corresponds to the JSON property `documentation`
2618
+ # @return [Google::Apis::ServiceconsumermanagementV1::Documentation]
2619
+ attr_accessor :documentation
2620
+
2621
+ # Configuration for network endpoints. If this is empty, then an endpoint with
2622
+ # the same name as the service is automatically generated to service all defined
2623
+ # APIs.
2624
+ # Corresponds to the JSON property `endpoints`
2625
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Endpoint>]
2626
+ attr_accessor :endpoints
2627
+
2628
+ # A list of all enum types included in this API service. Enums referenced
2629
+ # directly or indirectly by the `apis` are automatically included. Enums which
2630
+ # are not referenced but shall be included should be listed here by name.
2631
+ # Example: enums: - name: google.someapi.v1.SomeEnum
2632
+ # Corresponds to the JSON property `enums`
2633
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Enum>]
2634
+ attr_accessor :enums
2635
+
2636
+ # Defines the HTTP configuration for an API service. It contains a list of
2637
+ # HttpRule, each specifying the mapping of an RPC method to one or more HTTP
2638
+ # REST API methods.
2639
+ # Corresponds to the JSON property `http`
2640
+ # @return [Google::Apis::ServiceconsumermanagementV1::Http]
2641
+ attr_accessor :http
2642
+
2643
+ # A unique ID for a specific instance of this message, typically assigned by the
2644
+ # client for tracking purpose. Must be no longer than 63 characters and only
2645
+ # lower case letters, digits, '.', '_' and '-' are allowed. If empty, the server
2646
+ # may choose to generate one instead.
2647
+ # Corresponds to the JSON property `id`
2648
+ # @return [String]
2649
+ attr_accessor :id
2650
+
2651
+ # Logging configuration of the service. The following example shows how to
2652
+ # configure logs to be sent to the producer and consumer projects. In the
2653
+ # example, the `activity_history` log is sent to both the producer and consumer
2654
+ # projects, whereas the `purchase_history` log is only sent to the producer
2655
+ # project. monitored_resources: - type: library.googleapis.com/branch labels: -
2656
+ # key: /city description: The city where the library branch is located in. - key:
2657
+ # /name description: The name of the branch. logs: - name: activity_history
2658
+ # labels: - key: /customer_id - name: purchase_history logging:
2659
+ # producer_destinations: - monitored_resource: library.googleapis.com/branch
2660
+ # logs: - activity_history - purchase_history consumer_destinations: -
2661
+ # monitored_resource: library.googleapis.com/branch logs: - activity_history
2662
+ # Corresponds to the JSON property `logging`
2663
+ # @return [Google::Apis::ServiceconsumermanagementV1::Logging]
2664
+ attr_accessor :logging
2665
+
2666
+ # Defines the logs used by this service.
2667
+ # Corresponds to the JSON property `logs`
2668
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::LogDescriptor>]
2669
+ attr_accessor :logs
2670
+
2671
+ # Defines the metrics used by this service.
2672
+ # Corresponds to the JSON property `metrics`
2673
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::MetricDescriptor>]
2674
+ attr_accessor :metrics
2675
+
2676
+ # Defines the monitored resources used by this service. This is required by the
2677
+ # Service.monitoring and Service.logging configurations.
2678
+ # Corresponds to the JSON property `monitoredResources`
2679
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::MonitoredResourceDescriptor>]
2680
+ attr_accessor :monitored_resources
2681
+
2682
+ # Monitoring configuration of the service. The example below shows how to
2683
+ # configure monitored resources and metrics for monitoring. In the example, a
2684
+ # monitored resource and two metrics are defined. The `library.googleapis.com/
2685
+ # book/returned_count` metric is sent to both producer and consumer projects,
2686
+ # whereas the `library.googleapis.com/book/num_overdue` metric is only sent to
2687
+ # the consumer project. monitored_resources: - type: library.googleapis.com/
2688
+ # Branch display_name: "Library Branch" description: "A branch of a library."
2689
+ # launch_stage: GA labels: - key: resource_container description: "The Cloud
2690
+ # container (ie. project id) for the Branch." - key: location description: "The
2691
+ # location of the library branch." - key: branch_id description: "The id of the
2692
+ # branch." metrics: - name: library.googleapis.com/book/returned_count
2693
+ # display_name: "Books Returned" description: "The count of books that have been
2694
+ # returned." launch_stage: GA metric_kind: DELTA value_type: INT64 unit: "1"
2695
+ # labels: - key: customer_id description: "The id of the customer." - name:
2696
+ # library.googleapis.com/book/num_overdue display_name: "Books Overdue"
2697
+ # description: "The current number of overdue books." launch_stage: GA
2698
+ # metric_kind: GAUGE value_type: INT64 unit: "1" labels: - key: customer_id
2699
+ # description: "The id of the customer." monitoring: producer_destinations: -
2700
+ # monitored_resource: library.googleapis.com/Branch metrics: - library.
2701
+ # googleapis.com/book/returned_count consumer_destinations: - monitored_resource:
2702
+ # library.googleapis.com/Branch metrics: - library.googleapis.com/book/
2703
+ # returned_count - library.googleapis.com/book/num_overdue
2704
+ # Corresponds to the JSON property `monitoring`
2705
+ # @return [Google::Apis::ServiceconsumermanagementV1::Monitoring]
2706
+ attr_accessor :monitoring
2707
+
2708
+ # The service name, which is a DNS-like logical identifier for the service, such
2709
+ # as `calendar.googleapis.com`. The service name typically goes through DNS
2710
+ # verification to make sure the owner of the service also owns the DNS name.
2711
+ # Corresponds to the JSON property `name`
2712
+ # @return [String]
2713
+ attr_accessor :name
2714
+
2715
+ # The Google project that owns this service.
2716
+ # Corresponds to the JSON property `producerProjectId`
2717
+ # @return [String]
2718
+ attr_accessor :producer_project_id
2719
+
2720
+ # Quota configuration helps to achieve fairness and budgeting in service usage.
2721
+ # The metric based quota configuration works this way: - The service
2722
+ # configuration defines a set of metrics. - For API calls, the quota.
2723
+ # metric_rules maps methods to metrics with corresponding costs. - The quota.
2724
+ # limits defines limits on the metrics, which will be used for quota checks at
2725
+ # runtime. An example quota configuration in yaml format: quota: limits: - name:
2726
+ # apiWriteQpsPerProject metric: library.googleapis.com/write_calls unit: "1/min/`
2727
+ # project`" # rate limit for consumer projects values: STANDARD: 10000 # The
2728
+ # metric rules bind all methods to the read_calls metric, # except for the
2729
+ # UpdateBook and DeleteBook methods. These two methods # are mapped to the
2730
+ # write_calls metric, with the UpdateBook method # consuming at twice rate as
2731
+ # the DeleteBook method. metric_rules: - selector: "*" metric_costs: library.
2732
+ # googleapis.com/read_calls: 1 - selector: google.example.library.v1.
2733
+ # LibraryService.UpdateBook metric_costs: library.googleapis.com/write_calls: 2 -
2734
+ # selector: google.example.library.v1.LibraryService.DeleteBook metric_costs:
2735
+ # library.googleapis.com/write_calls: 1 Corresponding Metric definition: metrics:
2736
+ # - name: library.googleapis.com/read_calls display_name: Read requests
2737
+ # metric_kind: DELTA value_type: INT64 - name: library.googleapis.com/
2738
+ # write_calls display_name: Write requests metric_kind: DELTA value_type: INT64
2739
+ # Corresponds to the JSON property `quota`
2740
+ # @return [Google::Apis::ServiceconsumermanagementV1::Quota]
2741
+ attr_accessor :quota
2742
+
2743
+ # Source information used to create a Service Config
2744
+ # Corresponds to the JSON property `sourceInfo`
2745
+ # @return [Google::Apis::ServiceconsumermanagementV1::SourceInfo]
2746
+ attr_accessor :source_info
2747
+
2748
+ # ### System parameter configuration A system parameter is a special kind of
2749
+ # parameter defined by the API system, not by an individual API. It is typically
2750
+ # mapped to an HTTP header and/or a URL query parameter. This configuration
2751
+ # specifies which methods change the names of the system parameters.
2752
+ # Corresponds to the JSON property `systemParameters`
2753
+ # @return [Google::Apis::ServiceconsumermanagementV1::SystemParameters]
2754
+ attr_accessor :system_parameters
2755
+
2756
+ # A list of all proto message types included in this API service. It serves
2757
+ # similar purpose as [google.api.Service.types], except that these types are not
2758
+ # needed by user-defined APIs. Therefore, they will not show up in the generated
2759
+ # discovery doc. This field should only be used to define system APIs in ESF.
2760
+ # Corresponds to the JSON property `systemTypes`
2761
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Type>]
2762
+ attr_accessor :system_types
2763
+
2764
+ # The product title for this service.
2765
+ # Corresponds to the JSON property `title`
2766
+ # @return [String]
2767
+ attr_accessor :title
2768
+
2769
+ # A list of all proto message types included in this API service. Types
2770
+ # referenced directly or indirectly by the `apis` are automatically included.
2771
+ # Messages which are not referenced but shall be included, such as types used by
2772
+ # the `google.protobuf.Any` type, should be listed here by name. Example: types:
2773
+ # - name: google.protobuf.Int32
2774
+ # Corresponds to the JSON property `types`
2775
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Type>]
2776
+ attr_accessor :types
2777
+
2778
+ # Configuration controlling usage of a service.
2779
+ # Corresponds to the JSON property `usage`
2780
+ # @return [Google::Apis::ServiceconsumermanagementV1::Usage]
2781
+ attr_accessor :usage
2782
+
2783
+ def initialize(**args)
2784
+ update!(**args)
2785
+ end
2786
+
2787
+ # Update properties of this object
2788
+ def update!(**args)
2789
+ @apis = args[:apis] if args.key?(:apis)
2790
+ @authentication = args[:authentication] if args.key?(:authentication)
2791
+ @backend = args[:backend] if args.key?(:backend)
2792
+ @billing = args[:billing] if args.key?(:billing)
2793
+ @config_version = args[:config_version] if args.key?(:config_version)
2794
+ @context = args[:context] if args.key?(:context)
2795
+ @control = args[:control] if args.key?(:control)
2796
+ @custom_error = args[:custom_error] if args.key?(:custom_error)
2797
+ @documentation = args[:documentation] if args.key?(:documentation)
2798
+ @endpoints = args[:endpoints] if args.key?(:endpoints)
2799
+ @enums = args[:enums] if args.key?(:enums)
2800
+ @http = args[:http] if args.key?(:http)
2801
+ @id = args[:id] if args.key?(:id)
2802
+ @logging = args[:logging] if args.key?(:logging)
2803
+ @logs = args[:logs] if args.key?(:logs)
2804
+ @metrics = args[:metrics] if args.key?(:metrics)
2805
+ @monitored_resources = args[:monitored_resources] if args.key?(:monitored_resources)
2806
+ @monitoring = args[:monitoring] if args.key?(:monitoring)
2807
+ @name = args[:name] if args.key?(:name)
2808
+ @producer_project_id = args[:producer_project_id] if args.key?(:producer_project_id)
2809
+ @quota = args[:quota] if args.key?(:quota)
2810
+ @source_info = args[:source_info] if args.key?(:source_info)
2811
+ @system_parameters = args[:system_parameters] if args.key?(:system_parameters)
2812
+ @system_types = args[:system_types] if args.key?(:system_types)
2813
+ @title = args[:title] if args.key?(:title)
2814
+ @types = args[:types] if args.key?(:types)
2815
+ @usage = args[:usage] if args.key?(:usage)
2816
+ end
2817
+ end
2818
+
2819
+ # Describes the service account configuration for the tenant project.
2820
+ class ServiceAccountConfig
2821
+ include Google::Apis::Core::Hashable
2822
+
2823
+ # ID of the IAM service account to be created in tenant project. The email
2824
+ # format of the service account is "@.iam.gserviceaccount.com". This account ID
2825
+ # must be unique within tenant project and service producers have to guarantee
2826
+ # it. The ID must be 6-30 characters long, and match the following regular
2827
+ # expression: `[a-z]([-a-z0-9]*[a-z0-9])`.
2828
+ # Corresponds to the JSON property `accountId`
2829
+ # @return [String]
2830
+ attr_accessor :account_id
2831
+
2832
+ # Roles for the associated service account for the tenant project.
2833
+ # Corresponds to the JSON property `tenantProjectRoles`
2834
+ # @return [Array<String>]
2835
+ attr_accessor :tenant_project_roles
2836
+
2837
+ def initialize(**args)
2838
+ update!(**args)
2839
+ end
2840
+
2841
+ # Update properties of this object
2842
+ def update!(**args)
2843
+ @account_id = args[:account_id] if args.key?(:account_id)
2844
+ @tenant_project_roles = args[:tenant_project_roles] if args.key?(:tenant_project_roles)
2845
+ end
2846
+ end
2847
+
2848
+ # `SourceContext` represents information about the source of a protobuf element,
2849
+ # like the file in which it is defined.
2850
+ class SourceContext
2851
+ include Google::Apis::Core::Hashable
2852
+
2853
+ # The path-qualified name of the .proto file that contained the associated
2854
+ # protobuf element. For example: `"google/protobuf/source_context.proto"`.
2855
+ # Corresponds to the JSON property `fileName`
2856
+ # @return [String]
2857
+ attr_accessor :file_name
2858
+
2859
+ def initialize(**args)
2860
+ update!(**args)
2861
+ end
2862
+
2863
+ # Update properties of this object
2864
+ def update!(**args)
2865
+ @file_name = args[:file_name] if args.key?(:file_name)
2866
+ end
2867
+ end
2868
+
2869
+ # Source information used to create a Service Config
2870
+ class SourceInfo
2871
+ include Google::Apis::Core::Hashable
2872
+
2873
+ # All files used during config generation.
2874
+ # Corresponds to the JSON property `sourceFiles`
2875
+ # @return [Array<Hash<String,Object>>]
2876
+ attr_accessor :source_files
2877
+
2878
+ def initialize(**args)
2879
+ update!(**args)
2880
+ end
2881
+
2882
+ # Update properties of this object
2883
+ def update!(**args)
2884
+ @source_files = args[:source_files] if args.key?(:source_files)
2885
+ end
2886
+ end
2887
+
2888
+ # The `Status` type defines a logical error model that is suitable for different
2889
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2890
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2891
+ # data: error code, error message, and error details. You can find out more
2892
+ # about this error model and how to work with it in the [API Design Guide](https:
2893
+ # //cloud.google.com/apis/design/errors).
2894
+ class Status
2895
+ include Google::Apis::Core::Hashable
2896
+
2897
+ # The status code, which should be an enum value of google.rpc.Code.
2898
+ # Corresponds to the JSON property `code`
2899
+ # @return [Fixnum]
2900
+ attr_accessor :code
2901
+
2902
+ # A list of messages that carry the error details. There is a common set of
2903
+ # message types for APIs to use.
2904
+ # Corresponds to the JSON property `details`
2905
+ # @return [Array<Hash<String,Object>>]
2906
+ attr_accessor :details
2907
+
2908
+ # A developer-facing error message, which should be in English. Any user-facing
2909
+ # error message should be localized and sent in the google.rpc.Status.details
2910
+ # field, or localized by the client.
2911
+ # Corresponds to the JSON property `message`
2912
+ # @return [String]
2913
+ attr_accessor :message
2914
+
2915
+ def initialize(**args)
2916
+ update!(**args)
2917
+ end
2918
+
2919
+ # Update properties of this object
2920
+ def update!(**args)
2921
+ @code = args[:code] if args.key?(:code)
2922
+ @details = args[:details] if args.key?(:details)
2923
+ @message = args[:message] if args.key?(:message)
2924
+ end
2925
+ end
2926
+
2927
+ # Define a parameter's name and location. The parameter may be passed as either
2928
+ # an HTTP header or a URL query parameter, and if both are passed the behavior
2929
+ # is implementation-dependent.
2930
+ class SystemParameter
2931
+ include Google::Apis::Core::Hashable
2932
+
2933
+ # Define the HTTP header name to use for the parameter. It is case insensitive.
2934
+ # Corresponds to the JSON property `httpHeader`
2935
+ # @return [String]
2936
+ attr_accessor :http_header
2937
+
2938
+ # Define the name of the parameter, such as "api_key" . It is case sensitive.
2939
+ # Corresponds to the JSON property `name`
2940
+ # @return [String]
2941
+ attr_accessor :name
2942
+
2943
+ # Define the URL query parameter name to use for the parameter. It is case
2944
+ # sensitive.
2945
+ # Corresponds to the JSON property `urlQueryParameter`
2946
+ # @return [String]
2947
+ attr_accessor :url_query_parameter
2948
+
2949
+ def initialize(**args)
2950
+ update!(**args)
2951
+ end
2952
+
2953
+ # Update properties of this object
2954
+ def update!(**args)
2955
+ @http_header = args[:http_header] if args.key?(:http_header)
2956
+ @name = args[:name] if args.key?(:name)
2957
+ @url_query_parameter = args[:url_query_parameter] if args.key?(:url_query_parameter)
2958
+ end
2959
+ end
2960
+
2961
+ # Define a system parameter rule mapping system parameter definitions to methods.
2962
+ class SystemParameterRule
2963
+ include Google::Apis::Core::Hashable
2964
+
2965
+ # Define parameters. Multiple names may be defined for a parameter. For a given
2966
+ # method call, only one of them should be used. If multiple names are used the
2967
+ # behavior is implementation-dependent. If none of the specified names are
2968
+ # present the behavior is parameter-dependent.
2969
+ # Corresponds to the JSON property `parameters`
2970
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::SystemParameter>]
2971
+ attr_accessor :parameters
2972
+
2973
+ # Selects the methods to which this rule applies. Use '*' to indicate all
2974
+ # methods in all APIs. Refer to selector for syntax details.
2975
+ # Corresponds to the JSON property `selector`
2976
+ # @return [String]
2977
+ attr_accessor :selector
2978
+
2979
+ def initialize(**args)
2980
+ update!(**args)
2981
+ end
2982
+
2983
+ # Update properties of this object
2984
+ def update!(**args)
2985
+ @parameters = args[:parameters] if args.key?(:parameters)
2986
+ @selector = args[:selector] if args.key?(:selector)
2987
+ end
2988
+ end
2989
+
2990
+ # ### System parameter configuration A system parameter is a special kind of
2991
+ # parameter defined by the API system, not by an individual API. It is typically
2992
+ # mapped to an HTTP header and/or a URL query parameter. This configuration
2993
+ # specifies which methods change the names of the system parameters.
2994
+ class SystemParameters
2995
+ include Google::Apis::Core::Hashable
2996
+
2997
+ # Define system parameters. The parameters defined here will override the
2998
+ # default parameters implemented by the system. If this field is missing from
2999
+ # the service config, default system parameters will be used. Default system
3000
+ # parameters and names is implementation-dependent. Example: define api key for
3001
+ # all methods system_parameters rules: - selector: "*" parameters: - name:
3002
+ # api_key url_query_parameter: api_key Example: define 2 api key names for a
3003
+ # specific method. system_parameters rules: - selector: "/ListShelves"
3004
+ # parameters: - name: api_key http_header: Api-Key1 - name: api_key http_header:
3005
+ # Api-Key2 **NOTE:** All service configuration rules follow "last one wins"
3006
+ # order.
3007
+ # Corresponds to the JSON property `rules`
3008
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::SystemParameterRule>]
3009
+ attr_accessor :rules
3010
+
3011
+ def initialize(**args)
3012
+ update!(**args)
3013
+ end
3014
+
3015
+ # Update properties of this object
3016
+ def update!(**args)
3017
+ @rules = args[:rules] if args.key?(:rules)
3018
+ end
3019
+ end
3020
+
3021
+ # Representation of a tenancy unit.
3022
+ class TenancyUnit
3023
+ include Google::Apis::Core::Hashable
3024
+
3025
+ # Output only. @OutputOnly Cloud resource name of the consumer of this service.
3026
+ # For example 'projects/123456'.
3027
+ # Corresponds to the JSON property `consumer`
3028
+ # @return [String]
3029
+ attr_accessor :consumer
3030
+
3031
+ # Output only. @OutputOnly The time this tenancy unit was created.
3032
+ # Corresponds to the JSON property `createTime`
3033
+ # @return [String]
3034
+ attr_accessor :create_time
3035
+
3036
+ # Globally unique identifier of this tenancy unit "services/`service`/`
3037
+ # collection id`/`resource id`/tenancyUnits/`unit`"
3038
+ # Corresponds to the JSON property `name`
3039
+ # @return [String]
3040
+ attr_accessor :name
3041
+
3042
+ # Output only. Google Cloud API name of the managed service owning this tenancy
3043
+ # unit. For example 'serviceconsumermanagement.googleapis.com'.
3044
+ # Corresponds to the JSON property `service`
3045
+ # @return [String]
3046
+ attr_accessor :service
3047
+
3048
+ # Resources constituting the tenancy unit. There can be at most 512 tenant
3049
+ # resources in a tenancy unit.
3050
+ # Corresponds to the JSON property `tenantResources`
3051
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::TenantResource>]
3052
+ attr_accessor :tenant_resources
3053
+
3054
+ def initialize(**args)
3055
+ update!(**args)
3056
+ end
3057
+
3058
+ # Update properties of this object
3059
+ def update!(**args)
3060
+ @consumer = args[:consumer] if args.key?(:consumer)
3061
+ @create_time = args[:create_time] if args.key?(:create_time)
3062
+ @name = args[:name] if args.key?(:name)
3063
+ @service = args[:service] if args.key?(:service)
3064
+ @tenant_resources = args[:tenant_resources] if args.key?(:tenant_resources)
3065
+ end
3066
+ end
3067
+
3068
+ # This structure defines a tenant project to be added to the specified tenancy
3069
+ # unit and its initial configuration and properties. A project lien is created
3070
+ # for the tenant project to prevent the tenant project from being deleted
3071
+ # accidentally. The lien is deleted as part of tenant project removal.
3072
+ class TenantProjectConfig
3073
+ include Google::Apis::Core::Hashable
3074
+
3075
+ # Describes the billing configuration for a new tenant project.
3076
+ # Corresponds to the JSON property `billingConfig`
3077
+ # @return [Google::Apis::ServiceconsumermanagementV1::BillingConfig]
3078
+ attr_accessor :billing_config
3079
+
3080
+ # Folder where project in this tenancy unit must be located This folder must
3081
+ # have been previously created with the required permissions for the caller to
3082
+ # create and configure a project in it. Valid folder resource names have the
3083
+ # format `folders/`folder_number`` (for example, `folders/123456`).
3084
+ # Corresponds to the JSON property `folder`
3085
+ # @return [String]
3086
+ attr_accessor :folder
3087
+
3088
+ # Labels that are applied to this project.
3089
+ # Corresponds to the JSON property `labels`
3090
+ # @return [Hash<String,String>]
3091
+ attr_accessor :labels
3092
+
3093
+ # Describes the service account configuration for the tenant project.
3094
+ # Corresponds to the JSON property `serviceAccountConfig`
3095
+ # @return [Google::Apis::ServiceconsumermanagementV1::ServiceAccountConfig]
3096
+ attr_accessor :service_account_config
3097
+
3098
+ # Google Cloud API names of services that are activated on this project during
3099
+ # provisioning. If any of these services can't be activated, the request fails.
3100
+ # For example: 'compute.googleapis.com','cloudfunctions.googleapis.com'
3101
+ # Corresponds to the JSON property `services`
3102
+ # @return [Array<String>]
3103
+ attr_accessor :services
3104
+
3105
+ # Describes policy settings that need to be applied to a newly created tenant
3106
+ # project.
3107
+ # Corresponds to the JSON property `tenantProjectPolicy`
3108
+ # @return [Google::Apis::ServiceconsumermanagementV1::TenantProjectPolicy]
3109
+ attr_accessor :tenant_project_policy
3110
+
3111
+ def initialize(**args)
3112
+ update!(**args)
3113
+ end
3114
+
3115
+ # Update properties of this object
3116
+ def update!(**args)
3117
+ @billing_config = args[:billing_config] if args.key?(:billing_config)
3118
+ @folder = args[:folder] if args.key?(:folder)
3119
+ @labels = args[:labels] if args.key?(:labels)
3120
+ @service_account_config = args[:service_account_config] if args.key?(:service_account_config)
3121
+ @services = args[:services] if args.key?(:services)
3122
+ @tenant_project_policy = args[:tenant_project_policy] if args.key?(:tenant_project_policy)
3123
+ end
3124
+ end
3125
+
3126
+ # Describes policy settings that need to be applied to a newly created tenant
3127
+ # project.
3128
+ class TenantProjectPolicy
3129
+ include Google::Apis::Core::Hashable
3130
+
3131
+ # Policy bindings to be applied to the tenant project, in addition to the 'roles/
3132
+ # owner' role granted to the Service Consumer Management service account. At
3133
+ # least one binding must have the role `roles/owner`. Among the list of members
3134
+ # for `roles/owner`, at least one of them must be either the `user` or `group`
3135
+ # type.
3136
+ # Corresponds to the JSON property `policyBindings`
3137
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::PolicyBinding>]
3138
+ attr_accessor :policy_bindings
3139
+
3140
+ def initialize(**args)
3141
+ update!(**args)
3142
+ end
3143
+
3144
+ # Update properties of this object
3145
+ def update!(**args)
3146
+ @policy_bindings = args[:policy_bindings] if args.key?(:policy_bindings)
3147
+ end
3148
+ end
3149
+
3150
+ # Resource constituting the TenancyUnit.
3151
+ class TenantResource
3152
+ include Google::Apis::Core::Hashable
3153
+
3154
+ # Output only. @OutputOnly Identifier of the tenant resource. For cloud projects,
3155
+ # it is in the form 'projects/`number`'. For example 'projects/123456'.
3156
+ # Corresponds to the JSON property `resource`
3157
+ # @return [String]
3158
+ attr_accessor :resource
3159
+
3160
+ # Status of tenant resource.
3161
+ # Corresponds to the JSON property `status`
3162
+ # @return [String]
3163
+ attr_accessor :status
3164
+
3165
+ # Unique per single tenancy unit.
3166
+ # Corresponds to the JSON property `tag`
3167
+ # @return [String]
3168
+ attr_accessor :tag
3169
+
3170
+ def initialize(**args)
3171
+ update!(**args)
3172
+ end
3173
+
3174
+ # Update properties of this object
3175
+ def update!(**args)
3176
+ @resource = args[:resource] if args.key?(:resource)
3177
+ @status = args[:status] if args.key?(:status)
3178
+ @tag = args[:tag] if args.key?(:tag)
3179
+ end
3180
+ end
3181
+
3182
+ # A protocol buffer message type.
3183
+ class Type
3184
+ include Google::Apis::Core::Hashable
3185
+
3186
+ # The list of fields.
3187
+ # Corresponds to the JSON property `fields`
3188
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Field>]
3189
+ attr_accessor :fields
3190
+
3191
+ # The fully qualified message name.
3192
+ # Corresponds to the JSON property `name`
3193
+ # @return [String]
3194
+ attr_accessor :name
3195
+
3196
+ # The list of types appearing in `oneof` definitions in this type.
3197
+ # Corresponds to the JSON property `oneofs`
3198
+ # @return [Array<String>]
3199
+ attr_accessor :oneofs
3200
+
3201
+ # The protocol buffer options.
3202
+ # Corresponds to the JSON property `options`
3203
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::Option>]
3204
+ attr_accessor :options
3205
+
3206
+ # `SourceContext` represents information about the source of a protobuf element,
3207
+ # like the file in which it is defined.
3208
+ # Corresponds to the JSON property `sourceContext`
3209
+ # @return [Google::Apis::ServiceconsumermanagementV1::SourceContext]
3210
+ attr_accessor :source_context
3211
+
3212
+ # The source syntax.
3213
+ # Corresponds to the JSON property `syntax`
3214
+ # @return [String]
3215
+ attr_accessor :syntax
3216
+
3217
+ def initialize(**args)
3218
+ update!(**args)
3219
+ end
3220
+
3221
+ # Update properties of this object
3222
+ def update!(**args)
3223
+ @fields = args[:fields] if args.key?(:fields)
3224
+ @name = args[:name] if args.key?(:name)
3225
+ @oneofs = args[:oneofs] if args.key?(:oneofs)
3226
+ @options = args[:options] if args.key?(:options)
3227
+ @source_context = args[:source_context] if args.key?(:source_context)
3228
+ @syntax = args[:syntax] if args.key?(:syntax)
3229
+ end
3230
+ end
3231
+
3232
+ # Request message to undelete tenant project resource previously deleted from
3233
+ # the tenancy unit.
3234
+ class UndeleteTenantProjectRequest
3235
+ include Google::Apis::Core::Hashable
3236
+
3237
+ # Required. Tag of the resource within the tenancy unit.
3238
+ # Corresponds to the JSON property `tag`
3239
+ # @return [String]
3240
+ attr_accessor :tag
3241
+
3242
+ def initialize(**args)
3243
+ update!(**args)
3244
+ end
3245
+
3246
+ # Update properties of this object
3247
+ def update!(**args)
3248
+ @tag = args[:tag] if args.key?(:tag)
3249
+ end
3250
+ end
3251
+
3252
+ # Configuration controlling usage of a service.
3253
+ class Usage
3254
+ include Google::Apis::Core::Hashable
3255
+
3256
+ # The full resource name of a channel used for sending notifications to the
3257
+ # service producer. Google Service Management currently only supports [Google
3258
+ # Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification channel. To
3259
+ # use Google Cloud Pub/Sub as the channel, this must be the name of a Cloud Pub/
3260
+ # Sub topic that uses the Cloud Pub/Sub topic name format documented in https://
3261
+ # cloud.google.com/pubsub/docs/overview.
3262
+ # Corresponds to the JSON property `producerNotificationChannel`
3263
+ # @return [String]
3264
+ attr_accessor :producer_notification_channel
3265
+
3266
+ # Requirements that must be satisfied before a consumer project can use the
3267
+ # service. Each requirement is of the form /; for example 'serviceusage.
3268
+ # googleapis.com/billing-enabled'.
3269
+ # Corresponds to the JSON property `requirements`
3270
+ # @return [Array<String>]
3271
+ attr_accessor :requirements
3272
+
3273
+ # A list of usage rules that apply to individual API methods. **NOTE:** All
3274
+ # service configuration rules follow "last one wins" order.
3275
+ # Corresponds to the JSON property `rules`
3276
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::UsageRule>]
3277
+ attr_accessor :rules
3278
+
3279
+ def initialize(**args)
3280
+ update!(**args)
3281
+ end
3282
+
3283
+ # Update properties of this object
3284
+ def update!(**args)
3285
+ @producer_notification_channel = args[:producer_notification_channel] if args.key?(:producer_notification_channel)
3286
+ @requirements = args[:requirements] if args.key?(:requirements)
3287
+ @rules = args[:rules] if args.key?(:rules)
3288
+ end
3289
+ end
3290
+
3291
+ # Usage configuration rules for the service. NOTE: Under development. Use this
3292
+ # rule to configure unregistered calls for the service. Unregistered calls are
3293
+ # calls that do not contain consumer project identity. (Example: calls that do
3294
+ # not contain an API key). By default, API methods do not allow unregistered
3295
+ # calls, and each method call must be identified by a consumer project identity.
3296
+ # Use this rule to allow/disallow unregistered calls. Example of an API that
3297
+ # wants to allow unregistered calls for entire service. usage: rules: - selector:
3298
+ # "*" allow_unregistered_calls: true Example of a method that wants to allow
3299
+ # unregistered calls. usage: rules: - selector: "google.example.library.v1.
3300
+ # LibraryService.CreateBook" allow_unregistered_calls: true
3301
+ class UsageRule
3302
+ include Google::Apis::Core::Hashable
3303
+
3304
+ # If true, the selected method allows unregistered calls, e.g. calls that don't
3305
+ # identify any user or application.
3306
+ # Corresponds to the JSON property `allowUnregisteredCalls`
3307
+ # @return [Boolean]
3308
+ attr_accessor :allow_unregistered_calls
3309
+ alias_method :allow_unregistered_calls?, :allow_unregistered_calls
3310
+
3311
+ # Selects the methods to which this rule applies. Use '*' to indicate all
3312
+ # methods in all APIs. Refer to selector for syntax details.
3313
+ # Corresponds to the JSON property `selector`
3314
+ # @return [String]
3315
+ attr_accessor :selector
3316
+
3317
+ # If true, the selected method should skip service control and the control plane
3318
+ # features, such as quota and billing, will not be available. This flag is used
3319
+ # by Google Cloud Endpoints to bypass checks for internal methods, such as
3320
+ # service health check methods.
3321
+ # Corresponds to the JSON property `skipServiceControl`
3322
+ # @return [Boolean]
3323
+ attr_accessor :skip_service_control
3324
+ alias_method :skip_service_control?, :skip_service_control
3325
+
3326
+ def initialize(**args)
3327
+ update!(**args)
3328
+ end
3329
+
3330
+ # Update properties of this object
3331
+ def update!(**args)
3332
+ @allow_unregistered_calls = args[:allow_unregistered_calls] if args.key?(:allow_unregistered_calls)
3333
+ @selector = args[:selector] if args.key?(:selector)
3334
+ @skip_service_control = args[:skip_service_control] if args.key?(:skip_service_control)
3335
+ end
3336
+ end
3337
+
3338
+ # Response message for the `AddVisibilityLabels` method. This response message
3339
+ # is assigned to the `response` field of the returned Operation when that
3340
+ # operation is done.
3341
+ class V1AddVisibilityLabelsResponse
3342
+ include Google::Apis::Core::Hashable
3343
+
3344
+ # The updated set of visibility labels for this consumer on this service.
3345
+ # Corresponds to the JSON property `labels`
3346
+ # @return [Array<String>]
3347
+ attr_accessor :labels
3348
+
3349
+ def initialize(**args)
3350
+ update!(**args)
3351
+ end
3352
+
3353
+ # Update properties of this object
3354
+ def update!(**args)
3355
+ @labels = args[:labels] if args.key?(:labels)
3356
+ end
3357
+ end
3358
+
3359
+ # Response message for BatchCreateProducerOverrides
3360
+ class V1Beta1BatchCreateProducerOverridesResponse
3361
+ include Google::Apis::Core::Hashable
3362
+
3363
+ # The overrides that were created.
3364
+ # Corresponds to the JSON property `overrides`
3365
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::V1Beta1QuotaOverride>]
3366
+ attr_accessor :overrides
3367
+
3368
+ def initialize(**args)
3369
+ update!(**args)
3370
+ end
3371
+
3372
+ # Update properties of this object
3373
+ def update!(**args)
3374
+ @overrides = args[:overrides] if args.key?(:overrides)
3375
+ end
3376
+ end
3377
+
3378
+ # Response message for the `DisableConsumer` method. This response message is
3379
+ # assigned to the `response` field of the returned Operation when that operation
3380
+ # is done.
3381
+ class V1Beta1DisableConsumerResponse
3382
+ include Google::Apis::Core::Hashable
3383
+
3384
+ def initialize(**args)
3385
+ update!(**args)
3386
+ end
3387
+
3388
+ # Update properties of this object
3389
+ def update!(**args)
3390
+ end
3391
+ end
3392
+
3393
+ # Response message for the `EnableConsumer` method. This response message is
3394
+ # assigned to the `response` field of the returned Operation when that operation
3395
+ # is done.
3396
+ class V1Beta1EnableConsumerResponse
3397
+ include Google::Apis::Core::Hashable
3398
+
3399
+ def initialize(**args)
3400
+ update!(**args)
3401
+ end
3402
+
3403
+ # Update properties of this object
3404
+ def update!(**args)
3405
+ end
3406
+ end
3407
+
3408
+ # Response message for the `GenerateServiceIdentity` method. This response
3409
+ # message is assigned to the `response` field of the returned Operation when
3410
+ # that operation is done.
3411
+ class V1Beta1GenerateServiceIdentityResponse
3412
+ include Google::Apis::Core::Hashable
3413
+
3414
+ # A service identity in the Identity and Access Management API.
3415
+ # Corresponds to the JSON property `identity`
3416
+ # @return [Google::Apis::ServiceconsumermanagementV1::V1Beta1ServiceIdentity]
3417
+ attr_accessor :identity
3418
+
3419
+ def initialize(**args)
3420
+ update!(**args)
3421
+ end
3422
+
3423
+ # Update properties of this object
3424
+ def update!(**args)
3425
+ @identity = args[:identity] if args.key?(:identity)
3426
+ end
3427
+ end
3428
+
3429
+ # Response message for ImportProducerOverrides
3430
+ class V1Beta1ImportProducerOverridesResponse
3431
+ include Google::Apis::Core::Hashable
3432
+
3433
+ # The overrides that were created from the imported data.
3434
+ # Corresponds to the JSON property `overrides`
3435
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::V1Beta1QuotaOverride>]
3436
+ attr_accessor :overrides
3437
+
3438
+ def initialize(**args)
3439
+ update!(**args)
3440
+ end
3441
+
3442
+ # Update properties of this object
3443
+ def update!(**args)
3444
+ @overrides = args[:overrides] if args.key?(:overrides)
3445
+ end
3446
+ end
3447
+
3448
+ # Response message for ImportProducerQuotaPolicies
3449
+ class V1Beta1ImportProducerQuotaPoliciesResponse
3450
+ include Google::Apis::Core::Hashable
3451
+
3452
+ # The policies that were created from the imported data.
3453
+ # Corresponds to the JSON property `policies`
3454
+ # @return [Array<Google::Apis::ServiceconsumermanagementV1::V1Beta1ProducerQuotaPolicy>]
3455
+ attr_accessor :policies
3456
+
3457
+ def initialize(**args)
3458
+ update!(**args)
3459
+ end
3460
+
3461
+ # Update properties of this object
3462
+ def update!(**args)
3463
+ @policies = args[:policies] if args.key?(:policies)
3464
+ end
3465
+ end
3466
+
3467
+ # Quota policy created by service producer.
3468
+ class V1Beta1ProducerQuotaPolicy
3469
+ include Google::Apis::Core::Hashable
3470
+
3471
+ # The cloud resource container at which the quota policy is created. The format
3472
+ # is `container_type`/`container_number`
3473
+ # Corresponds to the JSON property `container`
3474
+ # @return [String]
3475
+ attr_accessor :container
3476
+
3477
+ # If this map is nonempty, then this policy applies only to specific values for
3478
+ # dimensions defined in the limit unit. For example, an policy on a limit with
3479
+ # the unit 1/`project`/`region` could contain an entry with the key "region" and
3480
+ # the value "us-east-1"; the policy is only applied to quota consumed in that
3481
+ # region. This map has the following restrictions: * Keys that are not defined
3482
+ # in the limit's unit are not valid keys. Any string appearing in `brackets` in
3483
+ # the unit (besides `project` or `user`) is a defined key. * "project" is not a
3484
+ # valid key; the project is already specified in the parent resource name. * "
3485
+ # user" is not a valid key; the API does not support quota polcies that apply
3486
+ # only to a specific user. * If "region" appears as a key, its value must be a
3487
+ # valid Cloud region. * If "zone" appears as a key, its value must be a valid
3488
+ # Cloud zone. * If any valid key other than "region" or "zone" appears in the
3489
+ # map, then all valid keys other than "region" or "zone" must also appear in the
3490
+ # map.
3491
+ # Corresponds to the JSON property `dimensions`
3492
+ # @return [Hash<String,String>]
3493
+ attr_accessor :dimensions
3494
+
3495
+ # The name of the metric to which this policy applies. An example name would be:
3496
+ # `compute.googleapis.com/cpus`
3497
+ # Corresponds to the JSON property `metric`
3498
+ # @return [String]
3499
+ attr_accessor :metric
3500
+
3501
+ # The resource name of the producer policy. An example name would be: `services/
3502
+ # compute.googleapis.com/organizations/123/consumerQuotaMetrics/compute.
3503
+ # googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerQuotaPolicies/
3504
+ # 4a3f2c1d`
3505
+ # Corresponds to the JSON property `name`
3506
+ # @return [String]
3507
+ attr_accessor :name
3508
+
3509
+ # The quota policy value. Can be any nonnegative integer, or -1 (unlimited quota)
3510
+ # .
3511
+ # Corresponds to the JSON property `policyValue`
3512
+ # @return [Fixnum]
3513
+ attr_accessor :policy_value
3514
+
3515
+ # The limit unit of the limit to which this policy applies. An example unit
3516
+ # would be: `1/`project`/`region`` Note that ``project`` and ``region`` are not
3517
+ # placeholders in this example; the literal characters ``` and ``` occur in the
3518
+ # string.
3519
+ # Corresponds to the JSON property `unit`
3520
+ # @return [String]
3521
+ attr_accessor :unit
3522
+
3523
+ def initialize(**args)
3524
+ update!(**args)
3525
+ end
3526
+
3527
+ # Update properties of this object
3528
+ def update!(**args)
3529
+ @container = args[:container] if args.key?(:container)
3530
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
3531
+ @metric = args[:metric] if args.key?(:metric)
3532
+ @name = args[:name] if args.key?(:name)
3533
+ @policy_value = args[:policy_value] if args.key?(:policy_value)
3534
+ @unit = args[:unit] if args.key?(:unit)
3535
+ end
3536
+ end
3537
+
3538
+ # A quota override
3539
+ class V1Beta1QuotaOverride
3540
+ include Google::Apis::Core::Hashable
3541
+
3542
+ # The resource name of the ancestor that requested the override. For example: "
3543
+ # organizations/12345" or "folders/67890". Used by admin overrides only.
3544
+ # Corresponds to the JSON property `adminOverrideAncestor`
3545
+ # @return [String]
3546
+ attr_accessor :admin_override_ancestor
3547
+
3548
+ # If this map is nonempty, then this override applies only to specific values
3549
+ # for dimensions defined in the limit unit. For example, an override on a limit
3550
+ # with the unit 1/`project`/`region` could contain an entry with the key "region"
3551
+ # and the value "us-east-1"; the override is only applied to quota consumed in
3552
+ # that region. This map has the following restrictions: * Keys that are not
3553
+ # defined in the limit's unit are not valid keys. Any string appearing in `
3554
+ # brackets` in the unit (besides `project` or `user`) is a defined key. * "
3555
+ # project" is not a valid key; the project is already specified in the parent
3556
+ # resource name. * "user" is not a valid key; the API does not support quota
3557
+ # overrides that apply only to a specific user. * If "region" appears as a key,
3558
+ # its value must be a valid Cloud region. * If "zone" appears as a key, its
3559
+ # value must be a valid Cloud zone. * If any valid key other than "region" or "
3560
+ # zone" appears in the map, then all valid keys other than "region" or "zone"
3561
+ # must also appear in the map.
3562
+ # Corresponds to the JSON property `dimensions`
3563
+ # @return [Hash<String,String>]
3564
+ attr_accessor :dimensions
3565
+
3566
+ # The name of the metric to which this override applies. An example name would
3567
+ # be: `compute.googleapis.com/cpus`
3568
+ # Corresponds to the JSON property `metric`
3569
+ # @return [String]
3570
+ attr_accessor :metric
3571
+
3572
+ # The resource name of the producer override. An example name would be: `
3573
+ # services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.
3574
+ # googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerOverrides/4a3f2c1d`
3575
+ # Corresponds to the JSON property `name`
3576
+ # @return [String]
3577
+ attr_accessor :name
3578
+
3579
+ # The overriding quota limit value. Can be any nonnegative integer, or -1 (
3580
+ # unlimited quota).
3581
+ # Corresponds to the JSON property `overrideValue`
3582
+ # @return [Fixnum]
3583
+ attr_accessor :override_value
3584
+
3585
+ # The limit unit of the limit to which this override applies. An example unit
3586
+ # would be: `1/`project`/`region`` Note that ``project`` and ``region`` are not
3587
+ # placeholders in this example; the literal characters ``` and ``` occur in the
3588
+ # string.
3589
+ # Corresponds to the JSON property `unit`
3590
+ # @return [String]
3591
+ attr_accessor :unit
3592
+
3593
+ def initialize(**args)
3594
+ update!(**args)
3595
+ end
3596
+
3597
+ # Update properties of this object
3598
+ def update!(**args)
3599
+ @admin_override_ancestor = args[:admin_override_ancestor] if args.key?(:admin_override_ancestor)
3600
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
3601
+ @metric = args[:metric] if args.key?(:metric)
3602
+ @name = args[:name] if args.key?(:name)
3603
+ @override_value = args[:override_value] if args.key?(:override_value)
3604
+ @unit = args[:unit] if args.key?(:unit)
3605
+ end
3606
+ end
3607
+
3608
+ # Response message for the `RefreshConsumer` method. This response message is
3609
+ # assigned to the `response` field of the returned Operation when that operation
3610
+ # is done.
3611
+ class V1Beta1RefreshConsumerResponse
3612
+ include Google::Apis::Core::Hashable
3613
+
3614
+ def initialize(**args)
3615
+ update!(**args)
3616
+ end
3617
+
3618
+ # Update properties of this object
3619
+ def update!(**args)
3620
+ end
3621
+ end
3622
+
3623
+ # A service identity in the Identity and Access Management API.
3624
+ class V1Beta1ServiceIdentity
3625
+ include Google::Apis::Core::Hashable
3626
+
3627
+ # The email address of the service identity.
3628
+ # Corresponds to the JSON property `email`
3629
+ # @return [String]
3630
+ attr_accessor :email
3631
+
3632
+ # P4 service identity resource name. An example name would be: `services/
3633
+ # serviceconsumermanagement.googleapis.com/projects/123/serviceIdentities/
3634
+ # default`
3635
+ # Corresponds to the JSON property `name`
3636
+ # @return [String]
3637
+ attr_accessor :name
3638
+
3639
+ # The P4 service identity configuration tag. This must be defined in
3640
+ # activation_grants. If not specified when creating the account, the tag is set
3641
+ # to "default".
3642
+ # Corresponds to the JSON property `tag`
3643
+ # @return [String]
3644
+ attr_accessor :tag
3645
+
3646
+ # The unique and stable id of the service identity.
3647
+ # Corresponds to the JSON property `uniqueId`
3648
+ # @return [String]
3649
+ attr_accessor :unique_id
3650
+
3651
+ def initialize(**args)
3652
+ update!(**args)
3653
+ end
3654
+
3655
+ # Update properties of this object
3656
+ def update!(**args)
3657
+ @email = args[:email] if args.key?(:email)
3658
+ @name = args[:name] if args.key?(:name)
3659
+ @tag = args[:tag] if args.key?(:tag)
3660
+ @unique_id = args[:unique_id] if args.key?(:unique_id)
3661
+ end
3662
+ end
3663
+
3664
+ # A default identity in the Identity and Access Management API.
3665
+ class V1DefaultIdentity
3666
+ include Google::Apis::Core::Hashable
3667
+
3668
+ # The email address of the default identity.
3669
+ # Corresponds to the JSON property `email`
3670
+ # @return [String]
3671
+ attr_accessor :email
3672
+
3673
+ # Default identity resource name. An example name would be: `services/
3674
+ # serviceconsumermanagement.googleapis.com/projects/123/defaultIdentity`
3675
+ # Corresponds to the JSON property `name`
3676
+ # @return [String]
3677
+ attr_accessor :name
3678
+
3679
+ # The unique and stable id of the default identity.
3680
+ # Corresponds to the JSON property `uniqueId`
3681
+ # @return [String]
3682
+ attr_accessor :unique_id
3683
+
3684
+ def initialize(**args)
3685
+ update!(**args)
3686
+ end
3687
+
3688
+ # Update properties of this object
3689
+ def update!(**args)
3690
+ @email = args[:email] if args.key?(:email)
3691
+ @name = args[:name] if args.key?(:name)
3692
+ @unique_id = args[:unique_id] if args.key?(:unique_id)
3693
+ end
3694
+ end
3695
+
3696
+ # Response message for the `DisableConsumer` method. This response message is
3697
+ # assigned to the `response` field of the returned Operation when that operation
3698
+ # is done.
3699
+ class V1DisableConsumerResponse
3700
+ include Google::Apis::Core::Hashable
3701
+
3702
+ def initialize(**args)
3703
+ update!(**args)
3704
+ end
3705
+
3706
+ # Update properties of this object
3707
+ def update!(**args)
3708
+ end
3709
+ end
3710
+
3711
+ # Response message for the `EnableConsumer` method. This response message is
3712
+ # assigned to the `response` field of the returned Operation when that operation
3713
+ # is done.
3714
+ class V1EnableConsumerResponse
3715
+ include Google::Apis::Core::Hashable
3716
+
3717
+ def initialize(**args)
3718
+ update!(**args)
3719
+ end
3720
+
3721
+ # Update properties of this object
3722
+ def update!(**args)
3723
+ end
3724
+ end
3725
+
3726
+ # Response message for the `GenerateDefaultIdentity` method. This response
3727
+ # message is assigned to the `response` field of the returned Operation when
3728
+ # that operation is done.
3729
+ class V1GenerateDefaultIdentityResponse
3730
+ include Google::Apis::Core::Hashable
3731
+
3732
+ # Status of the role attachment. Under development (go/si-attach-role),
3733
+ # currently always return ATTACH_STATUS_UNSPECIFIED)
3734
+ # Corresponds to the JSON property `attachStatus`
3735
+ # @return [String]
3736
+ attr_accessor :attach_status
3737
+
3738
+ # A default identity in the Identity and Access Management API.
3739
+ # Corresponds to the JSON property `identity`
3740
+ # @return [Google::Apis::ServiceconsumermanagementV1::V1DefaultIdentity]
3741
+ attr_accessor :identity
3742
+
3743
+ # Role attached to consumer project. Empty if not attached in this request. (
3744
+ # Under development, currently always return empty.)
3745
+ # Corresponds to the JSON property `role`
3746
+ # @return [String]
3747
+ attr_accessor :role
3748
+
3749
+ def initialize(**args)
3750
+ update!(**args)
3751
+ end
3752
+
3753
+ # Update properties of this object
3754
+ def update!(**args)
3755
+ @attach_status = args[:attach_status] if args.key?(:attach_status)
3756
+ @identity = args[:identity] if args.key?(:identity)
3757
+ @role = args[:role] if args.key?(:role)
3758
+ end
3759
+ end
3760
+
3761
+ # Response message for the `GenerateServiceAccount` method. This response
3762
+ # message is assigned to the `response` field of the returned Operation when
3763
+ # that operation is done.
3764
+ class V1GenerateServiceAccountResponse
3765
+ include Google::Apis::Core::Hashable
3766
+
3767
+ # A service account in the Identity and Access Management API.
3768
+ # Corresponds to the JSON property `account`
3769
+ # @return [Google::Apis::ServiceconsumermanagementV1::V1ServiceAccount]
3770
+ attr_accessor :account
3771
+
3772
+ def initialize(**args)
3773
+ update!(**args)
3774
+ end
3775
+
3776
+ # Update properties of this object
3777
+ def update!(**args)
3778
+ @account = args[:account] if args.key?(:account)
3779
+ end
3780
+ end
3781
+
3782
+ # Response message for the `RefreshConsumer` method. This response message is
3783
+ # assigned to the `response` field of the returned Operation when that operation
3784
+ # is done.
3785
+ class V1RefreshConsumerResponse
3786
+ include Google::Apis::Core::Hashable
3787
+
3788
+ def initialize(**args)
3789
+ update!(**args)
3790
+ end
3791
+
3792
+ # Update properties of this object
3793
+ def update!(**args)
3794
+ end
3795
+ end
3796
+
3797
+ # Response message for the `RemoveVisibilityLabels` method. This response
3798
+ # message is assigned to the `response` field of the returned Operation when
3799
+ # that operation is done.
3800
+ class V1RemoveVisibilityLabelsResponse
3801
+ include Google::Apis::Core::Hashable
3802
+
3803
+ # The updated set of visibility labels for this consumer on this service.
3804
+ # Corresponds to the JSON property `labels`
3805
+ # @return [Array<String>]
3806
+ attr_accessor :labels
3807
+
3808
+ def initialize(**args)
3809
+ update!(**args)
3810
+ end
3811
+
3812
+ # Update properties of this object
3813
+ def update!(**args)
3814
+ @labels = args[:labels] if args.key?(:labels)
3815
+ end
3816
+ end
3817
+
3818
+ # A service account in the Identity and Access Management API.
3819
+ class V1ServiceAccount
3820
+ include Google::Apis::Core::Hashable
3821
+
3822
+ # The email address of the service account.
3823
+ # Corresponds to the JSON property `email`
3824
+ # @return [String]
3825
+ attr_accessor :email
3826
+
3827
+ # Deprecated. See b/136209818.
3828
+ # Corresponds to the JSON property `iamAccountName`
3829
+ # @return [String]
3830
+ attr_accessor :iam_account_name
3831
+
3832
+ # P4 SA resource name. An example name would be: `services/
3833
+ # serviceconsumermanagement.googleapis.com/projects/123/serviceAccounts/default`
3834
+ # Corresponds to the JSON property `name`
3835
+ # @return [String]
3836
+ attr_accessor :name
3837
+
3838
+ # The P4 SA configuration tag. This must be defined in activation_grants. If not
3839
+ # specified when creating the account, the tag is set to "default".
3840
+ # Corresponds to the JSON property `tag`
3841
+ # @return [String]
3842
+ attr_accessor :tag
3843
+
3844
+ # The unique and stable id of the service account.
3845
+ # Corresponds to the JSON property `uniqueId`
3846
+ # @return [String]
3847
+ attr_accessor :unique_id
3848
+
3849
+ def initialize(**args)
3850
+ update!(**args)
3851
+ end
3852
+
3853
+ # Update properties of this object
3854
+ def update!(**args)
3855
+ @email = args[:email] if args.key?(:email)
3856
+ @iam_account_name = args[:iam_account_name] if args.key?(:iam_account_name)
3857
+ @name = args[:name] if args.key?(:name)
3858
+ @tag = args[:tag] if args.key?(:tag)
3859
+ @unique_id = args[:unique_id] if args.key?(:unique_id)
3860
+ end
3861
+ end
3862
+ end
3863
+ end
3864
+ end