<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="bigquery_v2.html">BigQuery API</a> . <a href="bigquery_v2.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#getServiceAccount">getServiceAccount(projectId)</a></code></p>
<p class="firstline">Returns the email address of the service account for your project used for interactions with Google Cloud KMS.</p>
<p class="toc_element">
  <code><a href="#list">list(pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists all projects to which you have been granted any project role.</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="getServiceAccount">getServiceAccount(projectId)</code>
  <pre>Returns the email address of the service account for your project used for interactions with Google Cloud KMS.

Args:
  projectId: string, Project ID for which the service account is requested. (required)

Returns:
  An object of the form:

    {
    "kind": "bigquery#getServiceAccountResponse", # The resource type of the response.
    "email": "A String", # The service account email address.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(pageToken=None, maxResults=None)</code>
  <pre>Lists all projects to which you have been granted any project role.

Args:
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  maxResults: integer, Maximum number of results to return

Returns:
  An object of the form:

    {
    "totalItems": 42, # The total number of projects in the list.
    "nextPageToken": "A String", # A token to request the next page of results.
    "kind": "bigquery#projectList", # The type of list.
    "etag": "A String", # A hash of the page of results
    "projects": [ # Projects to which you have at least READ access.
      {
        "friendlyName": "A String", # A descriptive name for this project.
        "kind": "bigquery#project", # The resource type.
        "numericId": "A String", # The numeric ID of this project.
        "id": "A String", # An opaque ID of this project.
        "projectReference": { # A unique reference to this project.
          "projectId": "A String", # [Required] ID of the project. Can be either the numeric ID or the assigned ID of the project.
        },
      },
    ],
  }</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>