Class CloudBillingClient (2.3.0)

public class CloudBillingClient implements BackgroundResource

Service Description: Retrieves GCP Console billing accounts and associates them with projects.

This class provides the ability to make remote calls to the backing service through method calls that map to API methods. Sample code to get started:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   BillingAccountName name = BillingAccountName.of("[BILLING_ACCOUNT]");
   BillingAccount response = cloudBillingClient.getBillingAccount(name);
 }
 

Note: close() needs to be called on the CloudBillingClient object to clean up resources such as threads. In the example above, try-with-resources is used, which automatically calls close().

The surface of this class includes several types of Java methods for each of the API's methods:

  1. A "flattened" method. With this type of method, the fields of the request type have been converted into function parameters. It may be the case that not all fields are available as parameters, and not every API method will have a flattened method entry point.
  2. A "request object" method. This type of method only takes one parameter, a request object, which must be constructed before the call. Not every API method will have a request object method.
  3. A "callable" method. This type of method takes no parameters and returns an immutable API callable object, which can be used to initiate calls to the service.

See the individual methods for example code.

Many parameters require resource names to be formatted in a particular way. To assist with these names, this class includes a format method for each type of name, and additionally a parse method to extract the individual identifiers contained within names that are returned.

This class can be customized by passing in a custom instance of CloudBillingSettings to create(). For example:

To customize credentials:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 CloudBillingSettings cloudBillingSettings =
     CloudBillingSettings.newBuilder()
         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
         .build();
 CloudBillingClient cloudBillingClient = CloudBillingClient.create(cloudBillingSettings);
 

To customize the endpoint:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 CloudBillingSettings cloudBillingSettings =
     CloudBillingSettings.newBuilder().setEndpoint(myEndpoint).build();
 CloudBillingClient cloudBillingClient = CloudBillingClient.create(cloudBillingSettings);
 

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over the wire:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 CloudBillingSettings cloudBillingSettings =
     CloudBillingSettings.newBuilder()
         .setTransportChannelProvider(
             CloudBillingSettings.defaultHttpJsonTransportProviderBuilder().build())
         .build();
 CloudBillingClient cloudBillingClient = CloudBillingClient.create(cloudBillingSettings);
 

Please refer to the GitHub repository's samples for more quickstart code snippets.

Inheritance

java.lang.Object > CloudBillingClient

Implements

BackgroundResource

Static Methods

create()

public static final CloudBillingClient create()

Constructs an instance of CloudBillingClient with default settings.

Returns
TypeDescription
CloudBillingClient
Exceptions
TypeDescription
IOException

create(CloudBillingSettings settings)

public static final CloudBillingClient create(CloudBillingSettings settings)

Constructs an instance of CloudBillingClient, using the given settings. The channels are created based on the settings passed in, or defaults for any settings that are not set.

Parameter
NameDescription
settingsCloudBillingSettings
Returns
TypeDescription
CloudBillingClient
Exceptions
TypeDescription
IOException

create(CloudBillingStub stub)

public static final CloudBillingClient create(CloudBillingStub stub)

Constructs an instance of CloudBillingClient, using the given stub for making calls. This is for advanced usage - prefer using create(CloudBillingSettings).

Parameter
NameDescription
stubCloudBillingStub
Returns
TypeDescription
CloudBillingClient

Constructors

CloudBillingClient(CloudBillingSettings settings)

protected CloudBillingClient(CloudBillingSettings settings)

Constructs an instance of CloudBillingClient, using the given settings. This is protected so that it is easy to make a subclass, but otherwise, the static factory methods should be preferred.

Parameter
NameDescription
settingsCloudBillingSettings

CloudBillingClient(CloudBillingStub stub)

protected CloudBillingClient(CloudBillingStub stub)
Parameter
NameDescription
stubCloudBillingStub

Methods

awaitTermination(long duration, TimeUnit unit)

public boolean awaitTermination(long duration, TimeUnit unit)
Parameters
NameDescription
durationlong
unitTimeUnit
Returns
TypeDescription
boolean
Exceptions
TypeDescription
InterruptedException

close()

public final void close()

