google-cloud-billing-v1 0.15.1 → 0.17.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.
@@ -33,6 +33,9 @@ module Google
33
33
  # projects.
34
34
  #
35
35
  class Client
36
+ # @private
37
+ DEFAULT_ENDPOINT_TEMPLATE = "cloudbilling.$UNIVERSE_DOMAIN$"
38
+
36
39
  include Paths
37
40
 
38
41
  # @private
@@ -140,6 +143,15 @@ module Google
140
143
  @config
141
144
  end
142
145
 
146
+ ##
147
+ # The effective universe domain
148
+ #
149
+ # @return [String]
150
+ #
151
+ def universe_domain
152
+ @cloud_billing_stub.universe_domain
153
+ end
154
+
143
155
  ##
144
156
  # Create a new CloudBilling REST client object.
145
157
  #
@@ -167,8 +179,9 @@ module Google
167
179
  credentials = @config.credentials
168
180
  # Use self-signed JWT if the endpoint is unchanged from default,
169
181
  # 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?("-")
182
+ enable_self_signed_jwt = @config.endpoint.nil? ||
183
+ (@config.endpoint == Configuration::DEFAULT_ENDPOINT &&
184
+ !@config.endpoint.split(".").first.include?("-"))
172
185
  credentials ||= Credentials.default scope: @config.scope,
173
186
  enable_self_signed_jwt: enable_self_signed_jwt
174
187
  if credentials.is_a?(::String) || credentials.is_a?(::Hash)
@@ -178,7 +191,12 @@ module Google
178
191
  @quota_project_id = @config.quota_project
179
192
  @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
180
193
 
181
- @cloud_billing_stub = ::Google::Cloud::Billing::V1::CloudBilling::Rest::ServiceStub.new endpoint: @config.endpoint, credentials: credentials
194
+ @cloud_billing_stub = ::Google::Cloud::Billing::V1::CloudBilling::Rest::ServiceStub.new(
195
+ endpoint: @config.endpoint,
196
+ endpoint_template: DEFAULT_ENDPOINT_TEMPLATE,
197
+ universe_domain: @config.universe_domain,
198
+ credentials: credentials
199
+ )
182
200
  end
183
201
 
184
202
  # Service calls
@@ -279,7 +297,7 @@ module Google
279
297
  # @param options [::Gapic::CallOptions, ::Hash]
280
298
  # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
281
299
  #
282
- # @overload list_billing_accounts(page_size: nil, page_token: nil, filter: nil)
300
+ # @overload list_billing_accounts(page_size: nil, page_token: nil, filter: nil, parent: nil)
283
301
  # Pass arguments to `list_billing_accounts` via keyword arguments. Note that at
284
302
  # least one keyword argument is required. To specify no parameters, or to keep all
285
303
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -296,8 +314,16 @@ module Google
296
314
  # This only supports filtering for
297
315
  # [subaccounts](https://cloud.google.com/billing/docs/concepts) under a
298
316
  # single provided parent billing account.
299
- # (e.g. "master_billing_account=billingAccounts/012345-678901-ABCDEF").
317
+ # (for example,
318
+ # `master_billing_account=billingAccounts/012345-678901-ABCDEF`).
300
319
  # Boolean algebra and other fields are not currently supported.
320
+ # @param parent [::String]
321
+ # Optional. The parent resource to list billing accounts from.
322
+ # Format:
323
+ # - `organizations/{organization_id}`, for example,
324
+ # `organizations/12345678`
325
+ # - `billingAccounts/{billing_account_id}`, for example,
326
+ # `billingAccounts/012345-567890-ABCDEF`
301
327
  # @yield [result, operation] Access the result along with the TransportOperation object
302
328
  # @yieldparam result [::Gapic::Rest::PagedEnumerable<::Google::Cloud::Billing::V1::BillingAccount>]
303
329
  # @yieldparam operation [::Gapic::Rest::TransportOperation]
@@ -477,7 +503,7 @@ module Google
477
503
  # @param options [::Gapic::CallOptions, ::Hash]
478
504
  # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
479
505
  #
480
- # @overload create_billing_account(billing_account: nil)
506
+ # @overload create_billing_account(billing_account: nil, parent: nil)
481
507
  # Pass arguments to `create_billing_account` via keyword arguments. Note that at
482
508
  # least one keyword argument is required. To specify no parameters, or to keep all
483
509
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -487,6 +513,13 @@ module Google
487
513
  # Currently CreateBillingAccount only supports subaccount creation, so
488
514
  # any created billing accounts must be under a provided parent billing
489
515
  # account.
516
+ # @param parent [::String]
517
+ # Optional. The parent to create a billing account from.
518
+ # Format:
519
+ # - `organizations/{organization_id}`, for example,
520
+ # `organizations/12345678`
521
+ # - `billingAccounts/{billing_account_id}`, for example,
522
+ # `billingAccounts/012345-567890-ABCDEF`
490
523
  # @yield [result, operation] Access the result along with the TransportOperation object
491
524
  # @yieldparam result [::Google::Cloud::Billing::V1::BillingAccount]
