<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_v1.html">App Engine Admin API</a> . <a href="appengine_v1.apps.html">apps</a> . <a href="appengine_v1.apps.authorizedCertificates.html">authorizedCertificates</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(appsId, body, 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, x__xgafv=None, view=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, x__xgafv=None, view=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, 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="create">create(appsId, body, 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. (required)
    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.
    "displayName": "A String", # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
    "name": "A String", # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
    "domainMappingsCount": 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
    "visibleDomainMappings": [ # 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
      "A String",
    ],
    "expireTime": "A String", # 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
    "certificateRawData": { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
      "privateKey": "A String", # 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: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly
      "publicCertificate": "A String", # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>
    },
    "id": "A String", # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
    "managedCertificate": { # 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
      "status": "A String", # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
      "lastRenewalTime": "A String", # 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
    },
    "domainNames": [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
      "A String",
    ],
  }

  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.
      "displayName": "A String", # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
      "name": "A String", # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
      "domainMappingsCount": 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
      "visibleDomainMappings": [ # 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
        "A String",
      ],
      "expireTime": "A String", # 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
      "certificateRawData": { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
        "privateKey": "A String", # 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: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly
        "publicCertificate": "A String", # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>
      },
      "id": "A String", # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
      "managedCertificate": { # 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
        "status": "A String", # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
        "lastRenewalTime": "A String", # 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
      },
      "domainNames": [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
        "A String",
      ],
    }</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, x__xgafv=None, view=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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Controls the set of fields returned in the GET response.

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.
      "displayName": "A String", # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
      "name": "A String", # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
      "domainMappingsCount": 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
      "visibleDomainMappings": [ # 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
        "A String",
      ],
      "expireTime": "A String", # 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
      "certificateRawData": { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
        "privateKey": "A String", # 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: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly
        "publicCertificate": "A String", # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>
      },
      "id": "A String", # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
      "managedCertificate": { # 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
        "status": "A String", # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
        "lastRenewalTime": "A String", # 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
      },
      "domainNames": [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
        "A String",
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(appsId, pageSize=None, pageToken=None, x__xgafv=None, view=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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Controls the set of fields returned in the LIST response.

Returns:
  An object of the form:

    { # Response message for AuthorizedCertificates.ListAuthorizedCertificates.
    "nextPageToken": "A String", # Continuation token for fetching the next page of results.
    "certificates": [ # 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.
          "displayName": "A String", # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
          "name": "A String", # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
          "domainMappingsCount": 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
          "visibleDomainMappings": [ # 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
            "A String",
          ],
          "expireTime": "A String", # 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
          "certificateRawData": { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
            "privateKey": "A String", # 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: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly
            "publicCertificate": "A String", # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>
          },
          "id": "A String", # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
          "managedCertificate": { # 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
            "status": "A String", # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
            "lastRenewalTime": "A String", # 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
          },
          "domainNames": [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
            "A String",
          ],
        },
    ],
  }</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="patch">patch(appsId, authorizedCertificatesId, body, 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. (required)
    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.
    "displayName": "A String", # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
    "name": "A String", # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
    "domainMappingsCount": 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
    "visibleDomainMappings": [ # 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
      "A String",
    ],
    "expireTime": "A String", # 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
    "certificateRawData": { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
      "privateKey": "A String", # 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: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly
      "publicCertificate": "A String", # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>
    },
    "id": "A String", # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
    "managedCertificate": { # 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
      "status": "A String", # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
      "lastRenewalTime": "A String", # 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
    },
    "domainNames": [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
      "A String",
    ],
  }

  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.
      "displayName": "A String", # The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.
      "name": "A String", # Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly
      "domainMappingsCount": 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
      "visibleDomainMappings": [ # 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
        "A String",
      ],
      "expireTime": "A String", # 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
      "certificateRawData": { # An SSL certificate obtained from a certificate authority. # The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.
        "privateKey": "A String", # 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: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly
        "publicCertificate": "A String", # PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>
      },
      "id": "A String", # Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly
      "managedCertificate": { # 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
        "status": "A String", # Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly
        "lastRenewalTime": "A String", # 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
      },
      "domainNames": [ # Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly
        "A String",
      ],
    }</pre>
</div>

</body></html>