createBillingAccount(BillingAccount billingAccount)

public final BillingAccount createBillingAccount(BillingAccount billingAccount)

Creates a billing account. This method can only be used to create billing subaccounts by GCP resellers. When creating a subaccount, the current authenticated user must have the billing.accounts.update IAM permission on the master account, which is typically given to billing account administrators. This method will return an error if the master account has not been provisioned as a reseller account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   BillingAccount billingAccount = BillingAccount.newBuilder().build();
   BillingAccount response = cloudBillingClient.createBillingAccount(billingAccount);
 }
 
Parameter
NameDescription
billingAccountBillingAccount

Required. The billing account resource to create. Currently CreateBillingAccount only supports subaccount creation, so any created billing accounts must be under a provided master billing account.

Returns
TypeDescription
BillingAccount

createBillingAccount(CreateBillingAccountRequest request)

public final BillingAccount createBillingAccount(CreateBillingAccountRequest request)

Creates a billing account. This method can only be used to create billing subaccounts by GCP resellers. When creating a subaccount, the current authenticated user must have the billing.accounts.update IAM permission on the master account, which is typically given to billing account administrators. This method will return an error if the master account has not been provisioned as a reseller account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   CreateBillingAccountRequest request =
       CreateBillingAccountRequest.newBuilder()
           .setBillingAccount(BillingAccount.newBuilder().build())
           .build();
   BillingAccount response = cloudBillingClient.createBillingAccount(request);
 }
 
Parameter
NameDescription
requestCreateBillingAccountRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
BillingAccount

createBillingAccountCallable()

public final UnaryCallable<CreateBillingAccountRequest,BillingAccount> createBillingAccountCallable()

Creates a billing account. This method can only be used to create billing subaccounts by GCP resellers. When creating a subaccount, the current authenticated user must have the billing.accounts.update IAM permission on the master account, which is typically given to billing account administrators. This method will return an error if the master account has not been provisioned as a reseller account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   CreateBillingAccountRequest request =
       CreateBillingAccountRequest.newBuilder()
           .setBillingAccount(BillingAccount.newBuilder().build())
           .build();
   ApiFuture<BillingAccount> future =
       cloudBillingClient.createBillingAccountCallable().futureCall(request);
   // Do something.
   BillingAccount response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<CreateBillingAccountRequest,BillingAccount>

getBillingAccount(BillingAccountName name)

public final BillingAccount getBillingAccount(BillingAccountName name)

Gets information about a billing account. The current authenticated user must be a viewer of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   BillingAccountName name = BillingAccountName.of("[BILLING_ACCOUNT]");
   BillingAccount response = cloudBillingClient.getBillingAccount(name);
 }
 
Parameter
NameDescription
nameBillingAccountName

Required. The resource name of the billing account to retrieve. For example, billingAccounts/012345-567890-ABCDEF.

Returns
TypeDescription
BillingAccount

getBillingAccount(GetBillingAccountRequest request)

public final BillingAccount getBillingAccount(GetBillingAccountRequest request)

Gets information about a billing account. The current authenticated user must be a viewer of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   GetBillingAccountRequest request =
       GetBillingAccountRequest.newBuilder()
           .setName(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .build();
   BillingAccount response = cloudBillingClient.getBillingAccount(request);
 }
 
Parameter
NameDescription
requestGetBillingAccountRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
BillingAccount

getBillingAccount(String name)

public final BillingAccount getBillingAccount(String name)

Gets information about a billing account. The current authenticated user must be a viewer of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String name = BillingAccountName.of("[BILLING_ACCOUNT]").toString();
   BillingAccount response = cloudBillingClient.getBillingAccount(name);
 }
 
Parameter
NameDescription
nameString

Required. The resource name of the billing account to retrieve. For example, billingAccounts/012345-567890-ABCDEF.

Returns
TypeDescription
BillingAccount

getBillingAccountCallable()

public final UnaryCallable<GetBillingAccountRequest,BillingAccount> getBillingAccountCallable()

