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

<div class="method">
    <code class="details" id="list">list(projectId, pageToken=None, showDeletedKeys=None, userProject=None, maxResults=None, serviceAccountEmail=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)
  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
  showDeletedKeys: boolean, Whether or not to show keys in the DELETED state.
  userProject: string, The project to be billed for this request.
  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.
  serviceAccountEmail: string, If present, only keys for the given service account are returned.

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="update">update(projectId, accessId, body, 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. (required)
    The object takes the form of:

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

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

</body></html>