google-cloud-billing-v1 0.10.0 → 0.12.0

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.
@@ -0,0 +1,1145 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2023 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+ require "google/cloud/errors"
20
+ require "google/cloud/billing/v1/cloud_billing_pb"
21
+ require "google/cloud/billing/v1/cloud_billing/rest/service_stub"
22
+
23
+ module Google
24
+ module Cloud
25
+ module Billing
26
+ module V1
27
+ module CloudBilling
28
+ module Rest
29
+ ##
30
+ # REST client for the CloudBilling service.
31
+ #
32
+ # Retrieves the Google Cloud Console billing accounts and associates them with
33
+ # projects.
34
+ #
35
+ class Client
36
+ include Paths
37
+
38
+ # @private
39
+ attr_reader :cloud_billing_stub
40
+
41
+ ##
42
+ # Configure the CloudBilling Client class.
43
+ #
44
+ # See {::Google::Cloud::Billing::V1::CloudBilling::Rest::Client::Configuration}
45
+ # for a description of the configuration fields.
46
+ #
47
+ # @example
48
+ #
49
+ # # Modify the configuration for all CloudBilling clients
50
+ # ::Google::Cloud::Billing::V1::CloudBilling::Rest::Client.configure do |config|
51
+ # config.timeout = 10.0
52
+ # end
53
+ #
54
+ # @yield [config] Configure the Client client.
55
+ # @yieldparam config [Client::Configuration]
56
+ #
57
+ # @return [Client::Configuration]
58
+ #
59
+ def self.configure
60
+ @configure ||= begin
61
+ namespace = ["Google", "Cloud", "Billing", "V1"]
62
+ parent_config = while namespace.any?
63
+ parent_name = namespace.join "::"
64
+ parent_const = const_get parent_name
65
+ break parent_const.configure if parent_const.respond_to? :configure
66
+ namespace.pop
67
+ end
68
+ default_config = Client::Configuration.new parent_config
69
+
70
+ default_config.rpcs.get_billing_account.timeout = 60.0
71
+ default_config.rpcs.get_billing_account.retry_policy = {
72
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
73
+ }
74
+
75
+ default_config.rpcs.list_billing_accounts.timeout = 60.0
76
+ default_config.rpcs.list_billing_accounts.retry_policy = {
77
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
78
+ }
79
+
80
+ default_config.rpcs.update_billing_account.timeout = 60.0
81
+ default_config.rpcs.update_billing_account.retry_policy = {
82
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
83
+ }
84
+
85
+ default_config.rpcs.create_billing_account.timeout = 60.0
86
+
87
+ default_config.rpcs.list_project_billing_info.timeout = 60.0
88
+ default_config.rpcs.list_project_billing_info.retry_policy = {
89
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
90
+ }
91
+
92
+ default_config.rpcs.get_project_billing_info.timeout = 60.0
93
+ default_config.rpcs.get_project_billing_info.retry_policy = {
94
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
95
+ }
96
+
97
+ default_config.rpcs.update_project_billing_info.timeout = 60.0
98
+ default_config.rpcs.update_project_billing_info.retry_policy = {
99
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
100
+ }
101
+
102
+ default_config.rpcs.get_iam_policy.timeout = 60.0
103
+ default_config.rpcs.get_iam_policy.retry_policy = {
104
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
105
+ }
106
+
107
+ default_config.rpcs.set_iam_policy.timeout = 60.0
108
+ default_config.rpcs.set_iam_policy.retry_policy = {
109
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
110
+ }
111
+
112
+ default_config.rpcs.test_iam_permissions.timeout = 60.0
113
+ default_config.rpcs.test_iam_permissions.retry_policy = {
114
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [4, 14]
115
+ }
116
+
117
+ default_config
118
+ end
119
+ yield @configure if block_given?
120
+ @configure
121
+ end
122
+
123
+ ##
124
+ # Configure the CloudBilling Client instance.
125
+ #
126
+ # The configuration is set to the derived mode, meaning that values can be changed,
127
+ # but structural changes (adding new fields, etc.) are not allowed. Structural changes
128
+ # should be made on {Client.configure}.
129
+ #
130
+ # See {::Google::Cloud::Billing::V1::CloudBilling::Rest::Client::Configuration}
131
+ # for a description of the configuration fields.
132
+ #
133
+ # @yield [config] Configure the Client client.
134
+ # @yieldparam config [Client::Configuration]
135
+ #
136
+ # @return [Client::Configuration]
137
+ #
138
+ def configure
139
+ yield @config if block_given?
140
+ @config
141
+ end
142
+
143
+ ##
144
+ # Create a new CloudBilling REST client object.
145
+ #
146
+ # @example
147
+ #
148
+ # # Create a client using the default configuration
149
+ # client = ::Google::Cloud::Billing::V1::CloudBilling::Rest::Client.new
150
+ #
151
+ # # Create a client using a custom configuration
152
+ # client = ::Google::Cloud::Billing::V1::CloudBilling::Rest::Client.new do |config|
153
+ # config.timeout = 10.0
154
+ # end
155
+ #
156
+ # @yield [config] Configure the CloudBilling client.
157
+ # @yieldparam config [Client::Configuration]
158
+ #
159
+ def initialize
160
+ # Create the configuration object
161
+ @config = Configuration.new Client.configure
162
+
163
+ # Yield the configuration if needed
164
+ yield @config if block_given?
165
+
166
+ # Create credentials
167
+ credentials = @config.credentials
168
+ # Use self-signed JWT if the endpoint is unchanged from default,
169
+ # but only if the default endpoint does not have a region prefix.
170
+ enable_self_signed_jwt = @config.endpoint == Configuration::DEFAULT_ENDPOINT &&
171
+ !@config.endpoint.split(".").first.include?("-")
172
+ credentials ||= Credentials.default scope: @config.scope,
173
+ enable_self_signed_jwt: enable_self_signed_jwt
174
+ if credentials.is_a?(::String) || credentials.is_a?(::Hash)
175
+ credentials = Credentials.new credentials, scope: @config.scope
176
+ end
177
+
178
+ @quota_project_id = @config.quota_project
179
+ @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
180
+
181
+ @cloud_billing_stub = ::Google::Cloud::Billing::V1::CloudBilling::Rest::ServiceStub.new endpoint: @config.endpoint, credentials: credentials
182
+ end
183
+
184
+ # Service calls
185
+
186
+ ##
187
+ # Gets information about a billing account. The current authenticated user
188
+ # must be a [viewer of the billing
189
+ # account](https://cloud.google.com/billing/docs/how-to/billing-access).
190
+ #
191
+ # @overload get_billing_account(request, options = nil)
192
+ # Pass arguments to `get_billing_account` via a request object, either of type
193
+ # {::Google::Cloud::Billing::V1::GetBillingAccountRequest} or an equivalent Hash.
194
+ #
195
+ # @param request [::Google::Cloud::Billing::V1::GetBillingAccountRequest, ::Hash]
196
+ # A request object representing the call parameters. Required. To specify no
197
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
198
+ # @param options [::Gapic::CallOptions, ::Hash]
199
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
200
+ #
201
+ # @overload get_billing_account(name: nil)
202
+ # Pass arguments to `get_billing_account` via keyword arguments. Note that at
203
+ # least one keyword argument is required. To specify no parameters, or to keep all
204
+ # the default parameter values, pass an empty Hash as a request object (see above).
205
+ #
206
+ # @param name [::String]
207
+ # Required. The resource name of the billing account to retrieve. For
208
+ # example, `billingAccounts/012345-567890-ABCDEF`.
209
+ # @yield [result, operation] Access the result along with the TransportOperation object
210
+ # @yieldparam result [::Google::Cloud::Billing::V1::BillingAccount]
211
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
212
+ #
213
+ # @return [::Google::Cloud::Billing::V1::BillingAccount]
214
+ #
215
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
216
+ def get_billing_account request, options = nil
217
+ raise ::ArgumentError, "request must be provided" if request.nil?
218
+
219
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::GetBillingAccountRequest
220
+
221
+ # Converts hash and nil to an options object
222
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
223
+
224
+ # Customize the options with defaults
225
+ call_metadata = @config.rpcs.get_billing_account.metadata.to_h
226
+
227
+ # Set x-goog-api-client and x-goog-user-project headers
228
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
229
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
230
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
231
+ transports_version_send: [:rest]
232
+
233
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
234
+
235
+ options.apply_defaults timeout: @config.rpcs.get_billing_account.timeout,
236
+ metadata: call_metadata,
237
+ retry_policy: @config.rpcs.get_billing_account.retry_policy
238
+
239
+ options.apply_defaults timeout: @config.timeout,
240
+ metadata: @config.metadata,
241
+ retry_policy: @config.retry_policy
242
+
243
+ @cloud_billing_stub.get_billing_account request, options do |result, operation|
244
+ yield result, operation if block_given?
245
+ return result
246
+ end
247
+ rescue ::Gapic::Rest::Error => e
248
+ raise ::Google::Cloud::Error.from_error(e)
249
+ end
250
+
251
+ ##
252
+ # Lists the billing accounts that the current authenticated user has
253
+ # permission to
254
+ # [view](https://cloud.google.com/billing/docs/how-to/billing-access).
255
+ #
256
+ # @overload list_billing_accounts(request, options = nil)
257
+ # Pass arguments to `list_billing_accounts` via a request object, either of type
258
+ # {::Google::Cloud::Billing::V1::ListBillingAccountsRequest} or an equivalent Hash.
259
+ #
260
+ # @param request [::Google::Cloud::Billing::V1::ListBillingAccountsRequest, ::Hash]
261
+ # A request object representing the call parameters. Required. To specify no
262
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
263
+ # @param options [::Gapic::CallOptions, ::Hash]
264
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
265
+ #
266
+ # @overload list_billing_accounts(page_size: nil, page_token: nil, filter: nil)
267
+ # Pass arguments to `list_billing_accounts` via keyword arguments. Note that at
268
+ # least one keyword argument is required. To specify no parameters, or to keep all
269
+ # the default parameter values, pass an empty Hash as a request object (see above).
270
+ #
271
+ # @param page_size [::Integer]
272
+ # Requested page size. The maximum page size is 100; this is also the
273
+ # default.
274
+ # @param page_token [::String]
275
+ # A token identifying a page of results to return. This should be a
276
+ # `next_page_token` value returned from a previous `ListBillingAccounts`
277
+ # call. If unspecified, the first page of results is returned.
278
+ # @param filter [::String]
279
+ # Options for how to filter the returned billing accounts.
280
+ # Currently this only supports filtering for
281
+ # [subaccounts](https://cloud.google.com/billing/docs/concepts) under a
282
+ # single provided reseller billing account.
283
+ # (e.g. "master_billing_account=billingAccounts/012345-678901-ABCDEF").
284
+ # Boolean algebra and other fields are not currently supported.
285
+ # @yield [result, operation] Access the result along with the TransportOperation object
286
+ # @yieldparam result [::Gapic::Rest::PagedEnumerable<::Google::Cloud::Billing::V1::BillingAccount>]
287
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
288
+ #
289
+ # @return [::Gapic::Rest::PagedEnumerable<::Google::Cloud::Billing::V1::BillingAccount>]
290
+ #
291
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
292
+ def list_billing_accounts request, options = nil
293
+ raise ::ArgumentError, "request must be provided" if request.nil?
294
+
295
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::ListBillingAccountsRequest
296
+
297
+ # Converts hash and nil to an options object
298
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
299
+
300
+ # Customize the options with defaults
301
+ call_metadata = @config.rpcs.list_billing_accounts.metadata.to_h
302
+
303
+ # Set x-goog-api-client and x-goog-user-project headers
304
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
305
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
306
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
307
+ transports_version_send: [:rest]
308
+
309
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
310
+
311
+ options.apply_defaults timeout: @config.rpcs.list_billing_accounts.timeout,
312
+ metadata: call_metadata,
313
+ retry_policy: @config.rpcs.list_billing_accounts.retry_policy
314
+
315
+ options.apply_defaults timeout: @config.timeout,
316
+ metadata: @config.metadata,
317
+ retry_policy: @config.retry_policy
318
+
319
+ @cloud_billing_stub.list_billing_accounts request, options do |result, operation|
320
+ result = ::Gapic::Rest::PagedEnumerable.new @cloud_billing_stub, :list_billing_accounts, "billing_accounts", request, result, options
321
+ yield result, operation if block_given?
322
+ return result
323
+ end
324
+ rescue ::Gapic::Rest::Error => e
325
+ raise ::Google::Cloud::Error.from_error(e)
326
+ end
327
+
328
+ ##
329
+ # Updates a billing account's fields.
330
+ # Currently the only field that can be edited is `display_name`.
331
+ # The current authenticated user must have the `billing.accounts.update`
332
+ # IAM permission, which is typically given to the
333
+ # [administrator](https://cloud.google.com/billing/docs/how-to/billing-access)
334
+ # of the billing account.
335
+ #
336
+ # @overload update_billing_account(request, options = nil)
337
+ # Pass arguments to `update_billing_account` via a request object, either of type
338
+ # {::Google::Cloud::Billing::V1::UpdateBillingAccountRequest} or an equivalent Hash.
339
+ #
340
+ # @param request [::Google::Cloud::Billing::V1::UpdateBillingAccountRequest, ::Hash]
341
+ # A request object representing the call parameters. Required. To specify no
342
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
343
+ # @param options [::Gapic::CallOptions, ::Hash]
344
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
345
+ #
346
+ # @overload update_billing_account(name: nil, account: nil, update_mask: nil)
347
+ # Pass arguments to `update_billing_account` via keyword arguments. Note that at
348
+ # least one keyword argument is required. To specify no parameters, or to keep all
349
+ # the default parameter values, pass an empty Hash as a request object (see above).
350
+ #
351
+ # @param name [::String]
352
+ # Required. The name of the billing account resource to be updated.
353
+ # @param account [::Google::Cloud::Billing::V1::BillingAccount, ::Hash]
354
+ # Required. The billing account resource to replace the resource on the
355
+ # server.
356
+ # @param update_mask [::Google::Protobuf::FieldMask, ::Hash]
357
+ # The update mask applied to the resource.
358
+ # Only "display_name" is currently supported.
359
+ # @yield [result, operation] Access the result along with the TransportOperation object
360
+ # @yieldparam result [::Google::Cloud::Billing::V1::BillingAccount]
361
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
362
+ #
363
+ # @return [::Google::Cloud::Billing::V1::BillingAccount]
364
+ #
365
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
366
+ def update_billing_account request, options = nil
367
+ raise ::ArgumentError, "request must be provided" if request.nil?
368
+
369
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::UpdateBillingAccountRequest
370
+
371
+ # Converts hash and nil to an options object
372
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
373
+
374
+ # Customize the options with defaults
375
+ call_metadata = @config.rpcs.update_billing_account.metadata.to_h
376
+
377
+ # Set x-goog-api-client and x-goog-user-project headers
378
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
379
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
380
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
381
+ transports_version_send: [:rest]
382
+
383
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
384
+
385
+ options.apply_defaults timeout: @config.rpcs.update_billing_account.timeout,
386
+ metadata: call_metadata,
387
+ retry_policy: @config.rpcs.update_billing_account.retry_policy
388
+
389
+ options.apply_defaults timeout: @config.timeout,
390
+ metadata: @config.metadata,
391
+ retry_policy: @config.retry_policy
392
+
393
+ @cloud_billing_stub.update_billing_account request, options do |result, operation|
394
+ yield result, operation if block_given?
395
+ return result
396
+ end
397
+ rescue ::Gapic::Rest::Error => e
398
+ raise ::Google::Cloud::Error.from_error(e)
399
+ end
400
+
401
+ ##
402
+ # This method creates [billing
403
+ # subaccounts](https://cloud.google.com/billing/docs/concepts#subaccounts).
404
+ #
405
+ # Google Cloud resellers should use the
406
+ # Channel Services APIs,
407
+ # [accounts.customers.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers/create)
408
+ # and
409
+ # [accounts.customers.entitlements.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers.entitlements/create).
410
+ #
411
+ # When creating a subaccount, the current authenticated user must have the
412
+ # `billing.accounts.update` IAM permission on the parent account, which is
413
+ # typically given to billing account
414
+ # [administrators](https://cloud.google.com/billing/docs/how-to/billing-access).
415
+ # This method will return an error if the parent account has not been
416
+ # provisioned as a reseller account.
417
+ #
418
+ # @overload create_billing_account(request, options = nil)
419
+ # Pass arguments to `create_billing_account` via a request object, either of type
420
+ # {::Google::Cloud::Billing::V1::CreateBillingAccountRequest} or an equivalent Hash.
421
+ #
422
+ # @param request [::Google::Cloud::Billing::V1::CreateBillingAccountRequest, ::Hash]
423
+ # A request object representing the call parameters. Required. To specify no
424
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
425
+ # @param options [::Gapic::CallOptions, ::Hash]
426
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
427
+ #
428
+ # @overload create_billing_account(billing_account: nil)
429
+ # Pass arguments to `create_billing_account` via keyword arguments. Note that at
430
+ # least one keyword argument is required. To specify no parameters, or to keep all
431
+ # the default parameter values, pass an empty Hash as a request object (see above).
432
+ #
433
+ # @param billing_account [::Google::Cloud::Billing::V1::BillingAccount, ::Hash]
434
+ # Required. The billing account resource to create.
435
+ # Currently CreateBillingAccount only supports subaccount creation, so
436
+ # any created billing accounts must be under a provided parent billing
437
+ # account.
438
+ # @yield [result, operation] Access the result along with the TransportOperation object
439
+ # @yieldparam result [::Google::Cloud::Billing::V1::BillingAccount]
440
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
441
+ #
442
+ # @return [::Google::Cloud::Billing::V1::BillingAccount]
443
+ #
444
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
445
+ def create_billing_account request, options = nil
446
+ raise ::ArgumentError, "request must be provided" if request.nil?
447
+
448
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::CreateBillingAccountRequest
449
+
450
+ # Converts hash and nil to an options object
451
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
452
+
453
+ # Customize the options with defaults
454
+ call_metadata = @config.rpcs.create_billing_account.metadata.to_h
455
+
456
+ # Set x-goog-api-client and x-goog-user-project headers
457
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
458
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
459
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
460
+ transports_version_send: [:rest]
461
+
462
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
463
+
464
+ options.apply_defaults timeout: @config.rpcs.create_billing_account.timeout,
465
+ metadata: call_metadata,
466
+ retry_policy: @config.rpcs.create_billing_account.retry_policy
467
+
468
+ options.apply_defaults timeout: @config.timeout,
469
+ metadata: @config.metadata,
470
+ retry_policy: @config.retry_policy
471
+
472
+ @cloud_billing_stub.create_billing_account request, options do |result, operation|
473
+ yield result, operation if block_given?
474
+ return result
475
+ end
476
+ rescue ::Gapic::Rest::Error => e
477
+ raise ::Google::Cloud::Error.from_error(e)
478
+ end
479
+
480
+ ##
481
+ # Lists the projects associated with a billing account. The current
482
+ # authenticated user must have the `billing.resourceAssociations.list` IAM
483
+ # permission, which is often given to billing account
484
+ # [viewers](https://cloud.google.com/billing/docs/how-to/billing-access).
485
+ #
486
+ # @overload list_project_billing_info(request, options = nil)
487
+ # Pass arguments to `list_project_billing_info` via a request object, either of type
488
+ # {::Google::Cloud::Billing::V1::ListProjectBillingInfoRequest} or an equivalent Hash.
489
+ #
490
+ # @param request [::Google::Cloud::Billing::V1::ListProjectBillingInfoRequest, ::Hash]
491
+ # A request object representing the call parameters. Required. To specify no
492
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
493
+ # @param options [::Gapic::CallOptions, ::Hash]
494
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
495
+ #
496
+ # @overload list_project_billing_info(name: nil, page_size: nil, page_token: nil)
497
+ # Pass arguments to `list_project_billing_info` via keyword arguments. Note that at
498
+ # least one keyword argument is required. To specify no parameters, or to keep all
499
+ # the default parameter values, pass an empty Hash as a request object (see above).
500
+ #
501
+ # @param name [::String]
502
+ # Required. The resource name of the billing account associated with the
503
+ # projects that you want to list. For example,
504
+ # `billingAccounts/012345-567890-ABCDEF`.
505
+ # @param page_size [::Integer]
506
+ # Requested page size. The maximum page size is 100; this is also the
507
+ # default.
508
+ # @param page_token [::String]
509
+ # A token identifying a page of results to be returned. This should be a
510
+ # `next_page_token` value returned from a previous `ListProjectBillingInfo`
511
+ # call. If unspecified, the first page of results is returned.
512
+ # @yield [result, operation] Access the result along with the TransportOperation object
513
+ # @yieldparam result [::Gapic::Rest::PagedEnumerable<::Google::Cloud::Billing::V1::ProjectBillingInfo>]
514
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
515
+ #
516
+ # @return [::Gapic::Rest::PagedEnumerable<::Google::Cloud::Billing::V1::ProjectBillingInfo>]
517
+ #
518
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
519
+ def list_project_billing_info request, options = nil
520
+ raise ::ArgumentError, "request must be provided" if request.nil?
521
+
522
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::ListProjectBillingInfoRequest
523
+
524
+ # Converts hash and nil to an options object
525
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
526
+
527
+ # Customize the options with defaults
528
+ call_metadata = @config.rpcs.list_project_billing_info.metadata.to_h
529
+
530
+ # Set x-goog-api-client and x-goog-user-project headers
531
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
532
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
533
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
534
+ transports_version_send: [:rest]
535
+
536
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
537
+
538
+ options.apply_defaults timeout: @config.rpcs.list_project_billing_info.timeout,
539
+ metadata: call_metadata,
540
+ retry_policy: @config.rpcs.list_project_billing_info.retry_policy
541
+
542
+ options.apply_defaults timeout: @config.timeout,
543
+ metadata: @config.metadata,
544
+ retry_policy: @config.retry_policy
545
+
546
+ @cloud_billing_stub.list_project_billing_info request, options do |result, operation|
547
+ result = ::Gapic::Rest::PagedEnumerable.new @cloud_billing_stub, :list_project_billing_info, "project_billing_info", request, result, options
548
+ yield result, operation if block_given?
549
+ return result
550
+ end
551
+ rescue ::Gapic::Rest::Error => e
552
+ raise ::Google::Cloud::Error.from_error(e)
553
+ end
554
+
555
+ ##
556
+ # Gets the billing information for a project. The current authenticated user
557
+ # must have the `resourcemanager.projects.get` permission for the project,
558
+ # which can be granted by assigning the [Project
559
+ # Viewer](https://cloud.google.com/iam/docs/understanding-roles#predefined_roles)
560
+ # role.
561
+ #
562
+ # @overload get_project_billing_info(request, options = nil)
563
+ # Pass arguments to `get_project_billing_info` via a request object, either of type
564
+ # {::Google::Cloud::Billing::V1::GetProjectBillingInfoRequest} or an equivalent Hash.
565
+ #
566
+ # @param request [::Google::Cloud::Billing::V1::GetProjectBillingInfoRequest, ::Hash]
567
+ # A request object representing the call parameters. Required. To specify no
568
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
569
+ # @param options [::Gapic::CallOptions, ::Hash]
570
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
571
+ #
572
+ # @overload get_project_billing_info(name: nil)
573
+ # Pass arguments to `get_project_billing_info` via keyword arguments. Note that at
574
+ # least one keyword argument is required. To specify no parameters, or to keep all
575
+ # the default parameter values, pass an empty Hash as a request object (see above).
576
+ #
577
+ # @param name [::String]
578
+ # Required. The resource name of the project for which billing information is
579
+ # retrieved. For example, `projects/tokyo-rain-123`.
580
+ # @yield [result, operation] Access the result along with the TransportOperation object
581
+ # @yieldparam result [::Google::Cloud::Billing::V1::ProjectBillingInfo]
582
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
583
+ #
584
+ # @return [::Google::Cloud::Billing::V1::ProjectBillingInfo]
585
+ #
586
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
587
+ def get_project_billing_info request, options = nil
588
+ raise ::ArgumentError, "request must be provided" if request.nil?
589
+
590
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::GetProjectBillingInfoRequest
591
+
592
+ # Converts hash and nil to an options object
593
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
594
+
595
+ # Customize the options with defaults
596
+ call_metadata = @config.rpcs.get_project_billing_info.metadata.to_h
597
+
598
+ # Set x-goog-api-client and x-goog-user-project headers
599
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
600
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
601
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
602
+ transports_version_send: [:rest]
603
+
604
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
605
+
606
+ options.apply_defaults timeout: @config.rpcs.get_project_billing_info.timeout,
607
+ metadata: call_metadata,
608
+ retry_policy: @config.rpcs.get_project_billing_info.retry_policy
609
+
610
+ options.apply_defaults timeout: @config.timeout,
611
+ metadata: @config.metadata,
612
+ retry_policy: @config.retry_policy
613
+
614
+ @cloud_billing_stub.get_project_billing_info request, options do |result, operation|
615
+ yield result, operation if block_given?
616
+ return result
617
+ end
618
+ rescue ::Gapic::Rest::Error => e
619
+ raise ::Google::Cloud::Error.from_error(e)
620
+ end
621
+
622
+ ##
623
+ # Sets or updates the billing account associated with a project. You specify
624
+ # the new billing account by setting the `billing_account_name` in the
625
+ # `ProjectBillingInfo` resource to the resource name of a billing account.
626
+ # Associating a project with an open billing account enables billing on the
627
+ # project and allows charges for resource usage. If the project already had a
628
+ # billing account, this method changes the billing account used for resource
629
+ # usage charges.
630
+ #
631
+ # *Note:* Incurred charges that have not yet been reported in the transaction
632
+ # history of the Google Cloud Console might be billed to the new billing
633
+ # account, even if the charge occurred before the new billing account was
634
+ # assigned to the project.
635
+ #
636
+ # The current authenticated user must have ownership privileges for both the
637
+ # [project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo
638
+ # ) and the [billing
639
+ # account](https://cloud.google.com/billing/docs/how-to/billing-access).
640
+ #
641
+ # You can disable billing on the project by setting the
642
+ # `billing_account_name` field to empty. This action disassociates the
643
+ # current billing account from the project. Any billable activity of your
644
+ # in-use services will stop, and your application could stop functioning as
645
+ # expected. Any unbilled charges to date will be billed to the previously
646
+ # associated account. The current authenticated user must be either an owner
647
+ # of the project or an owner of the billing account for the project.
648
+ #
649
+ # Note that associating a project with a *closed* billing account will have
650
+ # much the same effect as disabling billing on the project: any paid
651
+ # resources used by the project will be shut down. Thus, unless you wish to
652
+ # disable billing, you should always call this method with the name of an
653
+ # *open* billing account.
654
+ #
655
+ # @overload update_project_billing_info(request, options = nil)
656
+ # Pass arguments to `update_project_billing_info` via a request object, either of type
657
+ # {::Google::Cloud::Billing::V1::UpdateProjectBillingInfoRequest} or an equivalent Hash.
658
+ #
659
+ # @param request [::Google::Cloud::Billing::V1::UpdateProjectBillingInfoRequest, ::Hash]
660
+ # A request object representing the call parameters. Required. To specify no
661
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
662
+ # @param options [::Gapic::CallOptions, ::Hash]
663
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
664
+ #
665
+ # @overload update_project_billing_info(name: nil, project_billing_info: nil)
666
+ # Pass arguments to `update_project_billing_info` via keyword arguments. Note that at
667
+ # least one keyword argument is required. To specify no parameters, or to keep all
668
+ # the default parameter values, pass an empty Hash as a request object (see above).
669
+ #
670
+ # @param name [::String]
671
+ # Required. The resource name of the project associated with the billing
672
+ # information that you want to update. For example,
673
+ # `projects/tokyo-rain-123`.
674
+ # @param project_billing_info [::Google::Cloud::Billing::V1::ProjectBillingInfo, ::Hash]
675
+ # The new billing information for the project. Read-only fields are ignored;
676
+ # thus, you can leave empty all fields except `billing_account_name`.
677
+ # @yield [result, operation] Access the result along with the TransportOperation object
678
+ # @yieldparam result [::Google::Cloud::Billing::V1::ProjectBillingInfo]
679
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
680
+ #
681
+ # @return [::Google::Cloud::Billing::V1::ProjectBillingInfo]
682
+ #
683
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
684
+ def update_project_billing_info request, options = nil
685
+ raise ::ArgumentError, "request must be provided" if request.nil?
686
+
687
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::UpdateProjectBillingInfoRequest
688
+
689
+ # Converts hash and nil to an options object
690
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
691
+
692
+ # Customize the options with defaults
693
+ call_metadata = @config.rpcs.update_project_billing_info.metadata.to_h
694
+
695
+ # Set x-goog-api-client and x-goog-user-project headers
696
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
697
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
698
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
699
+ transports_version_send: [:rest]
700
+
701
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
702
+
703
+ options.apply_defaults timeout: @config.rpcs.update_project_billing_info.timeout,
704
+ metadata: call_metadata,
705
+ retry_policy: @config.rpcs.update_project_billing_info.retry_policy
706
+
707
+ options.apply_defaults timeout: @config.timeout,
708
+ metadata: @config.metadata,
709
+ retry_policy: @config.retry_policy
710
+
711
+ @cloud_billing_stub.update_project_billing_info request, options do |result, operation|
712
+ yield result, operation if block_given?
713
+ return result
714
+ end
715
+ rescue ::Gapic::Rest::Error => e
716
+ raise ::Google::Cloud::Error.from_error(e)
717
+ end
718
+
719
+ ##
720
+ # Gets the access control policy for a billing account.
721
+ # The caller must have the `billing.accounts.getIamPolicy` permission on the
722
+ # account, which is often given to billing account
723
+ # [viewers](https://cloud.google.com/billing/docs/how-to/billing-access).
724
+ #
725
+ # @overload get_iam_policy(request, options = nil)
726
+ # Pass arguments to `get_iam_policy` via a request object, either of type
727
+ # {::Google::Iam::V1::GetIamPolicyRequest} or an equivalent Hash.
728
+ #
729
+ # @param request [::Google::Iam::V1::GetIamPolicyRequest, ::Hash]
730
+ # A request object representing the call parameters. Required. To specify no
731
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
732
+ # @param options [::Gapic::CallOptions, ::Hash]
733
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
734
+ #
735
+ # @overload get_iam_policy(resource: nil, options: nil)
736
+ # Pass arguments to `get_iam_policy` via keyword arguments. Note that at
737
+ # least one keyword argument is required. To specify no parameters, or to keep all
738
+ # the default parameter values, pass an empty Hash as a request object (see above).
739
+ #
740
+ # @param resource [::String]
741
+ # REQUIRED: The resource for which the policy is being requested.
742
+ # See the operation documentation for the appropriate value for this field.
743
+ # @param options [::Google::Iam::V1::GetPolicyOptions, ::Hash]
744
+ # OPTIONAL: A `GetPolicyOptions` object for specifying options to
745
+ # `GetIamPolicy`.
746
+ # @yield [result, operation] Access the result along with the TransportOperation object
747
+ # @yieldparam result [::Google::Iam::V1::Policy]
748
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
749
+ #
750
+ # @return [::Google::Iam::V1::Policy]
751
+ #
752
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
753
+ def get_iam_policy request, options = nil
754
+ raise ::ArgumentError, "request must be provided" if request.nil?
755
+
756
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V1::GetIamPolicyRequest
757
+
758
+ # Converts hash and nil to an options object
759
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
760
+
761
+ # Customize the options with defaults
762
+ call_metadata = @config.rpcs.get_iam_policy.metadata.to_h
763
+
764
+ # Set x-goog-api-client and x-goog-user-project headers
765
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
766
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
767
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
768
+ transports_version_send: [:rest]
769
+
770
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
771
+
772
+ options.apply_defaults timeout: @config.rpcs.get_iam_policy.timeout,
773
+ metadata: call_metadata,
774
+ retry_policy: @config.rpcs.get_iam_policy.retry_policy
775
+
776
+ options.apply_defaults timeout: @config.timeout,
777
+ metadata: @config.metadata,
778
+ retry_policy: @config.retry_policy
779
+
780
+ @cloud_billing_stub.get_iam_policy request, options do |result, operation|
781
+ yield result, operation if block_given?
782
+ return result
783
+ end
784
+ rescue ::Gapic::Rest::Error => e
785
+ raise ::Google::Cloud::Error.from_error(e)
786
+ end
787
+
788
+ ##
789
+ # Sets the access control policy for a billing account. Replaces any existing
790
+ # policy.
791
+ # The caller must have the `billing.accounts.setIamPolicy` permission on the
792
+ # account, which is often given to billing account
793
+ # [administrators](https://cloud.google.com/billing/docs/how-to/billing-access).
794
+ #
795
+ # @overload set_iam_policy(request, options = nil)
796
+ # Pass arguments to `set_iam_policy` via a request object, either of type
797
+ # {::Google::Iam::V1::SetIamPolicyRequest} or an equivalent Hash.
798
+ #
799
+ # @param request [::Google::Iam::V1::SetIamPolicyRequest, ::Hash]
800
+ # A request object representing the call parameters. Required. To specify no
801
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
802
+ # @param options [::Gapic::CallOptions, ::Hash]
803
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
804
+ #
805
+ # @overload set_iam_policy(resource: nil, policy: nil, update_mask: nil)
806
+ # Pass arguments to `set_iam_policy` via keyword arguments. Note that at
807
+ # least one keyword argument is required. To specify no parameters, or to keep all
808
+ # the default parameter values, pass an empty Hash as a request object (see above).
809
+ #
810
+ # @param resource [::String]
811
+ # REQUIRED: The resource for which the policy is being specified.
812
+ # See the operation documentation for the appropriate value for this field.
813
+ # @param policy [::Google::Iam::V1::Policy, ::Hash]
814
+ # REQUIRED: The complete policy to be applied to the `resource`. The size of
815
+ # the policy is limited to a few 10s of KB. An empty policy is a
816
+ # valid policy but certain Cloud Platform services (such as Projects)
817
+ # might reject them.
818
+ # @param update_mask [::Google::Protobuf::FieldMask, ::Hash]
819
+ # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
820
+ # the fields in the mask will be modified. If no mask is provided, the
821
+ # following default mask is used:
822
+ #
823
+ # `paths: "bindings, etag"`
824
+ # @yield [result, operation] Access the result along with the TransportOperation object
825
+ # @yieldparam result [::Google::Iam::V1::Policy]
826
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
827
+ #
828
+ # @return [::Google::Iam::V1::Policy]
829
+ #
830
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
831
+ def set_iam_policy request, options = nil
832
+ raise ::ArgumentError, "request must be provided" if request.nil?
833
+
834
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V1::SetIamPolicyRequest
835
+
836
+ # Converts hash and nil to an options object
837
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
838
+
839
+ # Customize the options with defaults
840
+ call_metadata = @config.rpcs.set_iam_policy.metadata.to_h
841
+
842
+ # Set x-goog-api-client and x-goog-user-project headers
843
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
844
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
845
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
846
+ transports_version_send: [:rest]
847
+
848
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
849
+
850
+ options.apply_defaults timeout: @config.rpcs.set_iam_policy.timeout,
851
+ metadata: call_metadata,
852
+ retry_policy: @config.rpcs.set_iam_policy.retry_policy
853
+
854
+ options.apply_defaults timeout: @config.timeout,
855
+ metadata: @config.metadata,
856
+ retry_policy: @config.retry_policy
857
+
858
+ @cloud_billing_stub.set_iam_policy request, options do |result, operation|
859
+ yield result, operation if block_given?
860
+ return result
861
+ end
862
+ rescue ::Gapic::Rest::Error => e
863
+ raise ::Google::Cloud::Error.from_error(e)
864
+ end
865
+
866
+ ##
867
+ # Tests the access control policy for a billing account. This method takes
868
+ # the resource and a set of permissions as input and returns the subset of
869
+ # the input permissions that the caller is allowed for that resource.
870
+ #
871
+ # @overload test_iam_permissions(request, options = nil)
872
+ # Pass arguments to `test_iam_permissions` via a request object, either of type
873
+ # {::Google::Iam::V1::TestIamPermissionsRequest} or an equivalent Hash.
874
+ #
875
+ # @param request [::Google::Iam::V1::TestIamPermissionsRequest, ::Hash]
876
+ # A request object representing the call parameters. Required. To specify no
877
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
878
+ # @param options [::Gapic::CallOptions, ::Hash]
879
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
880
+ #
881
+ # @overload test_iam_permissions(resource: nil, permissions: nil)
882
+ # Pass arguments to `test_iam_permissions` via keyword arguments. Note that at
883
+ # least one keyword argument is required. To specify no parameters, or to keep all
884
+ # the default parameter values, pass an empty Hash as a request object (see above).
885
+ #
886
+ # @param resource [::String]
887
+ # REQUIRED: The resource for which the policy detail is being requested.
888
+ # See the operation documentation for the appropriate value for this field.
889
+ # @param permissions [::Array<::String>]
890
+ # The set of permissions to check for the `resource`. Permissions with
891
+ # wildcards (such as '*' or 'storage.*') are not allowed. For more
892
+ # information see
893
+ # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
894
+ # @yield [result, operation] Access the result along with the TransportOperation object
895
+ # @yieldparam result [::Google::Iam::V1::TestIamPermissionsResponse]
896
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
897
+ #
898
+ # @return [::Google::Iam::V1::TestIamPermissionsResponse]
899
+ #
900
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
901
+ def test_iam_permissions request, options = nil
902
+ raise ::ArgumentError, "request must be provided" if request.nil?
903
+
904
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V1::TestIamPermissionsRequest
905
+
906
+ # Converts hash and nil to an options object
907
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
908
+
909
+ # Customize the options with defaults
910
+ call_metadata = @config.rpcs.test_iam_permissions.metadata.to_h
911
+
912
+ # Set x-goog-api-client and x-goog-user-project headers
913
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
914
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
915
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
916
+ transports_version_send: [:rest]
917
+
918
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
919
+
920
+ options.apply_defaults timeout: @config.rpcs.test_iam_permissions.timeout,
921
+ metadata: call_metadata,
922
+ retry_policy: @config.rpcs.test_iam_permissions.retry_policy
923
+
924
+ options.apply_defaults timeout: @config.timeout,
925
+ metadata: @config.metadata,
926
+ retry_policy: @config.retry_policy
927
+
928
+ @cloud_billing_stub.test_iam_permissions request, options do |result, operation|
929
+ yield result, operation if block_given?
930
+ return result
931
+ end
932
+ rescue ::Gapic::Rest::Error => e
933
+ raise ::Google::Cloud::Error.from_error(e)
934
+ end
935
+
936
+ ##
937
+ # Configuration class for the CloudBilling REST API.
938
+ #
939
+ # This class represents the configuration for CloudBilling REST,
940
+ # providing control over timeouts, retry behavior, logging, transport
941
+ # parameters, and other low-level controls. Certain parameters can also be
942
+ # applied individually to specific RPCs. See
943
+ # {::Google::Cloud::Billing::V1::CloudBilling::Rest::Client::Configuration::Rpcs}
944
+ # for a list of RPCs that can be configured independently.
945
+ #
946
+ # Configuration can be applied globally to all clients, or to a single client
947
+ # on construction.
948
+ #
949
+ # @example
950
+ #
951
+ # # Modify the global config, setting the timeout for
952
+ # # get_billing_account to 20 seconds,
953
+ # # and all remaining timeouts to 10 seconds.
954
+ # ::Google::Cloud::Billing::V1::CloudBilling::Rest::Client.configure do |config|
955
+ # config.timeout = 10.0
956
+ # config.rpcs.get_billing_account.timeout = 20.0
957
+ # end
958
+ #
959
+ # # Apply the above configuration only to a new client.
960
+ # client = ::Google::Cloud::Billing::V1::CloudBilling::Rest::Client.new do |config|
961
+ # config.timeout = 10.0
962
+ # config.rpcs.get_billing_account.timeout = 20.0
963
+ # end
964
+ #
965
+ # @!attribute [rw] endpoint
966
+ # The hostname or hostname:port of the service endpoint.
967
+ # Defaults to `"cloudbilling.googleapis.com"`.
968
+ # @return [::String]
969
+ # @!attribute [rw] credentials
970
+ # Credentials to send with calls. You may provide any of the following types:
971
+ # * (`String`) The path to a service account key file in JSON format
972
+ # * (`Hash`) A service account key as a Hash
973
+ # * (`Google::Auth::Credentials`) A googleauth credentials object
974
+ # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials))
975
+ # * (`Signet::OAuth2::Client`) A signet oauth2 client object
976
+ # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client))
977
+ # * (`nil`) indicating no credentials
978
+ # @return [::Object]
979
+ # @!attribute [rw] scope
980
+ # The OAuth scopes
981
+ # @return [::Array<::String>]
982
+ # @!attribute [rw] lib_name
983
+ # The library name as recorded in instrumentation and logging
984
+ # @return [::String]
985
+ # @!attribute [rw] lib_version
986
+ # The library version as recorded in instrumentation and logging
987
+ # @return [::String]
988
+ # @!attribute [rw] timeout
989
+ # The call timeout in seconds.
990
+ # @return [::Numeric]
991
+ # @!attribute [rw] metadata
992
+ # Additional headers to be sent with the call.
993
+ # @return [::Hash{::Symbol=>::String}]
994
+ # @!attribute [rw] retry_policy
995
+ # The retry policy. The value is a hash with the following keys:
996
+ # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
997
+ # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
998
+ # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
999
+ # * `:retry_codes` (*type:* `Array<String>`) - The error codes that should
1000
+ # trigger a retry.
1001
+ # @return [::Hash]
1002
+ # @!attribute [rw] quota_project
1003
+ # A separate project against which to charge quota.
1004
+ # @return [::String]
1005
+ #
1006
+ class Configuration
1007
+ extend ::Gapic::Config
1008
+
1009
+ DEFAULT_ENDPOINT = "cloudbilling.googleapis.com"
1010
+
1011
+ config_attr :endpoint, DEFAULT_ENDPOINT, ::String
1012
+ config_attr :credentials, nil do |value|
1013
+ allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
1014
+ allowed.any? { |klass| klass === value }
1015
+ end
1016
+ config_attr :scope, nil, ::String, ::Array, nil
1017
+ config_attr :lib_name, nil, ::String, nil
1018
+ config_attr :lib_version, nil, ::String, nil
1019
+ config_attr :timeout, nil, ::Numeric, nil
1020
+ config_attr :metadata, nil, ::Hash, nil
1021
+ config_attr :retry_policy, nil, ::Hash, ::Proc, nil
1022
+ config_attr :quota_project, nil, ::String, nil
1023
+
1024
+ # @private
1025
+ def initialize parent_config = nil
1026
+ @parent_config = parent_config unless parent_config.nil?
1027
+
1028
+ yield self if block_given?
1029
+ end
1030
+
1031
+ ##
1032
+ # Configurations for individual RPCs
1033
+ # @return [Rpcs]
1034
+ #
1035
+ def rpcs
1036
+ @rpcs ||= begin
1037
+ parent_rpcs = nil
1038
+ parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs)
1039
+ Rpcs.new parent_rpcs
1040
+ end
1041
+ end
1042
+
1043
+ ##
1044
+ # Configuration RPC class for the CloudBilling API.
1045
+ #
1046
+ # Includes fields providing the configuration for each RPC in this service.
1047
+ # Each configuration object is of type `Gapic::Config::Method` and includes
1048
+ # the following configuration fields:
1049
+ #
1050
+ # * `timeout` (*type:* `Numeric`) - The call timeout in seconds
1051
+ # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional headers
1052
+ # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields
1053
+ # include the following keys:
1054
+ # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
1055
+ # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
1056
+ # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
1057
+ # * `:retry_codes` (*type:* `Array<String>`) - The error codes that should
1058
+ # trigger a retry.
1059
+ #
1060
+ class Rpcs
1061
+ ##
1062
+ # RPC-specific configuration for `get_billing_account`
1063
+ # @return [::Gapic::Config::Method]
1064
+ #
1065
+ attr_reader :get_billing_account
1066
+ ##
1067
+ # RPC-specific configuration for `list_billing_accounts`
1068
+ # @return [::Gapic::Config::Method]
1069
+ #
1070
+ attr_reader :list_billing_accounts
1071
+ ##
1072
+ # RPC-specific configuration for `update_billing_account`
1073
+ # @return [::Gapic::Config::Method]
1074
+ #
1075
+ attr_reader :update_billing_account
1076
+ ##
1077
+ # RPC-specific configuration for `create_billing_account`
1078
+ # @return [::Gapic::Config::Method]
1079
+ #
1080
+ attr_reader :create_billing_account
1081
+ ##
1082
+ # RPC-specific configuration for `list_project_billing_info`
1083
+ # @return [::Gapic::Config::Method]
1084
+ #
1085
+ attr_reader :list_project_billing_info
1086
+ ##
1087
+ # RPC-specific configuration for `get_project_billing_info`
1088
+ # @return [::Gapic::Config::Method]
1089
+ #
1090
+ attr_reader :get_project_billing_info
1091
+ ##
1092
+ # RPC-specific configuration for `update_project_billing_info`
1093
+ # @return [::Gapic::Config::Method]
1094
+ #
1095
+ attr_reader :update_project_billing_info
1096
+ ##
1097
+ # RPC-specific configuration for `get_iam_policy`
1098
+ # @return [::Gapic::Config::Method]
1099
+ #
1100
+ attr_reader :get_iam_policy
1101
+ ##
1102
+ # RPC-specific configuration for `set_iam_policy`
1103
+ # @return [::Gapic::Config::Method]
1104
+ #
1105
+ attr_reader :set_iam_policy
1106
+ ##
1107
+ # RPC-specific configuration for `test_iam_permissions`
1108
+ # @return [::Gapic::Config::Method]
1109
+ #
1110
+ attr_reader :test_iam_permissions
1111
+
1112
+ # @private
1113
+ def initialize parent_rpcs = nil
1114
+ get_billing_account_config = parent_rpcs.get_billing_account if parent_rpcs.respond_to? :get_billing_account
1115
+ @get_billing_account = ::Gapic::Config::Method.new get_billing_account_config
1116
+ list_billing_accounts_config = parent_rpcs.list_billing_accounts if parent_rpcs.respond_to? :list_billing_accounts
1117
+ @list_billing_accounts = ::Gapic::Config::Method.new list_billing_accounts_config
1118
+ update_billing_account_config = parent_rpcs.update_billing_account if parent_rpcs.respond_to? :update_billing_account
1119
+ @update_billing_account = ::Gapic::Config::Method.new update_billing_account_config
1120
+ create_billing_account_config = parent_rpcs.create_billing_account if parent_rpcs.respond_to? :create_billing_account
1121
+ @create_billing_account = ::Gapic::Config::Method.new create_billing_account_config
1122
+ list_project_billing_info_config = parent_rpcs.list_project_billing_info if parent_rpcs.respond_to? :list_project_billing_info
1123
+ @list_project_billing_info = ::Gapic::Config::Method.new list_project_billing_info_config
1124
+ get_project_billing_info_config = parent_rpcs.get_project_billing_info if parent_rpcs.respond_to? :get_project_billing_info
1125
+ @get_project_billing_info = ::Gapic::Config::Method.new get_project_billing_info_config
1126
+ update_project_billing_info_config = parent_rpcs.update_project_billing_info if parent_rpcs.respond_to? :update_project_billing_info
1127
+ @update_project_billing_info = ::Gapic::Config::Method.new update_project_billing_info_config
1128
+ get_iam_policy_config = parent_rpcs.get_iam_policy if parent_rpcs.respond_to? :get_iam_policy
1129
+ @get_iam_policy = ::Gapic::Config::Method.new get_iam_policy_config
1130
+ set_iam_policy_config = parent_rpcs.set_iam_policy if parent_rpcs.respond_to? :set_iam_policy
1131
+ @set_iam_policy = ::Gapic::Config::Method.new set_iam_policy_config
1132
+ test_iam_permissions_config = parent_rpcs.test_iam_permissions if parent_rpcs.respond_to? :test_iam_permissions
1133
+ @test_iam_permissions = ::Gapic::Config::Method.new test_iam_permissions_config
1134
+
1135
+ yield self if block_given?
1136
+ end
1137
+ end
1138
+ end
1139
+ end
1140
+ end
1141
+ end
1142
+ end
1143
+ end
1144
+ end
1145
+ end