<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="cloudbilling_v1.html">Cloud Billing API</a> . <a href="cloudbilling_v1.billingAccounts.html">billingAccounts</a> . <a href="cloudbilling_v1.billingAccounts.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(name, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
<p class="firstline">Lists the projects associated with a billing account. The current</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(name, pageToken=None, x__xgafv=None, pageSize=None)</code>
  <pre>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](https://cloud.google.com/billing/docs/how-to/billing-access).

Args:
  name: string, The resource name of the billing account associated with the projects that
you want to list. For example, `billingAccounts/012345-567890-ABCDEF`. (required)
  pageToken: string, A token identifying a page of results to be returned. This should be a
`next_page_token` value returned from a previous `ListProjectBillingInfo`
call. If unspecified, the first page of results is returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageSize: integer, Requested page size. The maximum page size is 100; this is also the
default.

Returns:
  An object of the form:

    { # Request message for `ListProjectBillingInfoResponse`.
    "nextPageToken": "A String", # A token to retrieve the next page of results. To retrieve the next page,
        # call `ListProjectBillingInfo` again with the `page_token` field set to this
        # value. This field is empty if there are no more results to retrieve.
    "projectBillingInfo": [ # A list of `ProjectBillingInfo` resources representing the projects
        # associated with the billing account.
      { # Encapsulation of billing information for a GCP Console project. A project
          # has at most one associated billing account at a time (but a billing account
          # can be assigned to multiple projects).
        "projectId": "A String", # The ID of the project that this `ProjectBillingInfo` represents, such as
            # `tokyo-rain-123`. This is a convenience field so that you don't need to
            # parse the `name` field to obtain a project ID. This field is read-only.
        "name": "A String", # The resource name for the `ProjectBillingInfo`; has the form
            # `projects/{project_id}/billingInfo`. For example, the resource name for the
            # billing information for project `tokyo-rain-123` would be
            # `projects/tokyo-rain-123/billingInfo`. This field is read-only.
        "billingEnabled": True or False, # True if the project is associated with an open billing account, to which
            # usage on the project is charged. False if the project is associated with a
            # closed billing account, or no billing account at all, and therefore cannot
            # use paid services. This field is read-only.
        "billingAccountName": "A String", # The resource name of the billing account associated with the project, if
            # any. For example, `billingAccounts/012345-567890-ABCDEF`.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>