<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="admin_directory_v1.html">Admin SDK API</a> . <a href="admin_directory_v1.asps.html">asps</a></h1>
<h2>Instance Methods</h2>
<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="#delete">delete(userKey, codeId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an ASP issued by a user.</p>
<p class="toc_element">
  <code><a href="#get">get(userKey, codeId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets information about an ASP issued by a user.</p>
<p class="toc_element">
  <code><a href="#list">list(userKey, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the ASPs issued by a user.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(userKey, codeId, x__xgafv=None)</code>
  <pre>Deletes an ASP issued by a user.

Args:
  userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
  codeId: integer, The unique ID of the ASP to be deleted. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(userKey, codeId, x__xgafv=None)</code>
  <pre>Gets information about an ASP issued by a user.

Args:
  userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
  codeId: integer, The unique ID of the ASP. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An application-specific password (ASP) is used with applications that do not accept a verification code when logging into the application on certain devices. The ASP access code is used instead of the login and password you commonly use when accessing an application through a browser. For more information about ASPs and how to create one, see the [help center](https://support.google.com/a/answer/2537800#asp).
  &quot;codeId&quot;: 42, # The unique ID of the ASP.
  &quot;creationTime&quot;: &quot;A String&quot;, # The time when the ASP was created. Expressed in [Unix time](https://en.wikipedia.org/wiki/Epoch_time) format.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the ASP.
  &quot;kind&quot;: &quot;admin#directory#asp&quot;, # The type of the API resource. This is always `admin#directory#asp`.
  &quot;lastTimeUsed&quot;: &quot;A String&quot;, # The time when the ASP was last used. Expressed in [Unix time](https://en.wikipedia.org/wiki/Epoch_time) format.
  &quot;name&quot;: &quot;A String&quot;, # The name of the application that the user, represented by their `userId`, entered when the ASP was created.
  &quot;userKey&quot;: &quot;A String&quot;, # The unique ID of the user who issued the ASP.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userKey, x__xgafv=None)</code>
  <pre>Lists the ASPs issued by a user.

Args:
  userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;items&quot;: [ # A list of ASP resources.
    { # An application-specific password (ASP) is used with applications that do not accept a verification code when logging into the application on certain devices. The ASP access code is used instead of the login and password you commonly use when accessing an application through a browser. For more information about ASPs and how to create one, see the [help center](https://support.google.com/a/answer/2537800#asp).
      &quot;codeId&quot;: 42, # The unique ID of the ASP.
      &quot;creationTime&quot;: &quot;A String&quot;, # The time when the ASP was created. Expressed in [Unix time](https://en.wikipedia.org/wiki/Epoch_time) format.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the ASP.
      &quot;kind&quot;: &quot;admin#directory#asp&quot;, # The type of the API resource. This is always `admin#directory#asp`.
      &quot;lastTimeUsed&quot;: &quot;A String&quot;, # The time when the ASP was last used. Expressed in [Unix time](https://en.wikipedia.org/wiki/Epoch_time) format.
      &quot;name&quot;: &quot;A String&quot;, # The name of the application that the user, represented by their `userId`, entered when the ASP was created.
      &quot;userKey&quot;: &quot;A String&quot;, # The unique ID of the user who issued the ASP.
    },
  ],
  &quot;kind&quot;: &quot;admin#directory#aspList&quot;, # The type of the API resource. This is always `admin#directory#aspList`.
}</pre>
</div>

</body></html>