<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="bigqueryreservation_v1alpha2.html">BigQuery Reservation API</a> . <a href="bigqueryreservation_v1alpha2.projects.html">projects</a> . <a href="bigqueryreservation_v1alpha2.projects.locations.html">locations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="bigqueryreservation_v1alpha2.projects.locations.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="bigqueryreservation_v1alpha2.projects.locations.reservationGrants.html">reservationGrants()</a></code>
</p>
<p class="firstline">Returns the reservationGrants Resource.</p>

<p class="toc_element">
  <code><a href="bigqueryreservation_v1alpha2.projects.locations.reservations.html">reservations()</a></code>
</p>
<p class="firstline">Returns the reservations Resource.</p>

<p class="toc_element">
  <code><a href="#searchReservationGrants">searchReservationGrants(parent, pageSize=None, query=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Look up grants for a specified resource for a particular region.</p>
<p class="toc_element">
  <code><a href="#searchReservationGrants_next">searchReservationGrants_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="searchReservationGrants">searchReservationGrants(parent, pageSize=None, query=None, pageToken=None, x__xgafv=None)</code>
  <pre>Look up grants for a specified resource for a particular region.
If the request is about a project:
  1) Grants created on the project will be returned if they exist.
  2) Otherwise grants created on the closest ancestor will be returned.
  3) Grants for different JobTypes will all be returned.
Same logic applies if the request is about a folder.
If the request is about an organization, then grants created on the
organization will be returned (organization doesn&#x27;t have ancestors).
Comparing to ListReservationGrants, there are two behavior
differences:
  1) permission on the grantee will be verified in this API.
  2) Hierarchy lookup (project-&gt;folder-&gt;organization) happens in this API.

Args:
  parent: string, The parent resource name (containing project and location), which owns the
grants. e.g.:
  &quot;projects/myproject/locations/us-central1&quot;. (required)
  pageSize: integer, The maximum number of items to return.
  query: string, Please specify resource name as grantee in the query.
e.g., &quot;grantee=projects/myproject&quot;
      &quot;grantee=folders/123&quot;
      &quot;grantee=organizations/456&quot;
  pageToken: string, The next_page_token value returned from a previous List request, if any.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response for ReservationService.SearchReservationGrants.
    &quot;reservationGrants&quot;: [ # List of reservation grants visible to the user.
      { # A ReservationGrant allows a project to submit jobs
          # of a certain type using slots from the specified reservation.
        &quot;grantee&quot;: &quot;A String&quot;, # The resource which will use the reservation. E.g.
            # projects/myproject, folders/123, organizations/456.
        &quot;state&quot;: &quot;A String&quot;, # Output only. State of the ReservationGrant.
        &quot;jobType&quot;: &quot;A String&quot;, # Which type of jobs will use the reservation.
        &quot;reservation&quot;: &quot;A String&quot;, # Resource name of the reservation.
            # E.g., projects/myproject/locations/eu/reservations/my_reservation.
            # This reservation must be in the same location as the grant.
            # This reservation should belong to the same parent project.
        &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the resource. E.g.:
            # projects/myproject/locations/eu/reservationGrants/123.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no
        # more results in the list.
  }</pre>
</div>

<div class="method">
    <code class="details" id="searchReservationGrants_next">searchReservationGrants_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>