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