<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, x__xgafv=None)</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, x__xgafv=None)</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, x__xgafv=None)</a></code></p>
<p class="firstline">Insert (upload) the given S/MIME config for the specified send-as alias.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, sendAsEmail, x__xgafv=None)</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, x__xgafv=None)</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, x__xgafv=None)</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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(userId, sendAsEmail, id, x__xgafv=None)</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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An S/MIME email config.
    &quot;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
    &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
    &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;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
    &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.
    &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
    &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(userId, sendAsEmail, body=None, x__xgafv=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;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
  &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
  &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;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
  &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.
  &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
  &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An S/MIME email config.
    &quot;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
    &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
    &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;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
    &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.
    &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
    &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, sendAsEmail, x__xgafv=None)</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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;smimeInfo&quot;: [ # List of SmimeInfo.
      { # An S/MIME email config.
        &quot;isDefault&quot;: True or False, # Whether this SmimeInfo is the default one for this user&#x27;s send-as address.
        &quot;id&quot;: &quot;A String&quot;, # The immutable ID for the SmimeInfo.
        &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;expiration&quot;: &quot;A String&quot;, # When the certificate expires (in milliseconds since epoch).
        &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.
        &quot;encryptedKeyPassword&quot;: &quot;A String&quot;, # Encrypted key password, when key is encrypted.
        &quot;issuerCn&quot;: &quot;A String&quot;, # The S/MIME certificate issuer&#x27;s common name.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="setDefault">setDefault(userId, sendAsEmail, id, x__xgafv=None)</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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

</body></html>