<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="storage_v1.html">Cloud Storage JSON API</a> . <a href="storage_v1.projects.html">projects</a> . <a href="storage_v1.projects.hmacKeys.html">hmacKeys</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="#create">create(projectId, serviceAccountEmail, userProject=None)</a></code></p>
<p class="firstline">Creates a new HMAC key for the specified service account.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, accessId, userProject=None)</a></code></p>
<p class="firstline">Deletes an HMAC key.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, accessId, userProject=None)</a></code></p>
<p class="firstline">Retrieves an HMAC key's metadata</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, maxResults=None, pageToken=None, serviceAccountEmail=None, showDeletedKeys=None, userProject=None)</a></code></p>
<p class="firstline">Retrieves a list of HMAC keys matching the criteria.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, accessId, body=None, userProject=None)</a></code></p>
<p class="firstline">Updates the state of an HMAC key. See the HMAC Key resource descriptor for valid states.</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="create">create(projectId, serviceAccountEmail, userProject=None)</code>
  <pre>Creates a new HMAC key for the specified service account.

Args:
  projectId: string, Project ID owning the service account. (required)
  serviceAccountEmail: string, Email address of the service account. (required)
  userProject: string, The project to be billed for this request.

Returns:
  An object of the form:

    { # JSON template to produce a JSON-style HMAC Key resource for Create responses.
  &quot;kind&quot;: &quot;storage#hmacKey&quot;, # The kind of item this is. For HMAC keys, this is always storage#hmacKey.
  &quot;metadata&quot;: { # JSON template to produce a JSON-style HMAC Key metadata resource. # Key metadata.
    &quot;accessId&quot;: &quot;A String&quot;, # The ID of the HMAC Key.
    &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the HMAC key.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the HMAC key, including the Project ID and the Access ID.
    &quot;kind&quot;: &quot;storage#hmacKeyMetadata&quot;, # The kind of item this is. For HMAC Key metadata, this is always storage#hmacKeyMetadata.
    &quot;projectId&quot;: &quot;A String&quot;, # Project ID owning the service account to which the key authenticates.
    &quot;selfLink&quot;: &quot;A String&quot;, # The link to this resource.
    &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the key&#x27;s associated service account.
    &quot;state&quot;: &quot;A String&quot;, # The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED.
    &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the HMAC key in RFC 3339 format.
    &quot;updated&quot;: &quot;A String&quot;, # The last modification time of the HMAC key metadata in RFC 3339 format.
  },
  &quot;secret&quot;: &quot;A String&quot;, # HMAC secret key material.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectId, accessId, userProject=None)</code>
  <pre>Deletes an HMAC key.

Args:
  projectId: string, Project ID owning the requested key (required)
  accessId: string, Name of the HMAC key to be deleted. (required)
  userProject: string, The project to be billed for this request.
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, accessId, userProject=None)</code>
  <pre>Retrieves an HMAC key&#x27;s metadata

Args:
  projectId: string, Project ID owning the service account of the requested key. (required)
  accessId: string, Name of the HMAC key. (required)
  userProject: string, The project to be billed for this request.

