<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.projects.html">projects</a> . <a href="firebasehosting_v1beta1.projects.sites.html">sites</a> . <a href="firebasehosting_v1beta1.projects.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;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;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
  },
  &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;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &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;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;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
    &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
    &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
      &quot;A String&quot;,
    ],
  },
  &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
  &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;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;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
  },
  &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;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &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;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;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
    &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
    &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
      &quot;A String&quot;,
    ],
  },
  &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
  &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;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;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
  },
  &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;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &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;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;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
    &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
    &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
      &quot;A String&quot;,
    ],
  },
  &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
  &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;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;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;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
        &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
      },
      &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;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
          &quot;A String&quot;,
        ],
        &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;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;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
        &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
          &quot;A String&quot;,
        ],
        &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
        &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
        &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
          &quot;A String&quot;,
        ],
      },
      &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
      &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.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The pagination token, if more results exist.
}</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;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;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
  },
  &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;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &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;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;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
    &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
    &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
      &quot;A String&quot;,
    ],
  },
  &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
  &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;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;domainName&quot;: &quot;A String&quot;, # Required. The domain name to redirect to.
    &quot;type&quot;: &quot;A String&quot;, # Required. The redirect status code.
  },
  &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;certChallengeDiscoveredTxt&quot;: [ # The TXT records (for the certificate challenge) that were found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &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;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;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
    &quot;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
      &quot;A String&quot;,
    ],
    &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
    &quot;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
    &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
      &quot;A String&quot;,
    ],
  },
  &quot;site&quot;: &quot;A String&quot;, # Required. The site name of the association.
  &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>