492
525
  # @yieldparam operation [::Gapic::Rest::TransportOperation]
@@ -737,7 +770,8 @@ module Google
737
770
  # account, even if the charge occurred before the new billing account was
738
771
  # assigned to the project.
739
772
  #
740
- # The current authenticated user must have ownership privileges for both the
773
+ # The current authenticated user must have ownership privileges for both
774
+ # the
741
775
  # [project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo
742
776
  # ) and the [billing
743
777
  # account](https://cloud.google.com/billing/docs/how-to/billing-access).
@@ -1102,6 +1136,91 @@ module Google
1102
1136
  raise ::Google::Cloud::Error.from_error(e)
1103
1137
  end
1104
1138
 
1139
+ ##
1140
+ # Changes which parent organization a billing account belongs to.
1141
+ #
1142
+ # @overload move_billing_account(request, options = nil)
1143
+ # Pass arguments to `move_billing_account` via a request object, either of type
1144
+ # {::Google::Cloud::Billing::V1::MoveBillingAccountRequest} or an equivalent Hash.
1145
+ #
1146
+ # @param request [::Google::Cloud::Billing::V1::MoveBillingAccountRequest, ::Hash]
1147
+ # A request object representing the call parameters. Required. To specify no
1148
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
1149
+ # @param options [::Gapic::CallOptions, ::Hash]
1150
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
1151
+ #
1152
+ # @overload move_billing_account(name: nil, destination_parent: nil)
1153
+ # Pass arguments to `move_billing_account` via keyword arguments. Note that at
1154
+ # least one keyword argument is required. To specify no parameters, or to keep all
1155
+ # the default parameter values, pass an empty Hash as a request object (see above).
1156
+ #
1157
+ # @param name [::String]
1158
+ # Required. The resource name of the billing account to move.
1159
+ # Must be of the form `billingAccounts/{billing_account_id}`.
1160
+ # The specified billing account cannot be a subaccount, since a subaccount
1161
+ # always belongs to the same organization as its parent account.
1162
+ # @param destination_parent [::String]
1163
+ # Required. The resource name of the Organization to reparent
1164
+ # the billing account under.
1165
+ # Must be of the form `organizations/{organization_id}`.
1166
+ # @yield [result, operation] Access the result along with the TransportOperation object
1167
+ # @yieldparam result [::Google::Cloud::Billing::V1::BillingAccount]
1168
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
1169
+ #
1170
+ # @return [::Google::Cloud::Billing::V1::BillingAccount]
1171
+ #
1172
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
1173
+ #
1174
+ # @example Basic example
1175
+ # require "google/cloud/billing/v1"
1176
+ #
1177
+ # # Create a client object. The client can be reused for multiple calls.
1178
+ # client = Google::Cloud::Billing::V1::CloudBilling::Rest::Client.new
1179
+ #
1180
+ # # Create a request. To set request fields, pass in keyword arguments.
1181
+ # request = Google::Cloud::Billing::V1::MoveBillingAccountRequest.new
1182
+ #
1183
+ # # Call the move_billing_account method.
1184
+ # result = client.move_billing_account request
1185
+ #
1186
+ # # The returned object is of type Google::Cloud::Billing::V1::BillingAccount.
1187
+ # p result
1188
+ #
1189
+ def move_billing_account request, options = nil
1190
+ raise ::ArgumentError, "request must be provided" if request.nil?
1191
+
1192
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Billing::V1::MoveBillingAccountRequest
1193
+
1194
+ # Converts hash and nil to an options object
1195
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
1196
+
1197
+ # Customize the options with defaults
1198
+ call_metadata = @config.rpcs.move_billing_account.metadata.to_h
1199
+
1200
+ # Set x-goog-api-client and x-goog-user-project headers
1201
+ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
1202
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
1203
+ gapic_version: ::Google::Cloud::Billing::V1::VERSION,
1204
+ transports_version_send: [:rest]
1205
+
1206
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
1207
+
1208
+ options.apply_defaults timeout: @config.rpcs.move_billing_account.timeout,
1209
+ metadata: call_metadata,
1210
+ retry_policy: @config.rpcs.move_billing_account.retry_policy
1211
+
1212
+ options.apply_defaults timeout: @config.timeout,
1213
+ metadata: @config.metadata,
1214
+ retry_policy: @config.retry_policy
1215
+
1216
+ @cloud_billing_stub.move_billing_account request, options do |result, operation|
1217
+ yield result, operation if block_given?
1218
+ return result
1219
+ end
1220
+ rescue ::Gapic::Rest::Error => e
1221
+ raise ::Google::Cloud::Error.from_error(e)
1222
+ end
1223
+
1105
1224
  ##
1106
1225
  # Configuration class for the CloudBilling REST API.
1107
1226
  #
@@ -1132,9 +1251,9 @@ module Google
1132
1251
  # end
1133
1252
  #
1134
1253
  # @!attribute [rw] endpoint