Gets information about a billing account. The current authenticated user must be a viewer of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   GetBillingAccountRequest request =
       GetBillingAccountRequest.newBuilder()
           .setName(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .build();
   ApiFuture<BillingAccount> future =
       cloudBillingClient.getBillingAccountCallable().futureCall(request);
   // Do something.
   BillingAccount response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<GetBillingAccountRequest,BillingAccount>

getIamPolicy(ResourceName resource)

public final Policy getIamPolicy(ResourceName resource)

Gets the access control policy for a billing account. The caller must have the billing.accounts.getIamPolicy permission on the account, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ResourceName resource = BillingAccountName.of("[BILLING_ACCOUNT]");
   Policy response = cloudBillingClient.getIamPolicy(resource);
 }
 
Parameter
NameDescription
resourcecom.google.api.resourcenames.ResourceName

REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.

Returns
TypeDescription
com.google.iam.v1.Policy

getIamPolicy(GetIamPolicyRequest request)

public final Policy getIamPolicy(GetIamPolicyRequest request)

Gets the access control policy for a billing account. The caller must have the billing.accounts.getIamPolicy permission on the account, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   GetIamPolicyRequest request =
       GetIamPolicyRequest.newBuilder()
           .setResource(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setOptions(GetPolicyOptions.newBuilder().build())
           .build();
   Policy response = cloudBillingClient.getIamPolicy(request);
 }
 
Parameter
NameDescription
requestcom.google.iam.v1.GetIamPolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
com.google.iam.v1.Policy

getIamPolicy(String resource)

public final Policy getIamPolicy(String resource)

Gets the access control policy for a billing account. The caller must have the billing.accounts.getIamPolicy permission on the account, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String resource = BillingAccountName.of("[BILLING_ACCOUNT]").toString();
   Policy response = cloudBillingClient.getIamPolicy(resource);
 }
 
Parameter
NameDescription
resourceString

REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.

Returns
TypeDescription
com.google.iam.v1.Policy

getIamPolicyCallable()

public final UnaryCallable<GetIamPolicyRequest,Policy> getIamPolicyCallable()

Gets the access control policy for a billing account. The caller must have the billing.accounts.getIamPolicy permission on the account, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   GetIamPolicyRequest request =
       GetIamPolicyRequest.newBuilder()
           .setResource(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setOptions(GetPolicyOptions.newBuilder().build())
           .build();
   ApiFuture<Policy> future = cloudBillingClient.getIamPolicyCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<com.google.iam.v1.GetIamPolicyRequest,com.google.iam.v1.Policy>

getProjectBillingInfo(GetProjectBillingInfoRequest request)

public final ProjectBillingInfo getProjectBillingInfo(GetProjectBillingInfoRequest request)

Gets the billing information for a project. The current authenticated user must have permission to view the project.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   GetProjectBillingInfoRequest request =
       GetProjectBillingInfoRequest.newBuilder().setName("name3373707").build();
   ProjectBillingInfo response = cloudBillingClient.getProjectBillingInfo(request);
 }
 
Parameter
NameDescription
requestGetProjectBillingInfoRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
ProjectBillingInfo

getProjectBillingInfo(String name)

public final ProjectBillingInfo getProjectBillingInfo(String name)

Gets the billing information for a project. The current authenticated user must have permission to view the project.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String name = "name3373707";
   ProjectBillingInfo response = cloudBillingClient.getProjectBillingInfo(name);
 }
 
Parameter
NameDescription
nameString

Required. The resource name of the project for which billing information is retrieved. For example, projects/tokyo-rain-123.

Returns
TypeDescription
ProjectBillingInfo

getProjectBillingInfoCallable()

public final UnaryCallable<GetProjectBillingInfoRequest,ProjectBillingInfo> getProjectBillingInfoCallable()

Gets the billing information for a project. The current authenticated user must have permission to view the project.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   GetProjectBillingInfoRequest request =
       GetProjectBillingInfoRequest.newBuilder().setName("name3373707").build();
   ApiFuture<ProjectBillingInfo> future =
       cloudBillingClient.getProjectBillingInfoCallable().futureCall(request);
   // Do something.
   ProjectBillingInfo response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<GetProjectBillingInfoRequest,ProjectBillingInfo>

