<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="#create">create(parent, body, 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, x__xgafv=None, pageSize=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, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified domain mapping, creating the mapping as if it does</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(parent, body, 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:
<code>sites/<var>site-name</var></code> (required)
  body: object, The request body. (required)
    The object takes the form of:

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

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

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

Args:
  parent: string, Required. The parent for which to list domains, in the format:
<code>sites/<var>site-name</var></code> (required)
  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
  pageSize: integer, The page size to return. Defaults to 50.

Returns:
  An object of the form:

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

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

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

</body></html>