<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_v1beta1.html">Access Approval API</a> . <a href="accessapproval_v1beta1.projects.html">projects</a> . <a href="accessapproval_v1beta1.projects.approvalRequests.html">approvalRequests</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#approve">approve(name, body, x__xgafv=None)</a></code></p>
<p class="firstline">Approves a request and returns the updated ApprovalRequest.</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.</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, pageSize=None, pageToken=None, x__xgafv=None, filter=None)</a></code></p>
<p class="firstline">Lists approval requests associated with a project, folder, or organization.</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, 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. (required)
    The object takes the form of:

{ # Request to approve an ApprovalRequest.
    "expireTime": "A String", # 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.
    "requestedResourceProperties": { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
      "excludesDescendants": True or False, # Whether an approval will exclude the descendants of the resource being
          # requested.
    },
    "requestTime": "A String", # The time at which approval was requested.
    "requestedExpiration": "A String", # The requested expiration for the approval. If the request is approved,
        # access will be granted from the time of approval until the expiration time.
    "name": "A String", # The resource name of the request. Format is
        # "{projects|folders|organizations}/{id}/approvalRequests/{approval_request_id}".
    "dismiss": { # A decision that has been made to dismiss an approval request. # The request was dismissed.
      "dismissTime": "A String", # The time at which the approval request was dismissed.
    },
    "requestedReason": { # The justification for which approval is being requested.
      "type": "A String", # Type of access justification.
      "detail": "A String", # More detail about certain reason types. See comments for each type above.
    },
    "requestedResourceName": "A String", # 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 "full" resource name (e.g.
        # "//library.googleapis.com/shelves/shelf1/books/book2") or a "relative"
        # resource name (e.g. "shelves/shelf1/books/book2") as described in the
        # resource name specification.
    "approve": { # A decision that has been made to approve access to a resource. # Access was approved.
      "expireTime": "A String", # The time at which the approval expires.
      "approveTime": "A String", # The time at which approval was granted.
    },
    "requestedLocations": { # Home office and physical location of the principal. # The locations for which approval is being requested.
      "principalOfficeCountry": "A String", # The "home office" location of the principal. A two-letter country code
          # (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
          # <ol>
          #   <li>ASI: Asia</li>
          #   <li>EUR: Europe</li>
          #   <li>OCE: Oceania</li>
          #   <li>AFR: Africa</li>
          #   <li>NAM: North America</li>
          #   <li>SAM: South America</li>
          #   <li>ANT: Antarctica</li>
          #   <li>ANY: Any location</li>
          # </ol>
      "principalPhysicalLocationCountry": "A String", # Physical location of the principal at the time of the access. A
          # two-letter country code (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
          # <ol>
          #   <li>ASI: Asia</li>
          #   <li>EUR: Europe</li>
          #   <li>OCE: Oceania</li>
          #   <li>AFR: Africa</li>
          #   <li>NAM: North America</li>
          #   <li>SAM: South America</li>
          #   <li>ANT: Antarctica</li>
          #   <li>ANY: Any location</li>
          # </ol>
    },
  }</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.
    "requestedResourceProperties": { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
      "excludesDescendants": True or False, # Whether an approval will exclude the descendants of the resource being
          # requested.
    },
    "requestTime": "A String", # The time at which approval was requested.
    "requestedExpiration": "A String", # The requested expiration for the approval. If the request is approved,
        # access will be granted from the time of approval until the expiration time.
    "name": "A String", # The resource name of the request. Format is
        # "{projects|folders|organizations}/{id}/approvalRequests/{approval_request_id}".
    "dismiss": { # A decision that has been made to dismiss an approval request. # The request was dismissed.
      "dismissTime": "A String", # The time at which the approval request was dismissed.
    },
    "requestedReason": { # The justification for which approval is being requested.
      "type": "A String", # Type of access justification.
      "detail": "A String", # More detail about certain reason types. See comments for each type above.
    },
    "requestedResourceName": "A String", # 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 "full" resource name (e.g.
        # "//library.googleapis.com/shelves/shelf1/books/book2") or a "relative"
        # resource name (e.g. "shelves/shelf1/books/book2") as described in the
        # resource name specification.
    "approve": { # A decision that has been made to approve access to a resource. # Access was approved.
      "expireTime": "A String", # The time at which the approval expires.
      "approveTime": "A String", # The time at which approval was granted.
    },
    "requestedLocations": { # Home office and physical location of the principal. # The locations for which approval is being requested.
      "principalOfficeCountry": "A String", # The "home office" location of the principal. A two-letter country code
          # (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
          # <ol>
          #   <li>ASI: Asia</li>
          #   <li>EUR: Europe</li>
          #   <li>OCE: Oceania</li>
          #   <li>AFR: Africa</li>
          #   <li>NAM: North America</li>
          #   <li>SAM: South America</li>
          #   <li>ANT: Antarctica</li>
          #   <li>ANY: Any location</li>
          # </ol>
      "principalPhysicalLocationCountry": "A String", # Physical location of the principal at the time of the access. A
          # two-letter country code (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
          # <ol>
          #   <li>ASI: Asia</li>
          #   <li>EUR: Europe</li>
          #   <li>OCE: Oceania</li>
          #   <li>AFR: Africa</li>
          #   <li>NAM: North America</li>
          #   <li>SAM: South America</li>
          #   <li>ANT: Antarctica</li>
          #   <li>ANY: Any location</li>
          # </ol>
    },
  }</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.
    "requestedResourceProperties": { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
      "excludesDescendants": True or False, # Whether an approval will exclude the descendants of the resource being
          # requested.
    },
    "requestTime": "A String", # The time at which approval was requested.
    "requestedExpiration": "A String", # The requested expiration for the approval. If the request is approved,
        # access will be granted from the time of approval until the expiration time.
    "name": "A String", # The resource name of the request. Format is
        # "{projects|folders|organizations}/{id}/approvalRequests/{approval_request_id}".
    "dismiss": { # A decision that has been made to dismiss an approval request. # The request was dismissed.
      "dismissTime": "A String", # The time at which the approval request was dismissed.
    },
    "requestedReason": { # The justification for which approval is being requested.
      "type": "A String", # Type of access justification.
      "detail": "A String", # More detail about certain reason types. See comments for each type above.
    },
    "requestedResourceName": "A String", # 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 "full" resource name (e.g.
        # "//library.googleapis.com/shelves/shelf1/books/book2") or a "relative"
        # resource name (e.g. "shelves/shelf1/books/book2") as described in the
        # resource name specification.
    "approve": { # A decision that has been made to approve access to a resource. # Access was approved.
      "expireTime": "A String", # The time at which the approval expires.
      "approveTime": "A String", # The time at which approval was granted.
    },
    "requestedLocations": { # Home office and physical location of the principal. # The locations for which approval is being requested.
      "principalOfficeCountry": "A String", # The "home office" location of the principal. A two-letter country code
          # (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
          # <ol>
          #   <li>ASI: Asia</li>
          #   <li>EUR: Europe</li>
          #   <li>OCE: Oceania</li>
          #   <li>AFR: Africa</li>
          #   <li>NAM: North America</li>
          #   <li>SAM: South America</li>
          #   <li>ANT: Antarctica</li>
          #   <li>ANY: Any location</li>
          # </ol>
      "principalPhysicalLocationCountry": "A String", # Physical location of the principal at the time of the access. A
          # two-letter country code (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
          # <ol>
          #   <li>ASI: Asia</li>
          #   <li>EUR: Europe</li>
          #   <li>OCE: Oceania</li>
          #   <li>AFR: Africa</li>
          #   <li>NAM: North America</li>
          #   <li>SAM: South America</li>
          #   <li>ANT: Antarctica</li>
          #   <li>ANY: Any location</li>
          # </ol>
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None, filter=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 "projects/{project_id}",
"folders/{folder_id}", or "organizations/{organization_id}". (required)
  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
  filter: string, A filter on the type of approval requests to retrieve. Must be one of the
following values:
<ol>
  <li>[not set]: Requests that are pending or have active approvals.</li>
  <li>ALL: All requests.</li>
  <li>PENDING: Only pending requests.</li>
  <li>ACTIVE: Only active (i.e. currently approved) requests.</li>
  <li>DISMISSED: Only dismissed (including expired) requests.</li>
</ol>

Returns:
  An object of the form:

    { # Response to listing of ApprovalRequest objects.
    "nextPageToken": "A String", # Token to retrieve the next page of results, or empty if there are no more.
    "approvalRequests": [ # Approval request details.
      { # A request for the customer to approve access to a resource.
        "requestedResourceProperties": { # The properties associated with the resource of the request. # Properties related to the resource represented by requested_resource_name.
          "excludesDescendants": True or False, # Whether an approval will exclude the descendants of the resource being
              # requested.
        },
        "requestTime": "A String", # The time at which approval was requested.
        "requestedExpiration": "A String", # The requested expiration for the approval. If the request is approved,
            # access will be granted from the time of approval until the expiration time.
        "name": "A String", # The resource name of the request. Format is
            # "{projects|folders|organizations}/{id}/approvalRequests/{approval_request_id}".
        "dismiss": { # A decision that has been made to dismiss an approval request. # The request was dismissed.
          "dismissTime": "A String", # The time at which the approval request was dismissed.
        },
        "requestedReason": { # The justification for which approval is being requested.
          "type": "A String", # Type of access justification.
          "detail": "A String", # More detail about certain reason types. See comments for each type above.
        },
        "requestedResourceName": "A String", # 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 "full" resource name (e.g.
            # "//library.googleapis.com/shelves/shelf1/books/book2") or a "relative"
            # resource name (e.g. "shelves/shelf1/books/book2") as described in the
            # resource name specification.
        "approve": { # A decision that has been made to approve access to a resource. # Access was approved.
          "expireTime": "A String", # The time at which the approval expires.
          "approveTime": "A String", # The time at which approval was granted.
        },
        "requestedLocations": { # Home office and physical location of the principal. # The locations for which approval is being requested.
          "principalOfficeCountry": "A String", # The "home office" location of the principal. A two-letter country code
              # (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
              # <ol>
              #   <li>ASI: Asia</li>
              #   <li>EUR: Europe</li>
              #   <li>OCE: Oceania</li>
              #   <li>AFR: Africa</li>
              #   <li>NAM: North America</li>
              #   <li>SAM: South America</li>
              #   <li>ANT: Antarctica</li>
              #   <li>ANY: Any location</li>
              # </ol>
          "principalPhysicalLocationCountry": "A String", # Physical location of the principal at the time of the access. A
              # two-letter country code (ISO 3166-1 alpha-2), such as "US", "DE" or "GB" 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:
              # <ol>
              #   <li>ASI: Asia</li>
              #   <li>EUR: Europe</li>
              #   <li>OCE: Oceania</li>
              #   <li>AFR: Africa</li>
              #   <li>NAM: North America</li>
              #   <li>SAM: South America</li>
              #   <li>ANT: Antarctica</li>
              #   <li>ANY: Any location</li>
              # </ol>
        },
      },
    ],
  }</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>