getSettings()

public final CloudBillingSettings getSettings()
Returns
TypeDescription
CloudBillingSettings

getStub()

public CloudBillingStub getStub()
Returns
TypeDescription
CloudBillingStub

isShutdown()

public boolean isShutdown()
Returns
TypeDescription
boolean

isTerminated()

public boolean isTerminated()
Returns
TypeDescription
boolean

listBillingAccounts()

public final CloudBillingClient.ListBillingAccountsPagedResponse listBillingAccounts()

Lists the billing accounts that the current authenticated user has permission to view.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   for (BillingAccount element : cloudBillingClient.listBillingAccounts().iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Returns
TypeDescription
CloudBillingClient.ListBillingAccountsPagedResponse

listBillingAccounts(ListBillingAccountsRequest request)

public final CloudBillingClient.ListBillingAccountsPagedResponse listBillingAccounts(ListBillingAccountsRequest request)

Lists the billing accounts that the current authenticated user has permission to view.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ListBillingAccountsRequest request =
       ListBillingAccountsRequest.newBuilder()
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .setFilter("filter-1274492040")
           .build();
   for (BillingAccount element : cloudBillingClient.listBillingAccounts(request).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
requestListBillingAccountsRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
CloudBillingClient.ListBillingAccountsPagedResponse

listBillingAccountsCallable()

public final UnaryCallable<ListBillingAccountsRequest,ListBillingAccountsResponse> listBillingAccountsCallable()

Lists the billing accounts that the current authenticated user has permission to view.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ListBillingAccountsRequest request =
       ListBillingAccountsRequest.newBuilder()
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .setFilter("filter-1274492040")
           .build();
   while (true) {
     ListBillingAccountsResponse response =
         cloudBillingClient.listBillingAccountsCallable().call(request);
     for (BillingAccount element : response.getBillingAccountsList()) {
       // doThingsWith(element);
     }
     String nextPageToken = response.getNextPageToken();
     if (!Strings.isNullOrEmpty(nextPageToken)) {
       request = request.toBuilder().setPageToken(nextPageToken).build();
     } else {
       break;
     }
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListBillingAccountsRequest,ListBillingAccountsResponse>

listBillingAccountsPagedCallable()

public final UnaryCallable<ListBillingAccountsRequest,CloudBillingClient.ListBillingAccountsPagedResponse> listBillingAccountsPagedCallable()

Lists the billing accounts that the current authenticated user has permission to view.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ListBillingAccountsRequest request =
       ListBillingAccountsRequest.newBuilder()
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .setFilter("filter-1274492040")
           .build();
   ApiFuture<BillingAccount> future =
       cloudBillingClient.listBillingAccountsPagedCallable().futureCall(request);
   // Do something.
   for (BillingAccount element : future.get().iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListBillingAccountsRequest,ListBillingAccountsPagedResponse>

listProjectBillingInfo(BillingAccountName name)

public final CloudBillingClient.ListProjectBillingInfoPagedResponse listProjectBillingInfo(BillingAccountName name)

Lists the projects associated with a billing account. The current authenticated user must have the billing.resourceAssociations.list IAM permission, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   BillingAccountName name = BillingAccountName.of("[BILLING_ACCOUNT]");
   for (ProjectBillingInfo element :
       cloudBillingClient.listProjectBillingInfo(name).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
nameBillingAccountName

Required. The resource name of the billing account associated with the projects that you want to list. For example, billingAccounts/012345-567890-ABCDEF.

Returns
TypeDescription
CloudBillingClient.ListProjectBillingInfoPagedResponse

listProjectBillingInfo(ListProjectBillingInfoRequest request)

public final CloudBillingClient.ListProjectBillingInfoPagedResponse listProjectBillingInfo(ListProjectBillingInfoRequest request)

Lists the projects associated with a billing account. The current authenticated user must have the billing.resourceAssociations.list IAM permission, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ListProjectBillingInfoRequest request =
       ListProjectBillingInfoRequest.newBuilder()
           .setName(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   for (ProjectBillingInfo element :
       cloudBillingClient.listProjectBillingInfo(request).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
requestListProjectBillingInfoRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
CloudBillingClient.ListProjectBillingInfoPagedResponse

listProjectBillingInfo(String name)

public final CloudBillingClient.ListProjectBillingInfoPagedResponse listProjectBillingInfo(String name)

Lists the projects associated with a billing account. The current authenticated user must have the billing.resourceAssociations.list IAM permission, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String name = BillingAccountName.of("[BILLING_ACCOUNT]").toString();
   for (ProjectBillingInfo element :
       cloudBillingClient.listProjectBillingInfo(name).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
nameString

Required. The resource name of the billing account associated with the projects that you want to list. For example, billingAccounts/012345-567890-ABCDEF.

Returns
TypeDescription
CloudBillingClient.ListProjectBillingInfoPagedResponse

listProjectBillingInfoCallable()

public final UnaryCallable<ListProjectBillingInfoRequest,ListProjectBillingInfoResponse> listProjectBillingInfoCallable()

Lists the projects associated with a billing account. The current authenticated user must have the billing.resourceAssociations.list IAM permission, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ListProjectBillingInfoRequest request =
       ListProjectBillingInfoRequest.newBuilder()
           .setName(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   while (true) {
     ListProjectBillingInfoResponse response =
         cloudBillingClient.listProjectBillingInfoCallable().call(request);
     for (ProjectBillingInfo element : response.getProjectBillingInfoList()) {
       // doThingsWith(element);
     }
     String nextPageToken = response.getNextPageToken();
     if (!Strings.isNullOrEmpty(nextPageToken)) {
       request = request.toBuilder().setPageToken(nextPageToken).build();
     } else {
       break;
     }
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListProjectBillingInfoRequest,ListProjectBillingInfoResponse>

listProjectBillingInfoPagedCallable()

public final UnaryCallable<ListProjectBillingInfoRequest,CloudBillingClient.ListProjectBillingInfoPagedResponse> listProjectBillingInfoPagedCallable()

Lists the projects associated with a billing account. The current authenticated user must have the billing.resourceAssociations.list IAM permission, which is often given to billing account viewers.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ListProjectBillingInfoRequest request =
       ListProjectBillingInfoRequest.newBuilder()
           .setName(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   ApiFuture<ProjectBillingInfo> future =
       cloudBillingClient.listProjectBillingInfoPagedCallable().futureCall(request);
   // Do something.
   for (ProjectBillingInfo element : future.get().iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListProjectBillingInfoRequest,ListProjectBillingInfoPagedResponse>

setIamPolicy(ResourceName resource, Policy policy)

public final Policy setIamPolicy(ResourceName resource, Policy policy)

Sets the access control policy for a billing account. Replaces any existing policy. The caller must have the billing.accounts.setIamPolicy permission on the account, which is often given to billing account administrators.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ResourceName resource = BillingAccountName.of("[BILLING_ACCOUNT]");
   Policy policy = Policy.newBuilder().build();
   Policy response = cloudBillingClient.setIamPolicy(resource, policy);
 }
 
Parameters
NameDescription
resourcecom.google.api.resourcenames.ResourceName

REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.

policycom.google.iam.v1.Policy

REQUIRED: The complete policy to be applied to the resource. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.

Returns
TypeDescription
com.google.iam.v1.Policy

setIamPolicy(SetIamPolicyRequest request)

public final Policy setIamPolicy(SetIamPolicyRequest request)

Sets the access control policy for a billing account. Replaces any existing policy. The caller must have the billing.accounts.setIamPolicy permission on the account, which is often given to billing account administrators.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   SetIamPolicyRequest request =
       SetIamPolicyRequest.newBuilder()
           .setResource(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setPolicy(Policy.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   Policy response = cloudBillingClient.setIamPolicy(request);
 }
 
Parameter
NameDescription
requestcom.google.iam.v1.SetIamPolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
com.google.iam.v1.Policy

setIamPolicy(String resource, Policy policy)

public final Policy setIamPolicy(String resource, Policy policy)

Sets the access control policy for a billing account. Replaces any existing policy. The caller must have the billing.accounts.setIamPolicy permission on the account, which is often given to billing account administrators.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String resource = BillingAccountName.of("[BILLING_ACCOUNT]").toString();
   Policy policy = Policy.newBuilder().build();
   Policy response = cloudBillingClient.setIamPolicy(resource, policy);
 }
 
Parameters
NameDescription
resourceString

REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.

policycom.google.iam.v1.Policy

REQUIRED: The complete policy to be applied to the resource. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.

Returns
TypeDescription
com.google.iam.v1.Policy

setIamPolicyCallable()

public final UnaryCallable<SetIamPolicyRequest,Policy> setIamPolicyCallable()

Sets the access control policy for a billing account. Replaces any existing policy. The caller must have the billing.accounts.setIamPolicy permission on the account, which is often given to billing account administrators.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   SetIamPolicyRequest request =
       SetIamPolicyRequest.newBuilder()
           .setResource(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setPolicy(Policy.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   ApiFuture<Policy> future = cloudBillingClient.setIamPolicyCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<com.google.iam.v1.SetIamPolicyRequest,com.google.iam.v1.Policy>

shutdown()

public void shutdown()

shutdownNow()

public void shutdownNow()

testIamPermissions(ResourceName resource, List<String> permissions)

public final TestIamPermissionsResponse testIamPermissions(ResourceName resource, List<String> permissions)

Tests the access control policy for a billing account. This method takes the resource and a set of permissions as input and returns the subset of the input permissions that the caller is allowed for that resource.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   ResourceName resource = BillingAccountName.of("[BILLING_ACCOUNT]");
   List<String> permissions = new ArrayList<>();
   TestIamPermissionsResponse response =
       cloudBillingClient.testIamPermissions(resource, permissions);
 }
 
Parameters
NameDescription
resourcecom.google.api.resourcenames.ResourceName

REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.

permissionsList<String>

The set of permissions to check for the resource. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see IAM Overview.

Returns
TypeDescription
com.google.iam.v1.TestIamPermissionsResponse

testIamPermissions(TestIamPermissionsRequest request)

public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsRequest request)

Tests the access control policy for a billing account. This method takes the resource and a set of permissions as input and returns the subset of the input permissions that the caller is allowed for that resource.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   TestIamPermissionsRequest request =
       TestIamPermissionsRequest.newBuilder()
           .setResource(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .addAllPermissions(new ArrayList<String>())
           .build();
   TestIamPermissionsResponse response = cloudBillingClient.testIamPermissions(request);
 }
 
Parameter
NameDescription
requestcom.google.iam.v1.TestIamPermissionsRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
com.google.iam.v1.TestIamPermissionsResponse

testIamPermissions(String resource, List<String> permissions)

public final TestIamPermissionsResponse testIamPermissions(String resource, List<String> permissions)

Tests the access control policy for a billing account. This method takes the resource and a set of permissions as input and returns the subset of the input permissions that the caller is allowed for that resource.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String resource = BillingAccountName.of("[BILLING_ACCOUNT]").toString();
   List<String> permissions = new ArrayList<>();
   TestIamPermissionsResponse response =
       cloudBillingClient.testIamPermissions(resource, permissions);
 }
 
Parameters
NameDescription
resourceString

REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.

permissionsList<String>

The set of permissions to check for the resource. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see IAM Overview.

Returns
TypeDescription
com.google.iam.v1.TestIamPermissionsResponse

testIamPermissionsCallable()

public final UnaryCallable<TestIamPermissionsRequest,TestIamPermissionsResponse> testIamPermissionsCallable()

Tests the access control policy for a billing account. This method takes the resource and a set of permissions as input and returns the subset of the input permissions that the caller is allowed for that resource.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   TestIamPermissionsRequest request =
       TestIamPermissionsRequest.newBuilder()
           .setResource(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .addAllPermissions(new ArrayList<String>())
           .build();
   ApiFuture<TestIamPermissionsResponse> future =
       cloudBillingClient.testIamPermissionsCallable().futureCall(request);
   // Do something.
   TestIamPermissionsResponse response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<com.google.iam.v1.TestIamPermissionsRequest,com.google.iam.v1.TestIamPermissionsResponse>

updateBillingAccount(BillingAccountName name, BillingAccount account)

public final BillingAccount updateBillingAccount(BillingAccountName name, BillingAccount account)

Updates a billing account's fields. Currently the only field that can be edited is display_name. The current authenticated user must have the billing.accounts.update IAM permission, which is typically given to the administrator of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   BillingAccountName name = BillingAccountName.of("[BILLING_ACCOUNT]");
   BillingAccount account = BillingAccount.newBuilder().build();
   BillingAccount response = cloudBillingClient.updateBillingAccount(name, account);
 }
 
Parameters
NameDescription
nameBillingAccountName

Required. The name of the billing account resource to be updated.

accountBillingAccount

Required. The billing account resource to replace the resource on the server.

Returns
TypeDescription
BillingAccount

updateBillingAccount(UpdateBillingAccountRequest request)

public final BillingAccount updateBillingAccount(UpdateBillingAccountRequest request)

Updates a billing account's fields. Currently the only field that can be edited is display_name. The current authenticated user must have the billing.accounts.update IAM permission, which is typically given to the administrator of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   UpdateBillingAccountRequest request =
       UpdateBillingAccountRequest.newBuilder()
           .setName(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setAccount(BillingAccount.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   BillingAccount response = cloudBillingClient.updateBillingAccount(request);
 }
 
Parameter
NameDescription
requestUpdateBillingAccountRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
BillingAccount

updateBillingAccount(String name, BillingAccount account)

public final BillingAccount updateBillingAccount(String name, BillingAccount account)

Updates a billing account's fields. Currently the only field that can be edited is display_name. The current authenticated user must have the billing.accounts.update IAM permission, which is typically given to the administrator of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String name = BillingAccountName.of("[BILLING_ACCOUNT]").toString();
   BillingAccount account = BillingAccount.newBuilder().build();
   BillingAccount response = cloudBillingClient.updateBillingAccount(name, account);
 }
 
Parameters
NameDescription
nameString

Required. The name of the billing account resource to be updated.

accountBillingAccount

Required. The billing account resource to replace the resource on the server.

Returns
TypeDescription
BillingAccount

updateBillingAccountCallable()

public final UnaryCallable<UpdateBillingAccountRequest,BillingAccount> updateBillingAccountCallable()

Updates a billing account's fields. Currently the only field that can be edited is display_name. The current authenticated user must have the billing.accounts.update IAM permission, which is typically given to the administrator of the billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   UpdateBillingAccountRequest request =
       UpdateBillingAccountRequest.newBuilder()
           .setName(BillingAccountName.of("[BILLING_ACCOUNT]").toString())
           .setAccount(BillingAccount.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   ApiFuture<BillingAccount> future =
       cloudBillingClient.updateBillingAccountCallable().futureCall(request);
   // Do something.
   BillingAccount response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<UpdateBillingAccountRequest,BillingAccount>

updateProjectBillingInfo(UpdateProjectBillingInfoRequest request)

public final ProjectBillingInfo updateProjectBillingInfo(UpdateProjectBillingInfoRequest request)

Sets or updates the billing account associated with a project. You specify the new billing account by setting the billing_account_name in the ProjectBillingInfo resource to the resource name of a billing account. Associating a project with an open billing account enables billing on the project and allows charges for resource usage. If the project already had a billing account, this method changes the billing account used for resource usage charges.

*Note:* Incurred charges that have not yet been reported in the transaction history of the GCP Console might be billed to the new billing account, even if the charge occurred before the new billing account was assigned to the project.

The current authenticated user must have ownership privileges for both the project and the billing account.

You can disable billing on the project by setting the billing_account_name field to empty. This action disassociates the current billing account from the project. Any billable activity of your in-use services will stop, and your application could stop functioning as expected. Any unbilled charges to date will be billed to the previously associated account. The current authenticated user must be either an owner of the project or an owner of the billing account for the project.

Note that associating a project with a *closed* billing account will have much the same effect as disabling billing on the project: any paid resources used by the project will be shut down. Thus, unless you wish to disable billing, you should always call this method with the name of an

  • open* billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   UpdateProjectBillingInfoRequest request =
       UpdateProjectBillingInfoRequest.newBuilder()
           .setName("name3373707")
           .setProjectBillingInfo(ProjectBillingInfo.newBuilder().build())
           .build();
   ProjectBillingInfo response = cloudBillingClient.updateProjectBillingInfo(request);
 }
 
Parameter
NameDescription
requestUpdateProjectBillingInfoRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
ProjectBillingInfo

updateProjectBillingInfo(String name, ProjectBillingInfo projectBillingInfo)

public final ProjectBillingInfo updateProjectBillingInfo(String name, ProjectBillingInfo projectBillingInfo)

Sets or updates the billing account associated with a project. You specify the new billing account by setting the billing_account_name in the ProjectBillingInfo resource to the resource name of a billing account. Associating a project with an open billing account enables billing on the project and allows charges for resource usage. If the project already had a billing account, this method changes the billing account used for resource usage charges.

*Note:* Incurred charges that have not yet been reported in the transaction history of the GCP Console might be billed to the new billing account, even if the charge occurred before the new billing account was assigned to the project.

The current authenticated user must have ownership privileges for both the project and the billing account.

You can disable billing on the project by setting the billing_account_name field to empty. This action disassociates the current billing account from the project. Any billable activity of your in-use services will stop, and your application could stop functioning as expected. Any unbilled charges to date will be billed to the previously associated account. The current authenticated user must be either an owner of the project or an owner of the billing account for the project.

Note that associating a project with a *closed* billing account will have much the same effect as disabling billing on the project: any paid resources used by the project will be shut down. Thus, unless you wish to disable billing, you should always call this method with the name of an

  • open* billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   String name = "name3373707";
   ProjectBillingInfo projectBillingInfo = ProjectBillingInfo.newBuilder().build();
   ProjectBillingInfo response =
       cloudBillingClient.updateProjectBillingInfo(name, projectBillingInfo);
 }
 
Parameters
NameDescription
nameString

Required. The resource name of the project associated with the billing information that you want to update. For example, projects/tokyo-rain-123.

projectBillingInfoProjectBillingInfo

The new billing information for the project. Read-only fields are ignored; thus, you can leave empty all fields except billing_account_name.

Returns
TypeDescription
ProjectBillingInfo

updateProjectBillingInfoCallable()

public final UnaryCallable<UpdateProjectBillingInfoRequest,ProjectBillingInfo> updateProjectBillingInfoCallable()

Sets or updates the billing account associated with a project. You specify the new billing account by setting the billing_account_name in the ProjectBillingInfo resource to the resource name of a billing account. Associating a project with an open billing account enables billing on the project and allows charges for resource usage. If the project already had a billing account, this method changes the billing account used for resource usage charges.

*Note:* Incurred charges that have not yet been reported in the transaction history of the GCP Console might be billed to the new billing account, even if the charge occurred before the new billing account was assigned to the project.

The current authenticated user must have ownership privileges for both the project and the billing account.

You can disable billing on the project by setting the billing_account_name field to empty. This action disassociates the current billing account from the project. Any billable activity of your in-use services will stop, and your application could stop functioning as expected. Any unbilled charges to date will be billed to the previously associated account. The current authenticated user must be either an owner of the project or an owner of the billing account for the project.

Note that associating a project with a *closed* billing account will have much the same effect as disabling billing on the project: any paid resources used by the project will be shut down. Thus, unless you wish to disable billing, you should always call this method with the name of an

  • open* billing account.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (CloudBillingClient cloudBillingClient = CloudBillingClient.create()) {
   UpdateProjectBillingInfoRequest request =
       UpdateProjectBillingInfoRequest.newBuilder()
           .setName("name3373707")
           .setProjectBillingInfo(ProjectBillingInfo.newBuilder().build())
           .build();
   ApiFuture<ProjectBillingInfo> future =
       cloudBillingClient.updateProjectBillingInfoCallable().futureCall(request);
   // Do something.
   ProjectBillingInfo response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<UpdateProjectBillingInfoRequest,ProjectBillingInfo>