google-api-client 0.17.1 → 0.17.2

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