<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(previous_request, previous_response)</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(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>

<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>