<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="firebase_v1beta1.html">Firebase Management API</a> . <a href="firebase_v1beta1.projects.html">projects</a> . <a href="firebase_v1beta1.projects.availableLocations.html">availableLocations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(parent, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of valid Google Cloud Platform (GCP) resource locations for</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(parent, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Returns a list of valid Google Cloud Platform (GCP) resource locations for
the specified Project (including a FirebaseProject).
&lt;br&gt;
&lt;br&gt;One of these locations can be selected as the Project&#x27;s [_default_ GCP
resource location](https://firebase.google.com/docs/projects/locations),
which is the geographical location where project resources, such as Cloud
Firestore, will be provisioned by default. However, if the default GCP
resource location has already been set for the Project, then this setting
cannot be changed.
&lt;br&gt;
&lt;br&gt;This call checks for any possible
[location
restrictions](https://cloud.google.com/resource-manager/docs/organization-policy/defining-locations)
for the specified Project and, thus, might return a subset of all possible
GCP resource locations. To list all GCP resource locations (regardless of
any restrictions), call the endpoint without specifying a `PROJECT_NUMBER`
(that is, `/v1beta1/{parent=projects/-}/listAvailableLocations`). &lt;br&gt;
&lt;br&gt;To call `ListAvailableLocations` with a specified project, a member
must be at minimum a Viewer of the project. Calls without a specified
project do not require any specific project permissions.

Args:
  parent: string, The Project for which to list GCP resource locations, in the format:
&lt;br&gt;&lt;code&gt;projects/&lt;var&gt;PROJECT_NUMBER&lt;/var&gt;&lt;/code&gt;
&lt;br&gt;If no project is specified (that is, `projects/-`), the returned list
does not take into account org-specific or project-specific location
restrictions. (required)
  pageToken: string, Token returned from a previous call to `ListAvailableLocations` indicating
where in the list of locations to resume listing.
  pageSize: integer, The maximum number of locations to return in the response.
&lt;br&gt;
&lt;br&gt;The server may return fewer than this value at its discretion.
If no value is specified (or too large a value is specified), then the
server will impose its own limit.
&lt;br&gt;
&lt;br&gt;This value cannot be negative.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # If the result list is too large to fit in a single response, then a token
        # is returned. If the string is empty, then this response is the last page of
        # results and all available locations have been listed.
        # &lt;br&gt;
        # &lt;br&gt;This token can be used in a subsequent call to
        # `ListAvailableLocations` to find more locations.
        # &lt;br&gt;
        # &lt;br&gt;Page tokens are short-lived and should not be persisted.
    &quot;locations&quot;: [ # One page of results from a call to `ListAvailableLocations`.
      { # A GCP resource location that can be selected for a Project.
        &quot;type&quot;: &quot;A String&quot;, # Indicates whether the GCP resource location is a [regional or
            # multi-regional
            # location](https://firebase.google.com/docs/projects/locations#types)
            # for data replication.
        &quot;locationId&quot;: &quot;A String&quot;, # The ID of the GCP resource location. It will be one of the available [GCP
            # resource
            # locations](https://firebase.google.com/docs/projects/locations#types).
        &quot;features&quot;: [ # Products and services that are available in the GCP resource location.
          &quot;A String&quot;,
        ],
      },
    ],
  }</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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>