Returns:
  An object of the form:

    { # JSON template to produce a JSON-style HMAC Key metadata resource.
  &quot;accessId&quot;: &quot;A String&quot;, # The ID of the HMAC Key.
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the HMAC key.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the HMAC key, including the Project ID and the Access ID.
  &quot;kind&quot;: &quot;storage#hmacKeyMetadata&quot;, # The kind of item this is. For HMAC Key metadata, this is always storage#hmacKeyMetadata.
  &quot;projectId&quot;: &quot;A String&quot;, # Project ID owning the service account to which the key authenticates.
  &quot;selfLink&quot;: &quot;A String&quot;, # The link to this resource.
  &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the key&#x27;s associated service account.
  &quot;state&quot;: &quot;A String&quot;, # The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the HMAC key in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The last modification time of the HMAC key metadata in RFC 3339 format.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, maxResults=None, pageToken=None, serviceAccountEmail=None, showDeletedKeys=None, userProject=None)</code>
  <pre>Retrieves a list of HMAC keys matching the criteria.

Args:
  projectId: string, Name of the project in which to look for HMAC keys. (required)
  maxResults: integer, Maximum number of items to return in a single page of responses. The service uses this parameter or 250 items, whichever is smaller. The max number of items per page will also be limited by the number of distinct service accounts in the response. If the number of service accounts in a single response is too high, the page will truncated and a next page token will be returned.
  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
  serviceAccountEmail: string, If present, only keys for the given service account are returned.
  showDeletedKeys: boolean, Whether or not to show keys in the DELETED state.
  userProject: string, The project to be billed for this request.

Returns:
  An object of the form:

    { # A list of hmacKeys.
  &quot;items&quot;: [ # The list of items.
    { # JSON template to produce a JSON-style HMAC Key metadata resource.
      &quot;accessId&quot;: &quot;A String&quot;, # The ID of the HMAC Key.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the HMAC key.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the HMAC key, including the Project ID and the Access ID.
      &quot;kind&quot;: &quot;storage#hmacKeyMetadata&quot;, # The kind of item this is. For HMAC Key metadata, this is always storage#hmacKeyMetadata.
      &quot;projectId&quot;: &quot;A String&quot;, # Project ID owning the service account to which the key authenticates.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this resource.
      &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the key&#x27;s associated service account.
      &quot;state&quot;: &quot;A String&quot;, # The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED.
      &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the HMAC key in RFC 3339 format.
      &quot;updated&quot;: &quot;A String&quot;, # The last modification time of the HMAC key metadata in RFC 3339 format.
    },
  ],
  &quot;kind&quot;: &quot;storage#hmacKeysMetadata&quot;, # The kind of item this is. For lists of hmacKeys, this is always storage#hmacKeysMetadata.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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>

<div class="method">
    <code class="details" id="update">update(projectId, accessId, body=None, userProject=None)</code>
  <pre>Updates the state of an HMAC key. See the HMAC Key resource descriptor for valid states.

Args:
  projectId: string, Project ID owning the service account of the updated key. (required)
  accessId: string, Name of the HMAC key being updated. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template to produce a JSON-style HMAC Key metadata resource.
  &quot;accessId&quot;: &quot;A String&quot;, # The ID of the HMAC Key.
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the HMAC key.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the HMAC key, including the Project ID and the Access ID.
  &quot;kind&quot;: &quot;storage#hmacKeyMetadata&quot;, # The kind of item this is. For HMAC Key metadata, this is always storage#hmacKeyMetadata.
  &quot;projectId&quot;: &quot;A String&quot;, # Project ID owning the service account to which the key authenticates.
  &quot;selfLink&quot;: &quot;A String&quot;, # The link to this resource.
  &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the key&#x27;s associated service account.
  &quot;state&quot;: &quot;A String&quot;, # The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the HMAC key in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The last modification time of the HMAC key metadata in RFC 3339 format.
}

  userProject: string, The project to be billed for this request.

Returns:
  An object of the form:

    { # JSON template to produce a JSON-style HMAC Key metadata resource.
  &quot;accessId&quot;: &quot;A String&quot;, # The ID of the HMAC Key.
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the HMAC key.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the HMAC key, including the Project ID and the Access ID.
  &quot;kind&quot;: &quot;storage#hmacKeyMetadata&quot;, # The kind of item this is. For HMAC Key metadata, this is always storage#hmacKeyMetadata.
  &quot;projectId&quot;: &quot;A String&quot;, # Project ID owning the service account to which the key authenticates.
  &quot;selfLink&quot;: &quot;A String&quot;, # The link to this resource.
  &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the key&#x27;s associated service account.
  &quot;state&quot;: &quot;A String&quot;, # The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the HMAC key in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The last modification time of the HMAC key metadata in RFC 3339 format.
}</pre>
</div>

</body></html>