<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="accessapproval_v1.html">Access Approval API</a> . <a href="accessapproval_v1.projects.html">projects</a> . <a href="accessapproval_v1.projects.approvalRequests.html">approvalRequests</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#approve">approve(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Approves a request and returns the updated ApprovalRequest. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#dismiss">dismiss(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Dismisses a request. Returns the updated ApprovalRequest. NOTE: This does not deny access to the resource if another request has been made and approved. It is equivalent in effect to ignoring the request altogether. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an approval request. Returns NOT_FOUND if the request does not exist.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists approval requests associated with a project, folder, or organization. Approval requests can be filtered by state (pending, active, dismissed). The order is reverse chronological.</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="approve">approve(name, body=None, x__xgafv=None)</code>
  <pre>Approves a request and returns the updated ApprovalRequest. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

Args:
  name: string, Name of the approval request to approve. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to approve an ApprovalRequest.
  &quot;expireTime&quot;: &quot;A String&quot;, # The expiration time of this approval.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A request for the customer to approve access to a resource.
  &quot;approve&quot;: { # A decision that has been made to approve access to a resource. # Access was approved.
    &quot;approveTime&quot;: &quot;A String&quot;, # The time at which approval was granted.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
  },
  &quot;dismiss&quot;: { # A decision that has been made to dismiss an approval request. # The request was dismissed.
    &quot;dismissTime&quot;: &quot;A String&quot;, # The time at which the approval request was dismissed.
    &quot;implicit&quot;: True or False, # This field will be true if the ApprovalRequest was implcitly dismissed due to inaction by the access approval approvers (the request is not acted on by the approvers before the exiration time).
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the request. Format is &quot;{projects|folders|organizations}/{id}/approvalRequests/{approval_request}&quot;.
  &quot;requestTime&quot;: &quot;A String&quot;, # The time at which approval was requested.
  &quot;requestedExpiration&quot;: &quot;A String&quot;, # The requested expiration for the approval. If the request is approved, access will be granted from the time of approval until the expiration time.
  &quot;requestedLocations&quot;: { # Home office and physical location of the principal. # The locations for which approval is being requested.
    &quot;principalOfficeCountry&quot;: &quot;A String&quot;, # The &quot;home office&quot; location of the principal. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
    &quot;principalPhysicalLocationCountry&quot;: &quot;A String&quot;, # Physical location of the principal at the time of the access. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
  },
  &quot;requestedReason&quot;: { # The justification for which approval is being requested.
    &quot;detail&quot;: &quot;A String&quot;, # More detail about certain reason types. See comments for each type above.
    &quot;type&quot;: &quot;A String&quot;, # Type of access justification.
  },
  &quot;requestedResourceName&quot;: &quot;A String&quot;, # The resource for which approval is being requested. The format of the resource name is defined at https://cloud.google.com/apis/design/resource_names. The resource name here may either be a &quot;full&quot; resource name (e.g. &quot;//library.googleapis.com/shelves/shelf1/books/book2&quot;) or a &quot;relative&quot; resource name (e.g. &quot;shelves/shelf1/books/book2&quot;) as described in the resource name specification.
  &quot;requestedResourceProperties&quot;: { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
    &quot;excludesDescendants&quot;: True or False, # Whether an approval will exclude the descendants of the resource being requested.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="dismiss">dismiss(name, body=None, x__xgafv=None)</code>
  <pre>Dismisses a request. Returns the updated ApprovalRequest. NOTE: This does not deny access to the resource if another request has been made and approved. It is equivalent in effect to ignoring the request altogether. Returns NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if the request exists but is not in a pending state.

Args:
  name: string, Name of the ApprovalRequest to dismiss. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to dismiss an approval request.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A request for the customer to approve access to a resource.
  &quot;approve&quot;: { # A decision that has been made to approve access to a resource. # Access was approved.
    &quot;approveTime&quot;: &quot;A String&quot;, # The time at which approval was granted.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
  },
  &quot;dismiss&quot;: { # A decision that has been made to dismiss an approval request. # The request was dismissed.
    &quot;dismissTime&quot;: &quot;A String&quot;, # The time at which the approval request was dismissed.
    &quot;implicit&quot;: True or False, # This field will be true if the ApprovalRequest was implcitly dismissed due to inaction by the access approval approvers (the request is not acted on by the approvers before the exiration time).
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the request. Format is &quot;{projects|folders|organizations}/{id}/approvalRequests/{approval_request}&quot;.
  &quot;requestTime&quot;: &quot;A String&quot;, # The time at which approval was requested.
  &quot;requestedExpiration&quot;: &quot;A String&quot;, # The requested expiration for the approval. If the request is approved, access will be granted from the time of approval until the expiration time.
  &quot;requestedLocations&quot;: { # Home office and physical location of the principal. # The locations for which approval is being requested.
    &quot;principalOfficeCountry&quot;: &quot;A String&quot;, # The &quot;home office&quot; location of the principal. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
    &quot;principalPhysicalLocationCountry&quot;: &quot;A String&quot;, # Physical location of the principal at the time of the access. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
  },
  &quot;requestedReason&quot;: { # The justification for which approval is being requested.
    &quot;detail&quot;: &quot;A String&quot;, # More detail about certain reason types. See comments for each type above.
    &quot;type&quot;: &quot;A String&quot;, # Type of access justification.
  },
  &quot;requestedResourceName&quot;: &quot;A String&quot;, # The resource for which approval is being requested. The format of the resource name is defined at https://cloud.google.com/apis/design/resource_names. The resource name here may either be a &quot;full&quot; resource name (e.g. &quot;//library.googleapis.com/shelves/shelf1/books/book2&quot;) or a &quot;relative&quot; resource name (e.g. &quot;shelves/shelf1/books/book2&quot;) as described in the resource name specification.
  &quot;requestedResourceProperties&quot;: { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
    &quot;excludesDescendants&quot;: True or False, # Whether an approval will exclude the descendants of the resource being requested.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets an approval request. Returns NOT_FOUND if the request does not exist.

Args:
  name: string, Name of the approval request to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A request for the customer to approve access to a resource.
  &quot;approve&quot;: { # A decision that has been made to approve access to a resource. # Access was approved.
    &quot;approveTime&quot;: &quot;A String&quot;, # The time at which approval was granted.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
  },
  &quot;dismiss&quot;: { # A decision that has been made to dismiss an approval request. # The request was dismissed.
    &quot;dismissTime&quot;: &quot;A String&quot;, # The time at which the approval request was dismissed.
    &quot;implicit&quot;: True or False, # This field will be true if the ApprovalRequest was implcitly dismissed due to inaction by the access approval approvers (the request is not acted on by the approvers before the exiration time).
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the request. Format is &quot;{projects|folders|organizations}/{id}/approvalRequests/{approval_request}&quot;.
  &quot;requestTime&quot;: &quot;A String&quot;, # The time at which approval was requested.
  &quot;requestedExpiration&quot;: &quot;A String&quot;, # The requested expiration for the approval. If the request is approved, access will be granted from the time of approval until the expiration time.
  &quot;requestedLocations&quot;: { # Home office and physical location of the principal. # The locations for which approval is being requested.
    &quot;principalOfficeCountry&quot;: &quot;A String&quot;, # The &quot;home office&quot; location of the principal. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
    &quot;principalPhysicalLocationCountry&quot;: &quot;A String&quot;, # Physical location of the principal at the time of the access. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
  },
  &quot;requestedReason&quot;: { # The justification for which approval is being requested.
    &quot;detail&quot;: &quot;A String&quot;, # More detail about certain reason types. See comments for each type above.
    &quot;type&quot;: &quot;A String&quot;, # Type of access justification.
  },
  &quot;requestedResourceName&quot;: &quot;A String&quot;, # The resource for which approval is being requested. The format of the resource name is defined at https://cloud.google.com/apis/design/resource_names. The resource name here may either be a &quot;full&quot; resource name (e.g. &quot;//library.googleapis.com/shelves/shelf1/books/book2&quot;) or a &quot;relative&quot; resource name (e.g. &quot;shelves/shelf1/books/book2&quot;) as described in the resource name specification.
  &quot;requestedResourceProperties&quot;: { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
    &quot;excludesDescendants&quot;: True or False, # Whether an approval will exclude the descendants of the resource being requested.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists approval requests associated with a project, folder, or organization. Approval requests can be filtered by state (pending, active, dismissed). The order is reverse chronological.

Args:
  parent: string, The parent resource. This may be &quot;projects/{project}&quot;, &quot;folders/{folder}&quot;, or &quot;organizations/{organization}&quot;. (required)
  filter: string, A filter on the type of approval requests to retrieve. Must be one of the following values: * [not set]: Requests that are pending or have active approvals. * ALL: All requests. * PENDING: Only pending requests. * ACTIVE: Only active (i.e. currently approved) requests. * DISMISSED: Only requests that have been dismissed, or requests that are not approved and past expiration. * EXPIRED: Only requests that have been approved, and the approval has expired. * HISTORY: Active, dismissed and expired requests.
  pageSize: integer, Requested page size.
  pageToken: string, A token identifying the page of results to return.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to listing of ApprovalRequest objects.
  &quot;approvalRequests&quot;: [ # Approval request details.
    { # A request for the customer to approve access to a resource.
      &quot;approve&quot;: { # A decision that has been made to approve access to a resource. # Access was approved.
        &quot;approveTime&quot;: &quot;A String&quot;, # The time at which approval was granted.
        &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
      },
      &quot;dismiss&quot;: { # A decision that has been made to dismiss an approval request. # The request was dismissed.
        &quot;dismissTime&quot;: &quot;A String&quot;, # The time at which the approval request was dismissed.
        &quot;implicit&quot;: True or False, # This field will be true if the ApprovalRequest was implcitly dismissed due to inaction by the access approval approvers (the request is not acted on by the approvers before the exiration time).
      },
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the request. Format is &quot;{projects|folders|organizations}/{id}/approvalRequests/{approval_request}&quot;.
      &quot;requestTime&quot;: &quot;A String&quot;, # The time at which approval was requested.
      &quot;requestedExpiration&quot;: &quot;A String&quot;, # The requested expiration for the approval. If the request is approved, access will be granted from the time of approval until the expiration time.
      &quot;requestedLocations&quot;: { # Home office and physical location of the principal. # The locations for which approval is being requested.
        &quot;principalOfficeCountry&quot;: &quot;A String&quot;, # The &quot;home office&quot; location of the principal. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
        &quot;principalPhysicalLocationCountry&quot;: &quot;A String&quot;, # Physical location of the principal at the time of the access. A two-letter country code (ISO 3166-1 alpha-2), such as &quot;US&quot;, &quot;DE&quot; or &quot;GB&quot; or a region code. In some limited situations Google systems may refer refer to a region code instead of a country code. Possible Region Codes: * ASI: Asia * EUR: Europe * OCE: Oceania * AFR: Africa * NAM: North America * SAM: South America * ANT: Antarctica * ANY: Any location
      },
      &quot;requestedReason&quot;: { # The justification for which approval is being requested.
        &quot;detail&quot;: &quot;A String&quot;, # More detail about certain reason types. See comments for each type above.
        &quot;type&quot;: &quot;A String&quot;, # Type of access justification.
      },
      &quot;requestedResourceName&quot;: &quot;A String&quot;, # The resource for which approval is being requested. The format of the resource name is defined at https://cloud.google.com/apis/design/resource_names. The resource name here may either be a &quot;full&quot; resource name (e.g. &quot;//library.googleapis.com/shelves/shelf1/books/book2&quot;) or a &quot;relative&quot; resource name (e.g. &quot;shelves/shelf1/books/book2&quot;) as described in the resource name specification.
      &quot;requestedResourceProperties&quot;: { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
        &quot;excludesDescendants&quot;: True or False, # Whether an approval will exclude the descendants of the resource being requested.
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more.
}</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>