<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, pageToken=None, pageSize=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;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
    &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;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
      &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
        &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
        &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
      },
      &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;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
      &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
      &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
        &quot;A String&quot;,
      ],
    },
    &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
    &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
  }

  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;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
      &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;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
          &quot;A String&quot;,
        ],
        &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
        &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
          &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
          &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
        },
        &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;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
        &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
        &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
          &quot;A String&quot;,
        ],
      },
      &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
      &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
    }</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;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
      &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;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
          &quot;A String&quot;,
        ],
        &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
        &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
          &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
          &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
        },
        &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;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
        &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
        &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
          &quot;A String&quot;,
        ],
      },
      &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
      &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, pageSize=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)
  pageToken: string, The next_page_token from a previous request, if provided.
  pageSize: integer, The page size to return. Defaults to 50.
  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;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
          &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;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
              &quot;A String&quot;,
            ],
            &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
            &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
              &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
              &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
            },
            &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;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
            &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
            &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
              &quot;A String&quot;,
            ],
          },
          &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
          &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
        },
    ],
  }</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;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
    &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;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
        &quot;A String&quot;,
      ],
      &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
      &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
        &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
        &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
      },
      &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;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
      &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
      &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
        &quot;A String&quot;,
      ],
    },
    &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
    &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
  }

  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;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the domain was last updated.
      &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;discoveredIps&quot;: [ # The IPs found at the last DNS fetch.
          &quot;A String&quot;,
        ],
        &quot;certStatus&quot;: &quot;A String&quot;, # The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain.
        &quot;certChallengeHttp&quot;: { # Represents an HTTP certificate challenge. # The HTTP challenge for generating a certificate.
          &quot;token&quot;: &quot;A String&quot;, # The token to serve at the specified URL path to satisfy the certificate challenge.
          &quot;path&quot;: &quot;A String&quot;, # The URL path on which to serve the specified token to satisfy the certificate challenge.
        },
        &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;dnsStatus&quot;: &quot;A String&quot;, # The DNS record match status as of the last DNS fetch.
        &quot;dnsFetchTime&quot;: &quot;A String&quot;, # The time at which the last DNS fetch occurred.
        &quot;expectedIps&quot;: [ # The list of IPs to which the domain is expected to resolve.
          &quot;A String&quot;,
        ],
      },
      &quot;status&quot;: &quot;A String&quot;, # Output only. Additional status of the domain association.
      &quot;domainName&quot;: &quot;A String&quot;, # Required. The domain name of the association.
    }</pre>
</div>

</body></html>