1135
- # The hostname or hostname:port of the service endpoint.
1136
- # Defaults to `"cloudbilling.googleapis.com"`.
1137
- # @return [::String]
1254
+ # A custom service endpoint, as a hostname or hostname:port. The default is
1255
+ # nil, indicating to use the default endpoint in the current universe domain.
1256
+ # @return [::String,nil]
1138
1257
  # @!attribute [rw] credentials
1139
1258
  # Credentials to send with calls. You may provide any of the following types:
1140
1259
  # * (`String`) The path to a service account key file in JSON format
@@ -1171,13 +1290,20 @@ module Google
1171
1290
  # @!attribute [rw] quota_project
1172
1291
  # A separate project against which to charge quota.
1173
1292
  # @return [::String]
1293
+ # @!attribute [rw] universe_domain
1294
+ # The universe domain within which to make requests. This determines the
1295
+ # default endpoint URL. The default value of nil uses the environment
1296
+ # universe (usually the default "googleapis.com" universe).
1297
+ # @return [::String,nil]
1174
1298
  #
1175
1299
  class Configuration
1176
1300
  extend ::Gapic::Config
1177
1301
 
1302
+ # @private
1303
+ # The endpoint specific to the default "googleapis.com" universe. Deprecated.
1178
1304
  DEFAULT_ENDPOINT = "cloudbilling.googleapis.com"
1179
1305
 
1180
- config_attr :endpoint, DEFAULT_ENDPOINT, ::String
1306
+ config_attr :endpoint, nil, ::String, nil
1181
1307
  config_attr :credentials, nil do |value|
1182
1308
  allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
1183
1309
  allowed.any? { |klass| klass === value }
@@ -1189,6 +1315,7 @@ module Google
1189
1315
  config_attr :metadata, nil, ::Hash, nil
1190
1316
  config_attr :retry_policy, nil, ::Hash, ::Proc, nil
1191
1317
  config_attr :quota_project, nil, ::String, nil
1318
+ config_attr :universe_domain, nil, ::String, nil
1192
1319
 
1193
1320
  # @private
1194
1321
  def initialize parent_config = nil
@@ -1277,6 +1404,11 @@ module Google
1277
1404
  # @return [::Gapic::Config::Method]
1278
1405
  #
1279
1406
  attr_reader :test_iam_permissions
1407
+ ##
1408
+ # RPC-specific configuration for `move_billing_account`
1409
+ # @return [::Gapic::Config::Method]
1410
+ #
1411
+ attr_reader :move_billing_account
1280
1412
 
1281
1413
  # @private
1282
1414
  def initialize parent_rpcs = nil
@@ -1300,6 +1432,8 @@ module Google
1300
1432
  @set_iam_policy = ::Gapic::Config::Method.new set_iam_policy_config
1301
1433
  test_iam_permissions_config = parent_rpcs.test_iam_permissions if parent_rpcs.respond_to? :test_iam_permissions
1302
1434
  @test_iam_permissions = ::Gapic::Config::Method.new test_iam_permissions_config
1435
+ move_billing_account_config = parent_rpcs.move_billing_account if parent_rpcs.respond_to? :move_billing_account
1436
+ @move_billing_account = ::Gapic::Config::Method.new move_billing_account_config
1303
1437
 
1304
1438
  yield self if block_given?
1305
1439
  end
@@ -30,16 +30,28 @@ module Google
30
30
  # including transcoding, making the REST call, and deserialing the response.
31
31
  #
32
32
  class ServiceStub
33
- def initialize endpoint:, credentials:
33
+ def initialize endpoint:, endpoint_template:, universe_domain:, credentials:
34
34
  # These require statements are intentionally placed here to initialize
35
35
  # the REST modules only when it's required.
36
36
  require "gapic/rest"
37
37
 
38
- @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, credentials: credentials,
38
+ @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint,
39
+ endpoint_template: endpoint_template,
40
+ universe_domain: universe_domain,
41
+ credentials: credentials,
39
42
  numeric_enums: true,
40
43
  raise_faraday_errors: false
41
44
  end
42
45
 
46
+ ##
47
+ # The effective universe domain
48
+ #
49
+ # @return [String]
50
+ #
51
+ def universe_domain
52
+ @client_stub.universe_domain
53
+ end
54
+
43
55
  ##
44
56
  # Baseline implementation for the get_billing_account REST call
45
57
  #
@@ -420,6 +432,44 @@ module Google
420
432
  result
421
433
  end
422
434
 
