<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="appengine_v1beta.html">App Engine Admin API</a> . <a href="appengine_v1beta.apps.html">apps</a> . <a href="appengine_v1beta.apps.authorizedCertificates.html">authorizedCertificates</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(appsId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads the specified SSL certificate.</p>
<p class="toc_element">
  <code><a href="#delete">delete(appsId, authorizedCertificatesId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified SSL certificate.</p>
<p class="toc_element">
  <code><a href="#get">get(appsId, authorizedCertificatesId, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified SSL certificate.</p>
<p class="toc_element">
  <code><a href="#list">list(appsId, pageSize=None, pageToken=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all SSL certificates the user is authorized to administer.</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="#patch">patch(appsId, authorizedCertificatesId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.</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(appsId, body=None, x__xgafv=None)</code>
  <pre>Uploads the specified SSL certificate.

Args:
  appsId: string, Part of `parent`. Name of the parent Application resource. Example: apps/myapp. (required)
  body: object, The request body.
    The object takes the form of:

{ # An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.
  &quot;certificateRawData&quot;: { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
    &quot;privateKey&quot;: &quot;A String&quot;, # Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly
    &quot;publicCertificate&quot;: &quot;A String&quot;, # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
  &quot;domainMappingsCount&quot;: 42, # Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
  &quot;domainNames&quot;: [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
    &quot;A String&quot;,
  ],
  &quot;expireTime&quot;: &quot;A String&quot;, # The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly
  &quot;id&quot;: &quot;A String&quot;, # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
  &quot;managedCertificate&quot;: { # A certificate managed by App Engine. # Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly
    &quot;lastRenewalTime&quot;: &quot;A String&quot;, # Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly
    &quot;status&quot;: &quot;A String&quot;, # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
  },
  &quot;name&quot;: &quot;A String&quot;, # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
  &quot;visibleDomainMappings&quot;: [ # The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.
  &quot;certificateRawData&quot;: { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
    &quot;privateKey&quot;: &quot;A String&quot;, # Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly
    &quot;publicCertificate&quot;: &quot;A String&quot;, # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
  &quot;domainMappingsCount&quot;: 42, # Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
  &quot;domainNames&quot;: [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
    &quot;A String&quot;,
  ],
  &quot;expireTime&quot;: &quot;A String&quot;, # The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly
  &quot;id&quot;: &quot;A String&quot;, # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
  &quot;managedCertificate&quot;: { # A certificate managed by App Engine. # Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly
    &quot;lastRenewalTime&quot;: &quot;A String&quot;, # Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly
    &quot;status&quot;: &quot;A String&quot;, # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
  },
  &quot;name&quot;: &quot;A String&quot;, # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
  &quot;visibleDomainMappings&quot;: [ # The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(appsId, authorizedCertificatesId, x__xgafv=None)</code>
  <pre>Deletes the specified SSL certificate.

Args:
  appsId: string, Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345. (required)
  authorizedCertificatesId: string, Part of `name`. See documentation of `appsId`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 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(appsId, authorizedCertificatesId, view=None, x__xgafv=None)</code>
  <pre>Gets the specified SSL certificate.

Args:
  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345. (required)
  authorizedCertificatesId: string, Part of `name`. See documentation of `appsId`. (required)
  view: string, Controls the set of fields returned in the GET response.
    Allowed values
      BASIC_CERTIFICATE - Basic certificate information, including applicable domains and expiration date.
      FULL_CERTIFICATE - The information from BASIC_CERTIFICATE, plus detailed information on the domain mappings that have this certificate mapped.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.
  &quot;certificateRawData&quot;: { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
    &quot;privateKey&quot;: &quot;A String&quot;, # Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly
    &quot;publicCertificate&quot;: &quot;A String&quot;, # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
  &quot;domainMappingsCount&quot;: 42, # Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
  &quot;domainNames&quot;: [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
    &quot;A String&quot;,
  ],
  &quot;expireTime&quot;: &quot;A String&quot;, # The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly
  &quot;id&quot;: &quot;A String&quot;, # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
  &quot;managedCertificate&quot;: { # A certificate managed by App Engine. # Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly
    &quot;lastRenewalTime&quot;: &quot;A String&quot;, # Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly
    &quot;status&quot;: &quot;A String&quot;, # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
  },
  &quot;name&quot;: &quot;A String&quot;, # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
  &quot;visibleDomainMappings&quot;: [ # The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(appsId, pageSize=None, pageToken=None, view=None, x__xgafv=None)</code>
  <pre>Lists all SSL certificates the user is authorized to administer.

Args:
  appsId: string, Part of `parent`. Name of the parent Application resource. Example: apps/myapp. (required)
  pageSize: integer, Maximum results to return per page.
  pageToken: string, Continuation token for fetching the next page of results.
  view: string, Controls the set of fields returned in the LIST response.
    Allowed values
      BASIC_CERTIFICATE - Basic certificate information, including applicable domains and expiration date.
      FULL_CERTIFICATE - The information from BASIC_CERTIFICATE, plus detailed information on the domain mappings that have this certificate mapped.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for AuthorizedCertificates.ListAuthorizedCertificates.
  &quot;certificates&quot;: [ # The SSL certificates the user is authorized to administer.
    { # An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.
      &quot;certificateRawData&quot;: { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
        &quot;privateKey&quot;: &quot;A String&quot;, # Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly
        &quot;publicCertificate&quot;: &quot;A String&quot;, # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
      },
      &quot;displayName&quot;: &quot;A String&quot;, # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
      &quot;domainMappingsCount&quot;: 42, # Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
      &quot;domainNames&quot;: [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
        &quot;A String&quot;,
      ],
      &quot;expireTime&quot;: &quot;A String&quot;, # The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly
      &quot;id&quot;: &quot;A String&quot;, # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
      &quot;managedCertificate&quot;: { # A certificate managed by App Engine. # Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly
        &quot;lastRenewalTime&quot;: &quot;A String&quot;, # Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly
        &quot;status&quot;: &quot;A String&quot;, # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
      },
      &quot;name&quot;: &quot;A String&quot;, # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
      &quot;visibleDomainMappings&quot;: [ # The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token for fetching 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="patch">patch(appsId, authorizedCertificatesId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.

Args:
  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345. (required)
  authorizedCertificatesId: string, Part of `name`. See documentation of `appsId`. (required)
  body: object, The request body.
    The object takes the form of:

{ # An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.
  &quot;certificateRawData&quot;: { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
    &quot;privateKey&quot;: &quot;A String&quot;, # Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly
    &quot;publicCertificate&quot;: &quot;A String&quot;, # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
  &quot;domainMappingsCount&quot;: 42, # Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
  &quot;domainNames&quot;: [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
    &quot;A String&quot;,
  ],
  &quot;expireTime&quot;: &quot;A String&quot;, # The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly
  &quot;id&quot;: &quot;A String&quot;, # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
  &quot;managedCertificate&quot;: { # A certificate managed by App Engine. # Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly
    &quot;lastRenewalTime&quot;: &quot;A String&quot;, # Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly
    &quot;status&quot;: &quot;A String&quot;, # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
  },
  &quot;name&quot;: &quot;A String&quot;, # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
  &quot;visibleDomainMappings&quot;: [ # The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
    &quot;A String&quot;,
  ],
}

  updateMask: string, Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.
  &quot;certificateRawData&quot;: { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
    &quot;privateKey&quot;: &quot;A String&quot;, # Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly
    &quot;publicCertificate&quot;: &quot;A String&quot;, # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
  &quot;domainMappingsCount&quot;: 42, # Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
  &quot;domainNames&quot;: [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
    &quot;A String&quot;,
  ],
  &quot;expireTime&quot;: &quot;A String&quot;, # The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly
  &quot;id&quot;: &quot;A String&quot;, # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
  &quot;managedCertificate&quot;: { # A certificate managed by App Engine. # Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly
    &quot;lastRenewalTime&quot;: &quot;A String&quot;, # Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly
    &quot;status&quot;: &quot;A String&quot;, # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
  },
  &quot;name&quot;: &quot;A String&quot;, # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
  &quot;visibleDomainMappings&quot;: [ # The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>