google-api-client 0.17.1 → 0.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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