435
+ ##
436
+ # Baseline implementation for the move_billing_account REST call
437
+ #
438
+ # @param request_pb [::Google::Cloud::Billing::V1::MoveBillingAccountRequest]
439
+ # A request object representing the call parameters. Required.
440
+ # @param options [::Gapic::CallOptions]
441
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
442
+ #
443
+ # @yield [result, operation] Access the result along with the TransportOperation object
444
+ # @yieldparam result [::Google::Cloud::Billing::V1::BillingAccount]
445
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
446
+ #
447
+ # @return [::Google::Cloud::Billing::V1::BillingAccount]
448
+ # A result object deserialized from the server's reply
449
+ def move_billing_account request_pb, options = nil
450
+ raise ::ArgumentError, "request must be provided" if request_pb.nil?
451
+
452
+ verb, uri, query_string_params, body = ServiceStub.transcode_move_billing_account_request request_pb
453
+ query_string_params = if query_string_params.any?
454
+ query_string_params.to_h { |p| p.split "=", 2 }
455
+ else
456
+ {}
457
+ end
458
+
459
+ response = @client_stub.make_http_request(
460
+ verb,
461
+ uri: uri,
462
+ body: body || "",
463
+ params: query_string_params,
464
+ options: options
465
+ )
466
+ operation = ::Gapic::Rest::TransportOperation.new response
467
+ result = ::Google::Cloud::Billing::V1::BillingAccount.decode_json response.body, ignore_unknown_fields: true
468
+
469
+ yield result, operation if block_given?
470
+ result
471
+ end
472
+
423
473
  ##
424
474
  # @private
425
475
  #
@@ -457,6 +507,20 @@ module Google
457
507
  uri_template: "/v1/billingAccounts",
458
508
  matches: []
459
509
  )
510
+ .with_bindings(
511
+ uri_method: :get,
512
+ uri_template: "/v1/{parent}/billingAccounts",
513
+ matches: [
514
+ ["parent", %r{^organizations/[^/]+/?$}, false]
515
+ ]
516
+ )
517
+ .with_bindings(
518
+ uri_method: :get,
519
+ uri_template: "/v1/{parent}/subAccounts",
520
+ matches: [
521
+ ["parent", %r{^billingAccounts/[^/]+/?$}, false]
522
+ ]
523
+ )
460
524
  transcoder.transcode request_pb
461
525
  end
462
526
 
@@ -499,6 +563,22 @@ module Google
499
563
  body: "billing_account",
500
564
  matches: []
501
565
  )
566
+ .with_bindings(
567
+ uri_method: :post,
568
+ uri_template: "/v1/{parent}/billingAccounts",
569
+ body: "billing_account",
570
+ matches: [
571
+ ["parent", %r{^organizations/[^/]+/?$}, false]
572
+ ]
573
+ )
574
+ .with_bindings(
575
+ uri_method: :post,
576
+ uri_template: "/v1/{parent}/subAccounts",
577
+ body: "billing_account",
578
+ matches: [
579
+ ["parent", %r{^billingAccounts/[^/]+/?$}, false]
580
+ ]
581
+ )
502
582
  transcoder.transcode request_pb
503
583
  end
504
584
 
@@ -630,6 +710,36 @@ module Google
630
710
  )
631
711
  transcoder.transcode request_pb
632
712
  end
713
+
714
+ ##
715
+ # @private
716
+ #
717
+ # GRPC transcoding helper method for the move_billing_account REST call
718
+ #
719
+ # @param request_pb [::Google::Cloud::Billing::V1::MoveBillingAccountRequest]
720
+ # A request object representing the call parameters. Required.
721
+ # @return [Array(String, [String, nil], Hash{String => String})]
722
+ # Uri, Body, Query string parameters
723
+ def self.transcode_move_billing_account_request request_pb
724
+ transcoder = Gapic::Rest::GrpcTranscoder.new
725
+ .with_bindings(
726
+ uri_method: :post,
727
+ uri_template: "/v1/{name}:move",
728
+ body: "*",
729
+ matches: [
730
+ ["name", %r{^billingAccounts/[^/]+/?$}, false]
731
+ ]
732
+ )
733
+ .with_bindings(
734
+ uri_method: :get,
735
+ uri_template: "/v1/{destination_parent}/{name}:move",
736
+ matches: [
737
+ ["destination_parent", %r{^organizations/[^/]+/?$}, false],
738
+ ["name", %r{^billingAccounts/[^/]+/?$}, false]
739
+ ]
740
+ )
741
+ transcoder.transcode request_pb
742
+ end
633
743
  end
634
744
  end
635
745
  end
@@ -13,7 +13,7 @@ require 'google/iam/v1/policy_pb'
13
13
  require 'google/protobuf/field_mask_pb'
14
14
 
15
15
 
