<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="iam_v1.html">Google Identity and Access Management API</a> . <a href="iam_v1.projects.html">projects</a> . <a href="iam_v1.projects.serviceAccounts.html">serviceAccounts</a> . <a href="iam_v1.projects.serviceAccounts.keys.html">keys</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(name, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a service account key and returns it.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a service account key.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the ServiceAccountKey by key id.</p>
<p class="toc_element">
  <code><a href="#list">list(name, keyTypes=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists service account keys</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(name, body, x__xgafv=None)</code>
  <pre>Creates a service account key and returns it.

Args:
  name: string, The resource name of the service account in the format "projects/{project}/serviceAccounts/{account}". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The service account key create request.
    "privateKeyType": "A String", # The type of the key requested. GOOGLE_CREDENTIALS is the default key type.
  }

  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # Represents a service account key. A service account can have 0 or more key pairs. The private keys for these are not stored by Google. ServiceAccountKeys are immutable.
    "privateKeyType": "A String", # The type of the private key.
    "privateKeyData": "A String", # The key data.
    "validBeforeTime": "A String", # The key can be used before this timestamp.
    "name": "A String", # The resource name of the service account key in the format "projects/{project}/serviceAccounts/{email}/keys/{key}".
    "validAfterTime": "A String", # The key can be used after this timestamp.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a service account key.

Args:
  name: string, The resource name of the service account key in the format "projects/{project}/serviceAccounts/{account}/keys/{key}". Using '-' as a wildcard for the project will infer the project from the account. The account value can be the email address or the unique_id of the service account. (required)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets the ServiceAccountKey by key id.

Args:
  name: string, The resource name of the service account key in the format "projects/{project}/serviceAccounts/{account}/keys/{key}". Using '-' as a wildcard for the project will infer the project from the account. The account value can be the email address or the unique_id of the service account. (required)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # Represents a service account key. A service account can have 0 or more key pairs. The private keys for these are not stored by Google. ServiceAccountKeys are immutable.
    "privateKeyType": "A String", # The type of the private key.
    "privateKeyData": "A String", # The key data.
    "validBeforeTime": "A String", # The key can be used before this timestamp.
    "name": "A String", # The resource name of the service account key in the format "projects/{project}/serviceAccounts/{email}/keys/{key}".
    "validAfterTime": "A String", # The key can be used after this timestamp.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(name, keyTypes=None, x__xgafv=None)</code>
  <pre>Lists service account keys

Args:
  name: string, The resource name of the service account in the format "projects/{project}/serviceAccounts/{account}". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account. (required)
  keyTypes: string, The type of keys the user wants to list. If empty, all key types are included in the response. Duplicate key types are not allowed. (repeated)
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # The service account keys list response.
    "keys": [ # The public keys for the service account.
      { # Represents a service account key. A service account can have 0 or more key pairs. The private keys for these are not stored by Google. ServiceAccountKeys are immutable.
        "privateKeyType": "A String", # The type of the private key.
        "privateKeyData": "A String", # The key data.
        "validBeforeTime": "A String", # The key can be used before this timestamp.
        "name": "A String", # The resource name of the service account key in the format "projects/{project}/serviceAccounts/{email}/keys/{key}".
        "validAfterTime": "A String", # The key can be used after this timestamp.
      },
    ],
  }</pre>
</div>

</body></html>