<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.organizations.html">organizations</a> . <a href="accessapproval_v1.organizations.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;autoApproved&quot;: True or False, # True when the request has been auto-approved.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
    &quot;signatureInfo&quot;: { # Information about the digital signature of the resource. # The signature for the ApprovalRequest and details on how it was signed.
      &quot;customerKmsKeyVersion&quot;: &quot;A String&quot;, # The resource name of the customer CryptoKeyVersion used for signing.
      &quot;googlePublicKeyPem&quot;: &quot;A String&quot;, # The public key for the Google default signing, encoded in PEM format. The signature was created using a private key which may be verified using this public key.
      &quot;signature&quot;: &quot;A String&quot;, # The digital signature.
    },
  },
  &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 implicitly 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;autoApproved&quot;: True or False, # True when the request has been auto-approved.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
    &quot;signatureInfo&quot;: { # Information about the digital signature of the resource. # The signature for the ApprovalRequest and details on how it was signed.
      &quot;customerKmsKeyVersion&quot;: &quot;A String&quot;, # The resource name of the customer CryptoKeyVersion used for signing.
      &quot;googlePublicKeyPem&quot;: &quot;A String&quot;, # The public key for the Google default signing, encoded in PEM format. The signature was created using a private key which may be verified using this public key.
      &quot;signature&quot;: &quot;A String&quot;, # The digital signature.
    },
  },
  &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 implicitly 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, The name of the approval request to retrieve. Format: &quot;{projects|folders|organizations}/{id}/approvalRequests/{approval_request}&quot; (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;autoApproved&quot;: True or False, # True when the request has been auto-approved.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
    &quot;signatureInfo&quot;: { # Information about the digital signature of the resource. # The signature for the ApprovalRequest and details on how it was signed.
      &quot;customerKmsKeyVersion&quot;: &quot;A String&quot;, # The resource name of the customer CryptoKeyVersion used for signing.
      &quot;googlePublicKeyPem&quot;: &quot;A String&quot;, # The public key for the Google default signing, encoded in PEM format. The signature was created using a private key which may be verified using this public key.
      &quot;signature&quot;: &quot;A String&quot;, # The digital signature.
    },
  },
  &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 implicitly 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;autoApproved&quot;: True or False, # True when the request has been auto-approved.
        &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the approval expires.
        &quot;signatureInfo&quot;: { # Information about the digital signature of the resource. # The signature for the ApprovalRequest and details on how it was signed.
          &quot;customerKmsKeyVersion&quot;: &quot;A String&quot;, # The resource name of the customer CryptoKeyVersion used for signing.
          &quot;googlePublicKeyPem&quot;: &quot;A String&quot;, # The public key for the Google default signing, encoded in PEM format. The signature was created using a private key which may be verified using this public key.
          &quot;signature&quot;: &quot;A String&quot;, # The digital signature.
        },
      },
      &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 implicitly 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>