16
- descriptor_data = "\n+google/cloud/billing/v1/cloud_billing.proto\x12\x17google.cloud.billing.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/iam/v1/iam_policy.proto\x1a\x1agoogle/iam/v1/policy.proto\x1a google/protobuf/field_mask.proto\"\x9b\x01\n\x0e\x42illingAccount\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x03\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\x12\x11\n\x04open\x18\x02 \x01(\x08\x42\x03\xe0\x41\x03\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\x1e\n\x16master_billing_account\x18\x04 \x01(\t\"\xd1\x01\n\x12ProjectBillingInfo\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12\x17\n\nproject_id\x18\x02 \x01(\tB\x03\xe0\x41\x03\x12\x1c\n\x14\x62illing_account_name\x18\x03 \x01(\t\x12\x1c\n\x0f\x62illing_enabled\x18\x04 \x01(\x08\x42\x03\xe0\x41\x03:S\xea\x41P\n.cloudbilling.googleapis.com/ProjectBillingInfo\x12\x1eprojects/{project}/billingInfo\"\\\n\x18GetBillingAccountRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\"S\n\x1aListBillingAccountsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\"y\n\x1bListBillingAccountsResponse\x12\x41\n\x10\x62illing_accounts\x18\x01 \x03(\x0b\x32\'.google.cloud.billing.v1.BillingAccount\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"d\n\x1b\x43reateBillingAccountRequest\x12\x45\n\x0f\x62illing_account\x18\x01 \x01(\x0b\x32\'.google.cloud.billing.v1.BillingAccountB\x03\xe0\x41\x02\"\xcf\x01\n\x1bUpdateBillingAccountRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\x12=\n\x07\x61\x63\x63ount\x18\x02 \x01(\x0b\x32\'.google.cloud.billing.v1.BillingAccountB\x03\xe0\x41\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"\x88\x01\n\x1dListProjectBillingInfoRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"\x84\x01\n\x1eListProjectBillingInfoResponse\x12I\n\x14project_billing_info\x18\x01 \x03(\x0b\x32+.google.cloud.billing.v1.ProjectBillingInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"a\n\x1cGetProjectBillingInfoRequest\x12\x41\n\x04name\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\"\x7f\n\x1fUpdateProjectBillingInfoRequest\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12I\n\x14project_billing_info\x18\x02 \x01(\x0b\x32+.google.cloud.billing.v1.ProjectBillingInfo2\xb2\x0f\n\x0c\x43loudBilling\x12\x9c\x01\n\x11GetBillingAccount\x12\x31.google.cloud.billing.v1.GetBillingAccountRequest\x1a\'.google.cloud.billing.v1.BillingAccount\"+\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{name=billingAccounts/*}\xda\x41\x04name\x12\xa0\x01\n\x13ListBillingAccounts\x12\x33.google.cloud.billing.v1.ListBillingAccountsRequest\x1a\x34.google.cloud.billing.v1.ListBillingAccountsResponse\"\x1e\x82\xd3\xe4\x93\x02\x15\x12\x13/v1/billingAccounts\xda\x41\x00\x12\xb3\x01\n\x14UpdateBillingAccount\x12\x34.google.cloud.billing.v1.UpdateBillingAccountRequest\x1a\'.google.cloud.billing.v1.BillingAccount\"<\x82\xd3\xe4\x93\x02\'2\x1c/v1/{name=billingAccounts/*}:\x07\x61\x63\x63ount\xda\x41\x0cname,account\x12\xb5\x01\n\x14\x43reateBillingAccount\x12\x34.google.cloud.billing.v1.CreateBillingAccountRequest\x1a\'.google.cloud.billing.v1.BillingAccount\">\x82\xd3\xe4\x93\x02&\"\x13/v1/billingAccounts:\x0f\x62illing_account\xda\x41\x0f\x62illing_account\x12\xbf\x01\n\x16ListProjectBillingInfo\x12\x36.google.cloud.billing.v1.ListProjectBillingInfoRequest\x1a\x37.google.cloud.billing.v1.ListProjectBillingInfoResponse\"4\x82\xd3\xe4\x93\x02\'\x12%/v1/{name=billingAccounts/*}/projects\xda\x41\x04name\x12\xad\x01\n\x15GetProjectBillingInfo\x12\x35.google.cloud.billing.v1.GetProjectBillingInfoRequest\x1a+.google.cloud.billing.v1.ProjectBillingInfo\"0\x82\xd3\xe4\x93\x02#\x12!/v1/{name=projects/*}/billingInfo\xda\x41\x04name\x12\xde\x01\n\x18UpdateProjectBillingInfo\x12\x38.google.cloud.billing.v1.UpdateProjectBillingInfoRequest\x1a+.google.cloud.billing.v1.ProjectBillingInfo\"[\x82\xd3\xe4\x93\x02\x39\x1a!/v1/{name=projects/*}/billingInfo:\x14project_billing_info\xda\x41\x19name,project_billing_info\x12\x8b\x01\n\x0cGetIamPolicy\x12\".google.iam.v1.GetIamPolicyRequest\x1a\x15.google.iam.v1.Policy\"@\x82\xd3\xe4\x93\x02/\x12-/v1/{resource=billingAccounts/*}:getIamPolicy\xda\x41\x08resource\x12\x95\x01\n\x0cSetIamPolicy\x12\".google.iam.v1.SetIamPolicyRequest\x1a\x15.google.iam.v1.Policy\"J\x82\xd3\xe4\x93\x02\x32\"-/v1/{resource=billingAccounts/*}:setIamPolicy:\x01*\xda\x41\x0fresource,policy\x12\xc0\x01\n\x12TestIamPermissions\x12(.google.iam.v1.TestIamPermissionsRequest\x1a).google.iam.v1.TestIamPermissionsResponse\"U\x82\xd3\xe4\x93\x02\x38\"3/v1/{resource=billingAccounts/*}:testIamPermissions:\x01*\xda\x41\x14resource,permissions\x1a\xb5\x01\xca\x41\x1b\x63loudbilling.googleapis.com\xd2\x41\x93\x01https://www.googleapis.com/auth/cloud-billing,https://www.googleapis.com/auth/cloud-billing.readonly,https://www.googleapis.com/auth/cloud-platformBi\n\x1b\x63om.google.cloud.billing.v1B\x11\x43loudBillingProtoP\x01Z5cloud.google.com/go/billing/apiv1/billingpb;billingpbb\x06proto3"
16
+ descriptor_data = "\n+google/cloud/billing/v1/cloud_billing.proto\x12\x17google.cloud.billing.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/iam/v1/iam_policy.proto\x1a\x1agoogle/iam/v1/policy.proto\x1a google/protobuf/field_mask.proto\"\xe7\x02\n\x0e\x42illingAccount\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x03\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\x12\x11\n\x04open\x18\x02 \x01(\x08\x42\x03\xe0\x41\x03\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\x1e\n\x16master_billing_account\x18\x04 \x01(\t\x12\x13\n\x06parent\x18\x06 \x01(\tB\x03\xe0\x41\x03:\xb4\x01\xea\x41\xb0\x01\n*cloudbilling.googleapis.com/BillingAccount\x12!billingAccounts/{billing_account}\x12>organizations/{organization}/billingAccounts/{billing_account}*\x0f\x62illingAccounts2\x0e\x62illingAccount\"\xd1\x01\n\x12ProjectBillingInfo\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12\x17\n\nproject_id\x18\x02 \x01(\tB\x03\xe0\x41\x03\x12\x1c\n\x14\x62illing_account_name\x18\x03 \x01(\t\x12\x1c\n\x0f\x62illing_enabled\x18\x04 \x01(\x08\x42\x03\xe0\x41\x03:S\xea\x41P\n.cloudbilling.googleapis.com/ProjectBillingInfo\x12\x1eprojects/{project}/billingInfo\"\\\n\x18GetBillingAccountRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\"h\n\x1aListBillingAccountsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x13\n\x06parent\x18\x04 \x01(\tB\x03\xe0\x41\x01\"y\n\x1bListBillingAccountsResponse\x12\x41\n\x10\x62illing_accounts\x18\x01 \x03(\x0b\x32\'.google.cloud.billing.v1.BillingAccount\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"y\n\x1b\x43reateBillingAccountRequest\x12\x45\n\x0f\x62illing_account\x18\x01 \x01(\x0b\x32\'.google.cloud.billing.v1.BillingAccountB\x03\xe0\x41\x02\x12\x13\n\x06parent\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\xcf\x01\n\x1bUpdateBillingAccountRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\x12=\n\x07\x61\x63\x63ount\x18\x02 \x01(\x0b\x32\'.google.cloud.billing.v1.BillingAccountB\x03\xe0\x41\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"\x88\x01\n\x1dListProjectBillingInfoRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"\x84\x01\n\x1eListProjectBillingInfoResponse\x12I\n\x14project_billing_info\x18\x01 \x03(\x0b\x32+.google.cloud.billing.v1.ProjectBillingInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"a\n\x1cGetProjectBillingInfoRequest\x12\x41\n\x04name\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\"\x7f\n\x1fUpdateProjectBillingInfoRequest\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12I\n\x14project_billing_info\x18\x02 \x01(\x0b\x32+.google.cloud.billing.v1.ProjectBillingInfo\"\xb3\x01\n\x19MoveBillingAccountRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*cloudbilling.googleapis.com/BillingAccount\x12T\n\x12\x64\x65stination_parent\x18\x02 \x01(\tB8\xe0\x41\x02\xfa\x41\x32\n0cloudresourcemanager.googleapis.com/Organization2\xa1\x13\n\x0c\x43loudBilling\x12\x9c\x01\n\x11GetBillingAccount\x12\x31.google.cloud.billing.v1.GetBillingAccountRequest\x1a\'.google.cloud.billing.v1.BillingAccount\"+\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{name=billingAccounts/*}\xda\x41\x04name\x12\x88\x02\n\x13ListBillingAccounts\x12\x33.google.cloud.billing.v1.ListBillingAccountsRequest\x1a\x34.google.cloud.billing.v1.ListBillingAccountsResponse\"\x85\x01\x82\xd3\xe4\x93\x02s\x12\x13/v1/billingAccountsZ.\x12,/v1/{parent=organizations/*}/billingAccountsZ,\x12*/v1/{parent=billingAccounts/*}/subAccounts\xda\x41\x00\xda\x41\x06parent\x12\xb3\x01\n\x14UpdateBillingAccount\x12\x34.google.cloud.billing.v1.UpdateBillingAccountRequest\x1a\'.google.cloud.billing.v1.BillingAccount\"<\x82\xd3\xe4\x93\x02\'2\x1c/v1/{name=billingAccounts/*}:\x07\x61\x63\x63ount\xda\x41\x0cname,account\x12\xd0\x02\n\x14\x43reateBillingAccount\x12\x34.google.cloud.billing.v1.CreateBillingAccountRequest\x1a\'.google.cloud.billing.v1.BillingAccount\"\xd8\x01\x82\xd3\xe4\x93\x02\xa6\x01\"\x13/v1/billingAccounts:\x0f\x62illing_accountZ?\",/v1/{parent=organizations/*}/billingAccounts:\x0f\x62illing_accountZ=\"*/v1/{parent=billingAccounts/*}/subAccounts:\x0f\x62illing_account\xda\x41\x0f\x62illing_account\xda\x41\x16\x62illing_account,parent\x12\xbf\x01\n\x16ListProjectBillingInfo\x12\x36.google.cloud.billing.v1.ListProjectBillingInfoRequest\x1a\x37.google.cloud.billing.v1.ListProjectBillingInfoResponse\"4\x82\xd3\xe4\x93\x02\'\x12%/v1/{name=billingAccounts/*}/projects\xda\x41\x04name\x12\xad\x01\n\x15GetProjectBillingInfo\x12\x35.google.cloud.billing.v1.GetProjectBillingInfoRequest\x1a+.google.cloud.billing.v1.ProjectBillingInfo\"0\x82\xd3\xe4\x93\x02#\x12!/v1/{name=projects/*}/billingInfo\xda\x41\x04name\x12\xde\x01\n\x18UpdateProjectBillingInfo\x12\x38.google.cloud.billing.v1.UpdateProjectBillingInfoRequest\x1a+.google.cloud.billing.v1.ProjectBillingInfo\"[\x82\xd3\xe4\x93\x02\x39\x1a!/v1/{name=projects/*}/billingInfo:\x14project_billing_info\xda\x41\x19name,project_billing_info\x12\x8b\x01\n\x0cGetIamPolicy\x12\".google.iam.v1.GetIamPolicyRequest\x1a\x15.google.iam.v1.Policy\"@\x82\xd3\xe4\x93\x02/\x12-/v1/{resource=billingAccounts/*}:getIamPolicy\xda\x41\x08resource\x12\x95\x01\n\x0cSetIamPolicy\x12\".google.iam.v1.SetIamPolicyRequest\x1a\x15.google.iam.v1.Policy\"J\x82\xd3\xe4\x93\x02\x32\"-/v1/{resource=billingAccounts/*}:setIamPolicy:\x01*\xda\x41\x0fresource,policy\x12\xc0\x01\n\x12TestIamPermissions\x12(.google.iam.v1.TestIamPermissionsRequest\x1a).google.iam.v1.TestIamPermissionsResponse\"U\x82\xd3\xe4\x93\x02\x38\"3/v1/{resource=billingAccounts/*}:testIamPermissions:\x01*\xda\x41\x14resource,permissions\x12\xe9\x01\n\x12MoveBillingAccount\x12\x32.google.cloud.billing.v1.MoveBillingAccountRequest\x1a\'.google.cloud.billing.v1.BillingAccount\"v\x82\xd3\xe4\x93\x02p\"!/v1/{name=billingAccounts/*}:move:\x01*ZH\x12\x46/v1/{destination_parent=organizations/*}/{name=billingAccounts/*}:move\x1a\xb5\x01\xca\x41\x1b\x63loudbilling.googleapis.com\xd2\x41\x93\x01https://www.googleapis.com/auth/cloud-billing,https://www.googleapis.com/auth/cloud-billing.readonly,https://www.googleapis.com/auth/cloud-platformB\x80\x02\n\x1b\x63om.google.cloud.billing.v1B\x11\x43loudBillingProtoP\x01Z5cloud.google.com/go/billing/apiv1/billingpb;billingpb\xea\x41\x41\n+cloudresourcemanager.googleapis.com/Project\x12\x12projects/{project}\xea\x41P\n0cloudresourcemanager.googleapis.com/Organization\x12\x1corganizations/{organization}b\x06proto3"
17
17
 
18
18
  pool = Google::Protobuf::DescriptorPool.generated_pool
19
19
 
@@ -55,6 +55,7 @@ module Google
55
55
  ListProjectBillingInfoResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.billing.v1.ListProjectBillingInfoResponse").msgclass
56
56
  GetProjectBillingInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.billing.v1.GetProjectBillingInfoRequest").msgclass
57
57
  UpdateProjectBillingInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.billing.v1.UpdateProjectBillingInfoRequest").msgclass
58
+ MoveBillingAccountRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.billing.v1.MoveBillingAccountRequest").msgclass
58
59
  end
59
60
  end
60
61
  end
@@ -89,7 +89,8 @@ module Google
89
89
  # account, even if the charge occurred before the new billing account was
90
90
  # assigned to the project.
91
91
  #
92
- # The current authenticated user must have ownership privileges for both the
92
+ # The current authenticated user must have ownership privileges for both
93
+ # the
93
94
  # [project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo
94
95
  # ) and the [billing
95
96
  # account](https://cloud.google.com/billing/docs/how-to/billing-access).
@@ -123,6 +124,8 @@ module Google
123
124
  # the resource and a set of permissions as input and returns the subset of
124
125
  # the input permissions that the caller is allowed for that resource.
125
126
  rpc :TestIamPermissions, ::Google::Iam::V1::TestIamPermissionsRequest, ::Google::Iam::V1::TestIamPermissionsResponse
127
+ # Changes which parent organization a billing account belongs to.
128
+ rpc :MoveBillingAccount, ::Google::Cloud::Billing::V1::MoveBillingAccountRequest, ::Google::Cloud::Billing::V1::BillingAccount
126
129
  end
127
130
 
128
131
  Stub = Service.rpc_stub_class
@@ -32,6 +32,9 @@ module Google
32
32
  # and SKUs.
33
33
  #
34
34
  class Client
35
+ # @private
36
+ DEFAULT_ENDPOINT_TEMPLATE = "cloudbilling.$UNIVERSE_DOMAIN$"
37
+
35
38
  include Paths
36
39
 
37
40
  # @private
@@ -96,6 +99,15 @@ module Google
96
99
  @config
97
100
  end
98
101
 
102
+ ##
103
+ # The effective universe domain
104
+ #
105
+ # @return [String]
106
+ #
107
+ def universe_domain
108
+ @cloud_catalog_stub.universe_domain
109
+ end
110
+
99
111
  ##
100
112
  # Create a new CloudCatalog client object.
101
113
  #
@@ -129,8 +141,9 @@ module Google
129
141
  credentials = @config.credentials
130
142
  # Use self-signed JWT if the endpoint is unchanged from default,
131
143
  # but only if the default endpoint does not have a region prefix.
132
- enable_self_signed_jwt = @config.endpoint == Configuration::DEFAULT_ENDPOINT &&
133
- !@config.endpoint.split(".").first.include?("-")
144
+ enable_self_signed_jwt = @config.endpoint.nil? ||
145
+ (@config.endpoint == Configuration::DEFAULT_ENDPOINT &&
146
+ !@config.endpoint.split(".").first.include?("-"))
134
147
  credentials ||= Credentials.default scope: @config.scope,
135
148
  enable_self_signed_jwt: enable_self_signed_jwt
136
149
  if credentials.is_a?(::String) || credentials.is_a?(::Hash)
@@ -141,8 +154,10 @@ module Google
141
154
 
142
155
  @cloud_catalog_stub = ::Gapic::ServiceStub.new(
143
156
  ::Google::Cloud::Billing::V1::CloudCatalog::Stub,
144
- credentials: credentials,
145
- endpoint: @config.endpoint,
157
+ credentials: credentials,
158
+ endpoint: @config.endpoint,
159
+ endpoint_template: DEFAULT_ENDPOINT_TEMPLATE,
160
+ universe_domain: @config.universe_domain,
146
161
  channel_args: @config.channel_args,
147
162
  interceptors: @config.interceptors,
148
163
  channel_pool_config: @config.channel_pool
@@ -382,9 +397,9 @@ module Google
382
397
  # end
383
398
  #
384
399
  # @!attribute [rw] endpoint
385
- # The hostname or hostname:port of the service endpoint.
386
- # Defaults to `"cloudbilling.googleapis.com"`.
387
- # @return [::String]
400
+ # A custom service endpoint, as a hostname or hostname:port. The default is
401
+ # nil, indicating to use the default endpoint in the current universe domain.
402
+ # @return [::String,nil]
388
403
  # @!attribute [rw] credentials
389
404
  # Credentials to send with calls. You may provide any of the following types:
390
405
  # * (`String`) The path to a service account key file in JSON format
@@ -430,13 +445,20 @@ module Google
430
445
  # @!attribute [rw] quota_project
431
446
  # A separate project against which to charge quota.
432
447
  # @return [::String]
448
+ # @!attribute [rw] universe_domain
449
+ # The universe domain within which to make requests. This determines the
450
+ # default endpoint URL. The default value of nil uses the environment
451
+ # universe (usually the default "googleapis.com" universe).
452
+ # @return [::String,nil]
433
453
  #
434
454
  class Configuration
435
455
  extend ::Gapic::Config
436
456
 
457
+ # @private
458
+ # The endpoint specific to the default "googleapis.com" universe. Deprecated.
437
459
  DEFAULT_ENDPOINT = "cloudbilling.googleapis.com"
438
460
 
439
- config_attr :endpoint, DEFAULT_ENDPOINT, ::String
461
+ config_attr :endpoint, nil, ::String, nil
440
462
  config_attr :credentials, nil do |value|
441
463
  allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
442
464
  allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
@@ -451,6 +473,7 @@ module Google
451
473
  config_attr :metadata, nil, ::Hash, nil
452
474
  config_attr :retry_policy, nil, ::Hash, ::Proc, nil
453
475
  config_attr :quota_project, nil, ::String, nil
476
+ config_attr :universe_domain, nil, ::String, nil
454
477
 
455
478
  # @private
456
479
  def initialize parent_config = nil