<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="firebasehosting_v1beta1.html">Firebase Hosting API</a> . <a href="firebasehosting_v1beta1.sites.html">sites</a> . <a href="firebasehosting_v1beta1.sites.domains.html">domains</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(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a domain mapping on the specified site.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the existing domain mapping on the specified site.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a domain mapping on the specified site.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the domains for the specified site.</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="#update">update(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified domain mapping, creating the mapping as if it does not exist.</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(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a domain mapping on the specified site.

Args:
  parent: string, Required. The parent to create the domain association for, in the format: sites/site-name (required)
  body: object, The request body.
    The object takes the form of:

{ # The intended behavior and status information of a domain.
  &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
  &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
  &quot;domainRedirect&quot;: { # Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration. # If set, the domain should redirect with the provided parameters.
    &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
    &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
  },
  &quot;provisioning&quot;: { # The current certificate provisioning status information for a domain. # Output only. Information about the provisioning of certificates and the health of the DNS resolution for the domain.
    &quot;certChallengeDns&quot;: { # Represents a DNS certificate challenge. # The DNS challenge for generating a certificate.
      &quot;domainName&quot;: &quot;A String&quot;, # The domain name upon which the DNS challenge must be satisfied.
      &quot;token&quot;: &quot;A String&quot;, # The value that must be present as a TXT record on the domain name to satisfy the challenge.
    },
    &quot;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
      &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
      &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
    },
    &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
      &quot;A String&quot;,
    ],
    &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
    &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
    &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
  },
  &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
}

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

Returns:
  An object of the form:

    { # The intended behavior and status information of a domain.
    &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
    &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
    &quot;domainRedirect&quot;: { # Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration. # If set, the domain should redirect with the provided parameters.
      &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
      &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    },
    &quot;provisioning&quot;: { # The current certificate provisioning status information for a domain. # Output only. Information about the provisioning of certificates and the health of the DNS resolution for the domain.
      &quot;certChallengeDns&quot;: { # Represents a DNS certificate challenge. # The DNS challenge for generating a certificate.
        &quot;domainName&quot;: &quot;A String&quot;, # The domain name upon which the DNS challenge must be satisfied.
        &quot;token&quot;: &quot;A String&quot;, # The value that must be present as a TXT record on the domain name to satisfy the challenge.
      },
      &quot;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
        &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
        &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
      },
      &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
        &quot;A String&quot;,
      ],
      &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
      &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
      &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    },
    &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the existing domain mapping on the specified site.

Args:
  name: string, Required. The name of the domain association to delete. (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(name, x__xgafv=None)</code>
  <pre>Gets a domain mapping on the specified site.

Args:
  name: string, Required. The name of the domain configuration to get. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The intended behavior and status information of a domain.
    &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
    &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
    &quot;domainRedirect&quot;: { # Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration. # If set, the domain should redirect with the provided parameters.
      &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
      &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    },
    &quot;provisioning&quot;: { # The current certificate provisioning status information for a domain. # Output only. Information about the provisioning of certificates and the health of the DNS resolution for the domain.
      &quot;certChallengeDns&quot;: { # Represents a DNS certificate challenge. # The DNS challenge for generating a certificate.
        &quot;domainName&quot;: &quot;A String&quot;, # The domain name upon which the DNS challenge must be satisfied.
        &quot;token&quot;: &quot;A String&quot;, # The value that must be present as a TXT record on the domain name to satisfy the challenge.
      },
      &quot;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
        &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
        &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
      },
      &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
        &quot;A String&quot;,
      ],
      &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
      &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
      &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    },
    &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the domains for the specified site.

Args:
  parent: string, Required. The parent for which to list domains, in the format: sites/ site-name (required)
  pageSize: integer, The page size to return. Defaults to 50.
  pageToken: string, The next_page_token from a previous request, if provided.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response to listing Domains.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The pagination token, if more results exist.
    &quot;domains&quot;: [ # The list of domains, if any exist.
      { # The intended behavior and status information of a domain.
        &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
        &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
        &quot;domainRedirect&quot;: { # Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration. # If set, the domain should redirect with the provided parameters.
          &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
          &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
        },
        &quot;provisioning&quot;: { # The current certificate provisioning status information for a domain. # Output only. Information about the provisioning of certificates and the health of the DNS resolution for the domain.
          &quot;certChallengeDns&quot;: { # Represents a DNS certificate challenge. # The DNS challenge for generating a certificate.
            &quot;domainName&quot;: &quot;A String&quot;, # The domain name upon which the DNS challenge must be satisfied.
            &quot;token&quot;: &quot;A String&quot;, # The value that must be present as a TXT record on the domain name to satisfy the challenge.
          },
          &quot;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
            &quot;A String&quot;,
          ],
          &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
            &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
            &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
          },
          &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
            &quot;A String&quot;,
          ],
          &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
            &quot;A String&quot;,
          ],
          &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
          &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
          &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
        },
        &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
      },
    ],
  }</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="update">update(name, body=None, x__xgafv=None)</code>
  <pre>Updates the specified domain mapping, creating the mapping as if it does not exist.

Args:
  name: string, Required. The name of the domain association to update or create, if an association doesn&#x27;t already exist. (required)
  body: object, The request body.
    The object takes the form of:

{ # The intended behavior and status information of a domain.
  &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
  &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
  &quot;domainRedirect&quot;: { # Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration. # If set, the domain should redirect with the provided parameters.
    &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
    &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
  },
  &quot;provisioning&quot;: { # The current certificate provisioning status information for a domain. # Output only. Information about the provisioning of certificates and the health of the DNS resolution for the domain.
    &quot;certChallengeDns&quot;: { # Represents a DNS certificate challenge. # The DNS challenge for generating a certificate.
      &quot;domainName&quot;: &quot;A String&quot;, # The domain name upon which the DNS challenge must be satisfied.
      &quot;token&quot;: &quot;A String&quot;, # The value that must be present as a TXT record on the domain name to satisfy the challenge.
    },
    &quot;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
      &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
      &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
    },
    &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
      &quot;A String&quot;,
    ],
    &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
    &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
    &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
  },
  &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
}

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

Returns:
  An object of the form:

    { # The intended behavior and status information of a domain.
    &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
    &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
    &quot;domainRedirect&quot;: { # Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration. # If set, the domain should redirect with the provided parameters.
      &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
      &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    },
    &quot;provisioning&quot;: { # The current certificate provisioning status information for a domain. # Output only. Information about the provisioning of certificates and the health of the DNS resolution for the domain.
      &quot;certChallengeDns&quot;: { # Represents a DNS certificate challenge. # The DNS challenge for generating a certificate.
        &quot;domainName&quot;: &quot;A String&quot;, # The domain name upon which the DNS challenge must be satisfied.
        &quot;token&quot;: &quot;A String&quot;, # The value that must be present as a TXT record on the domain name to satisfy the challenge.
      },
      &quot;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
        &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
        &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
      },
      &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
        &quot;A String&quot;,
      ],
      &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
      &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
      &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    },
    &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
  }</pre>
</div>

</body></html>