<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="gmail_v1.html">Gmail API</a> . <a href="gmail_v1.users.html">users</a> . <a href="gmail_v1.users.settings.html">settings</a> . <a href="gmail_v1.users.settings.sendAs.html">sendAs</a> . <a href="gmail_v1.users.settings.sendAs.smimeInfo.html">smimeInfo</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(userId, sendAsEmail, id)</a></code></p>
<p class="firstline">Deletes the specified S/MIME config for the specified send-as alias.</p>
<p class="toc_element">
  <code><a href="#get">get(userId, sendAsEmail, id)</a></code></p>
<p class="firstline">Gets the specified S/MIME config for the specified send-as alias.</p>
<p class="toc_element">
  <code><a href="#insert">insert(userId, sendAsEmail, body=None)</a></code></p>
<p class="firstline">Insert (upload) the given S/MIME config for the specified send-as alias. Note that pkcs12 format is required for the key.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, sendAsEmail)</a></code></p>
<p class="firstline">Lists S/MIME configs for the specified send-as alias.</p>
<p class="toc_element">
  <code><a href="#setDefault">setDefault(userId, sendAsEmail, id)</a></code></p>
<p class="firstline">Sets the default S/MIME config for the specified send-as alias.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(userId, sendAsEmail, id)</code>
  <pre>Deletes the specified S/MIME config for the specified send-as alias.

Args:
  userId: string, The user&#x27;s email address. The special value me can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The email address that appears in the &quot;From:&quot; header for mail sent using this alias. (required)
  id: string, The immutable ID for the SmimeInfo. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(userId, sendAsEmail, id)</code>
  <pre>Gets the specified S/MIME config for the specified send-as alias.

Args:
  userId: string, The user&#x27;s email address. The special value me can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The email address that appears in the &quot;From:&quot; header for mail sent using this alias. (required)
  id: string, The immutable ID for the SmimeInfo. (required)

Returns:
  An object of the form:

    { # An S/MIME email config.
    &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
    &quot;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
    &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
    &quot;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
    &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
    &quot;pem&quot;: &quot;A String&quot;, # PEM formatted X509 concatenated certificate string (standard base64 encoding). Format used for returning key, which includes public key as well as certificate chain (not private key).
    &quot;pkcs12&quot;: &quot;A String&quot;, # PKCS#12 format containing a single private/public key pair and certificate chain. This format is only accepted from client for creating a new SmimeInfo and is never returned, because the private key is not intended to be exported. PKCS#12 may be encrypted, in which case encryptedKeyPassword should be set appropriately.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(userId, sendAsEmail, body=None)</code>
  <pre>Insert (upload) the given S/MIME config for the specified send-as alias. Note that pkcs12 format is required for the key.

Args:
  userId: string, The user&#x27;s email address. The special value me can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The email address that appears in the &quot;From:&quot; header for mail sent using this alias. (required)
  body: object, The request body.
    The object takes the form of:

{ # An S/MIME email config.
  &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
  &quot;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
  &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
  &quot;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
  &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
  &quot;pem&quot;: &quot;A String&quot;, # PEM formatted X509 concatenated certificate string (standard base64 encoding). Format used for returning key, which includes public key as well as certificate chain (not private key).
  &quot;pkcs12&quot;: &quot;A String&quot;, # PKCS#12 format containing a single private/public key pair and certificate chain. This format is only accepted from client for creating a new SmimeInfo and is never returned, because the private key is not intended to be exported. PKCS#12 may be encrypted, in which case encryptedKeyPassword should be set appropriately.
}


Returns:
  An object of the form:

    { # An S/MIME email config.
    &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
    &quot;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
    &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
    &quot;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
    &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
    &quot;pem&quot;: &quot;A String&quot;, # PEM formatted X509 concatenated certificate string (standard base64 encoding). Format used for returning key, which includes public key as well as certificate chain (not private key).
    &quot;pkcs12&quot;: &quot;A String&quot;, # PKCS#12 format containing a single private/public key pair and certificate chain. This format is only accepted from client for creating a new SmimeInfo and is never returned, because the private key is not intended to be exported. PKCS#12 may be encrypted, in which case encryptedKeyPassword should be set appropriately.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, sendAsEmail)</code>
  <pre>Lists S/MIME configs for the specified send-as alias.

Args:
  userId: string, The user&#x27;s email address. The special value me can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The email address that appears in the &quot;From:&quot; header for mail sent using this alias. (required)

Returns:
  An object of the form:

    {
    &quot;smimeInfo&quot;: [ # List of SmimeInfo.
      { # An S/MIME email config.
        &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
        &quot;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
        &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
        &quot;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
        &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
        &quot;pem&quot;: &quot;A String&quot;, # PEM formatted X509 concatenated certificate string (standard base64 encoding). Format used for returning key, which includes public key as well as certificate chain (not private key).
        &quot;pkcs12&quot;: &quot;A String&quot;, # PKCS#12 format containing a single private/public key pair and certificate chain. This format is only accepted from client for creating a new SmimeInfo and is never returned, because the private key is not intended to be exported. PKCS#12 may be encrypted, in which case encryptedKeyPassword should be set appropriately.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="setDefault">setDefault(userId, sendAsEmail, id)</code>
  <pre>Sets the default S/MIME config for the specified send-as alias.

Args:
  userId: string, The user&#x27;s email address. The special value me can be used to indicate the authenticated user. (required)
  sendAsEmail: string, The email address that appears in the &quot;From:&quot; header for mail sent using this alias. (required)
  id: string, The immutable ID for the SmimeInfo. (required)
</pre>
</div>

</body></html>