<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.channels.html">channels</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="firebasehosting_v1beta1.projects.sites.channels.releases.html">releases()</a></code>
</p>
<p class="firstline">Returns the releases Resource.</p>

<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, channelId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new channel in the specified site.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a channel of a site. The `live` channel cannot be deleted.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves information for the specified channel of a 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 channels for the specified site. All sites have a default "live" channel.</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(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates information for the specified channel of a site. This method will implicitly create a channel if it doesn't 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, channelId=None, x__xgafv=None)</code>
  <pre>Creates a new channel in the specified site.

Args:
  parent: string, Required. The site in which this channel should be created. (required)
  body: object, The request body.
    The object takes the form of:

{ # A `Channel` represents a stream of releases for a site. All sites have a default `live` channel that serves content to the live Firebase-provided domains and any connected custom domains.
    &quot;release&quot;: { # A `Release` is a particular [collection of configurations and files](sites.versions) that is set to be public at a particular time. # Output only. The current release for the channel, if any.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier for the release, in the format: sites/ site-name/releases/releaseID This name is provided in the response body when you call the [`CreateRelease`](sites.releases/create) endpoint.
      &quot;message&quot;: &quot;A String&quot;, # The deploy description when the release was created. The value can be up to 512 characters.
      &quot;version&quot;: { # A `Version` is the collection of configuration and [static files](sites.versions.files) that determine how a site is displayed. # Output only. The configuration and content that was released.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was created.
        &quot;preview&quot;: { # Version preview configuration. If active and unexpired, this version will be accessible via a custom URL even if it is not the currently released version. Deprecated in favor of site channels. # Deprecated in favor of site channels. Version preview configuration for the site version. This configuration specifies whether previewing is enabled for this site version. Version previews allow you to preview your site at a custom URL before releasing it as the live version.
          &quot;expireTime&quot;: &quot;A String&quot;, # Indicates the expiration time for previewing this version; preview URL requests received after this time will 404.
          &quot;active&quot;: True or False, # If true, preview URLs are enabled for this version.
        },
        &quot;name&quot;: &quot;A String&quot;, # The unique identifier for a version, in the format: sites/site-name /versions/versionID This name is provided in the response body when you call the [`CreateVersion`](../sites.versions/create) endpoint.
        &quot;finalizeTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `FINALIZED`.
        &quot;status&quot;: &quot;A String&quot;, # The deploy status of a version. For a successful deploy, call the [`CreateVersion`](sites.versions/create) endpoint to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling the [`DeleteVersion`](sites.versions/delete) endpoint.
        &quot;fileCount&quot;: &quot;A String&quot;, # Output only. The total number of files associated with the version. This value is calculated after a version is `FINALIZED`.
        &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `DELETED`.
        &quot;createUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the version.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;deleteUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `DELETED` the version.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;versionBytes&quot;: &quot;A String&quot;, # Output only. The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`.
        &quot;finalizeUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `FINALIZED` the version.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;labels&quot;: { # The labels used for extra metadata and/or filtering.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;config&quot;: { # The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](/docs/hosting/full-config#hosting_priority_order). # The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](/docs/cli/#the_firebasejson_file) file.
          &quot;redirects&quot;: [ # An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
            { # A [`redirect`](/docs/hosting/full-config#redirects) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
              &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              &quot;statusCode&quot;: 42, # Required. The status HTTP code to return in the response. It must be a valid 3xx status code.
              &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
              &quot;location&quot;: &quot;A String&quot;, # Required. The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: &quot;glob&quot;: &quot;/:capture*&quot;, &quot;statusCode&quot;: 301, &quot;location&quot;: &quot;https://example.com/foo/:capture&quot;
            },
          ],
          &quot;appAssociation&quot;: &quot;A String&quot;, # How to handle well known App Association files.
          &quot;trailingSlashBehavior&quot;: &quot;A String&quot;, # Defines how to handle a trailing slash in the URL path.
          &quot;i18n&quot;: { # If provided, i18n rewrites are enabled. # Optional. Defines i18n rewrite behavior.
            &quot;root&quot;: &quot;A String&quot;, # Required. The user-supplied path where country and language specific content will be looked for within the public directory.
          },
          &quot;rewrites&quot;: [ # An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
            { # A [`rewrite`](/docs/hosting/full-config#rewrites) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
              &quot;dynamicLinks&quot;: True or False, # The request will be forwarded to Firebase Dynamic Links.
              &quot;function&quot;: &quot;A String&quot;, # The function to proxy requests to. Must match the exported function name exactly.
              &quot;path&quot;: &quot;A String&quot;, # The URL path to rewrite the request to.
              &quot;run&quot;: { # A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error). # The request will be forwarded to Cloud Run.
                &quot;region&quot;: &quot;A String&quot;, # Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied.
                &quot;serviceId&quot;: &quot;A String&quot;, # Required. User-defined ID of the Cloud Run service.
              },
              &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
              &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
            },
          ],
          &quot;cleanUrls&quot;: True or False, # Defines whether to drop the file extension from uploaded files.
          &quot;headers&quot;: [ # An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
            { # A [`header`](/docs/hosting/full-config#headers) is an object that specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
              &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
              &quot;headers&quot;: { # Required. The additional headers to add to the response.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
            },
          ],
        },
      },
      &quot;type&quot;: &quot;A String&quot;, # Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.
      &quot;releaseUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the release.
        &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
        &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
      },
      &quot;releaseTime&quot;: &quot;A String&quot;, # Output only. The time at which the version is set to be public.
    },
    &quot;url&quot;: &quot;A String&quot;, # Output only. The URL at which the channel can be viewed. For the `live` channel, the content of the current release may also be visible at other URLs.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in output whether set directly or via the `ttl` field.
    &quot;labels&quot;: { # Text labels used for extra metadata and/or filtering.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was last updated.
    &quot;ttl&quot;: &quot;A String&quot;, # Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was created.
    &quot;name&quot;: &quot;A String&quot;, # The fully-qualified identifier of the Channel.
    &quot;retainedReleaseCount&quot;: 42, # The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels.
  }

  channelId: string, Required. Immutable. A unique id within the site to identify the channel.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A `Channel` represents a stream of releases for a site. All sites have a default `live` channel that serves content to the live Firebase-provided domains and any connected custom domains.
      &quot;release&quot;: { # A `Release` is a particular [collection of configurations and files](sites.versions) that is set to be public at a particular time. # Output only. The current release for the channel, if any.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier for the release, in the format: sites/ site-name/releases/releaseID This name is provided in the response body when you call the [`CreateRelease`](sites.releases/create) endpoint.
        &quot;message&quot;: &quot;A String&quot;, # The deploy description when the release was created. The value can be up to 512 characters.
        &quot;version&quot;: { # A `Version` is the collection of configuration and [static files](sites.versions.files) that determine how a site is displayed. # Output only. The configuration and content that was released.
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was created.
          &quot;preview&quot;: { # Version preview configuration. If active and unexpired, this version will be accessible via a custom URL even if it is not the currently released version. Deprecated in favor of site channels. # Deprecated in favor of site channels. Version preview configuration for the site version. This configuration specifies whether previewing is enabled for this site version. Version previews allow you to preview your site at a custom URL before releasing it as the live version.
            &quot;expireTime&quot;: &quot;A String&quot;, # Indicates the expiration time for previewing this version; preview URL requests received after this time will 404.
            &quot;active&quot;: True or False, # If true, preview URLs are enabled for this version.
          },
          &quot;name&quot;: &quot;A String&quot;, # The unique identifier for a version, in the format: sites/site-name /versions/versionID This name is provided in the response body when you call the [`CreateVersion`](../sites.versions/create) endpoint.
          &quot;finalizeTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `FINALIZED`.
          &quot;status&quot;: &quot;A String&quot;, # The deploy status of a version. For a successful deploy, call the [`CreateVersion`](sites.versions/create) endpoint to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling the [`DeleteVersion`](sites.versions/delete) endpoint.
          &quot;fileCount&quot;: &quot;A String&quot;, # Output only. The total number of files associated with the version. This value is calculated after a version is `FINALIZED`.
          &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `DELETED`.
          &quot;createUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;deleteUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `DELETED` the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;versionBytes&quot;: &quot;A String&quot;, # Output only. The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`.
          &quot;finalizeUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `FINALIZED` the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;labels&quot;: { # The labels used for extra metadata and/or filtering.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;config&quot;: { # The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](/docs/hosting/full-config#hosting_priority_order). # The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](/docs/cli/#the_firebasejson_file) file.
            &quot;redirects&quot;: [ # An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
              { # A [`redirect`](/docs/hosting/full-config#redirects) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
                &quot;statusCode&quot;: 42, # Required. The status HTTP code to return in the response. It must be a valid 3xx status code.
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;location&quot;: &quot;A String&quot;, # Required. The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: &quot;glob&quot;: &quot;/:capture*&quot;, &quot;statusCode&quot;: 301, &quot;location&quot;: &quot;https://example.com/foo/:capture&quot;
              },
            ],
            &quot;appAssociation&quot;: &quot;A String&quot;, # How to handle well known App Association files.
            &quot;trailingSlashBehavior&quot;: &quot;A String&quot;, # Defines how to handle a trailing slash in the URL path.
            &quot;i18n&quot;: { # If provided, i18n rewrites are enabled. # Optional. Defines i18n rewrite behavior.
              &quot;root&quot;: &quot;A String&quot;, # Required. The user-supplied path where country and language specific content will be looked for within the public directory.
            },
            &quot;rewrites&quot;: [ # An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
              { # A [`rewrite`](/docs/hosting/full-config#rewrites) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
                &quot;dynamicLinks&quot;: True or False, # The request will be forwarded to Firebase Dynamic Links.
                &quot;function&quot;: &quot;A String&quot;, # The function to proxy requests to. Must match the exported function name exactly.
                &quot;path&quot;: &quot;A String&quot;, # The URL path to rewrite the request to.
                &quot;run&quot;: { # A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error). # The request will be forwarded to Cloud Run.
                  &quot;region&quot;: &quot;A String&quot;, # Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied.
                  &quot;serviceId&quot;: &quot;A String&quot;, # Required. User-defined ID of the Cloud Run service.
                },
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              },
            ],
            &quot;cleanUrls&quot;: True or False, # Defines whether to drop the file extension from uploaded files.
            &quot;headers&quot;: [ # An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
              { # A [`header`](/docs/hosting/full-config#headers) is an object that specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;headers&quot;: { # Required. The additional headers to add to the response.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              },
            ],
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.
        &quot;releaseUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the release.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;releaseTime&quot;: &quot;A String&quot;, # Output only. The time at which the version is set to be public.
      },
      &quot;url&quot;: &quot;A String&quot;, # Output only. The URL at which the channel can be viewed. For the `live` channel, the content of the current release may also be visible at other URLs.
      &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in output whether set directly or via the `ttl` field.
      &quot;labels&quot;: { # Text labels used for extra metadata and/or filtering.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was last updated.
      &quot;ttl&quot;: &quot;A String&quot;, # Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was created.
      &quot;name&quot;: &quot;A String&quot;, # The fully-qualified identifier of the Channel.
      &quot;retainedReleaseCount&quot;: 42, # The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels.
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a channel of a site. The `live` channel cannot be deleted.

Args:
  name: string, Required. The fully-qualified identifier for the site. (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>Retrieves information for the specified channel of a site.

Args:
  name: string, Required. The fully-qualified identifier for the channel. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A `Channel` represents a stream of releases for a site. All sites have a default `live` channel that serves content to the live Firebase-provided domains and any connected custom domains.
      &quot;release&quot;: { # A `Release` is a particular [collection of configurations and files](sites.versions) that is set to be public at a particular time. # Output only. The current release for the channel, if any.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier for the release, in the format: sites/ site-name/releases/releaseID This name is provided in the response body when you call the [`CreateRelease`](sites.releases/create) endpoint.
        &quot;message&quot;: &quot;A String&quot;, # The deploy description when the release was created. The value can be up to 512 characters.
        &quot;version&quot;: { # A `Version` is the collection of configuration and [static files](sites.versions.files) that determine how a site is displayed. # Output only. The configuration and content that was released.
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was created.
          &quot;preview&quot;: { # Version preview configuration. If active and unexpired, this version will be accessible via a custom URL even if it is not the currently released version. Deprecated in favor of site channels. # Deprecated in favor of site channels. Version preview configuration for the site version. This configuration specifies whether previewing is enabled for this site version. Version previews allow you to preview your site at a custom URL before releasing it as the live version.
            &quot;expireTime&quot;: &quot;A String&quot;, # Indicates the expiration time for previewing this version; preview URL requests received after this time will 404.
            &quot;active&quot;: True or False, # If true, preview URLs are enabled for this version.
          },
          &quot;name&quot;: &quot;A String&quot;, # The unique identifier for a version, in the format: sites/site-name /versions/versionID This name is provided in the response body when you call the [`CreateVersion`](../sites.versions/create) endpoint.
          &quot;finalizeTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `FINALIZED`.
          &quot;status&quot;: &quot;A String&quot;, # The deploy status of a version. For a successful deploy, call the [`CreateVersion`](sites.versions/create) endpoint to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling the [`DeleteVersion`](sites.versions/delete) endpoint.
          &quot;fileCount&quot;: &quot;A String&quot;, # Output only. The total number of files associated with the version. This value is calculated after a version is `FINALIZED`.
          &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `DELETED`.
          &quot;createUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;deleteUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `DELETED` the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;versionBytes&quot;: &quot;A String&quot;, # Output only. The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`.
          &quot;finalizeUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `FINALIZED` the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;labels&quot;: { # The labels used for extra metadata and/or filtering.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;config&quot;: { # The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](/docs/hosting/full-config#hosting_priority_order). # The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](/docs/cli/#the_firebasejson_file) file.
            &quot;redirects&quot;: [ # An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
              { # A [`redirect`](/docs/hosting/full-config#redirects) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
                &quot;statusCode&quot;: 42, # Required. The status HTTP code to return in the response. It must be a valid 3xx status code.
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;location&quot;: &quot;A String&quot;, # Required. The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: &quot;glob&quot;: &quot;/:capture*&quot;, &quot;statusCode&quot;: 301, &quot;location&quot;: &quot;https://example.com/foo/:capture&quot;
              },
            ],
            &quot;appAssociation&quot;: &quot;A String&quot;, # How to handle well known App Association files.
            &quot;trailingSlashBehavior&quot;: &quot;A String&quot;, # Defines how to handle a trailing slash in the URL path.
            &quot;i18n&quot;: { # If provided, i18n rewrites are enabled. # Optional. Defines i18n rewrite behavior.
              &quot;root&quot;: &quot;A String&quot;, # Required. The user-supplied path where country and language specific content will be looked for within the public directory.
            },
            &quot;rewrites&quot;: [ # An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
              { # A [`rewrite`](/docs/hosting/full-config#rewrites) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
                &quot;dynamicLinks&quot;: True or False, # The request will be forwarded to Firebase Dynamic Links.
                &quot;function&quot;: &quot;A String&quot;, # The function to proxy requests to. Must match the exported function name exactly.
                &quot;path&quot;: &quot;A String&quot;, # The URL path to rewrite the request to.
                &quot;run&quot;: { # A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error). # The request will be forwarded to Cloud Run.
                  &quot;region&quot;: &quot;A String&quot;, # Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied.
                  &quot;serviceId&quot;: &quot;A String&quot;, # Required. User-defined ID of the Cloud Run service.
                },
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              },
            ],
            &quot;cleanUrls&quot;: True or False, # Defines whether to drop the file extension from uploaded files.
            &quot;headers&quot;: [ # An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
              { # A [`header`](/docs/hosting/full-config#headers) is an object that specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;headers&quot;: { # Required. The additional headers to add to the response.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              },
            ],
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.
        &quot;releaseUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the release.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;releaseTime&quot;: &quot;A String&quot;, # Output only. The time at which the version is set to be public.
      },
      &quot;url&quot;: &quot;A String&quot;, # Output only. The URL at which the channel can be viewed. For the `live` channel, the content of the current release may also be visible at other URLs.
      &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in output whether set directly or via the `ttl` field.
      &quot;labels&quot;: { # Text labels used for extra metadata and/or filtering.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was last updated.
      &quot;ttl&quot;: &quot;A String&quot;, # Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was created.
      &quot;name&quot;: &quot;A String&quot;, # The fully-qualified identifier of the Channel.
      &quot;retainedReleaseCount&quot;: 42, # The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists the channels for the specified site. All sites have a default &quot;live&quot; channel.

Args:
  parent: string, Required. The site from which to list channels. (required)
  pageToken: string, The next_page_token from a previous request, if provided.
  pageSize: integer, The maximum number of versions to return. The service may return fewer than this value. If unspecified, at most 25 channels will be returned. The maximum value is 100; valuupdateses above 100 will be coerced to 100
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response returned by ListChannels.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # If there are additional releases remaining beyond the ones in this response, then supply this token in the next [`list`](../sites.channels/list) call to continue with the next set of releases.
    &quot;channels&quot;: [ # The list of channels.
      { # A `Channel` represents a stream of releases for a site. All sites have a default `live` channel that serves content to the live Firebase-provided domains and any connected custom domains.
          &quot;release&quot;: { # A `Release` is a particular [collection of configurations and files](sites.versions) that is set to be public at a particular time. # Output only. The current release for the channel, if any.
            &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier for the release, in the format: sites/ site-name/releases/releaseID This name is provided in the response body when you call the [`CreateRelease`](sites.releases/create) endpoint.
            &quot;message&quot;: &quot;A String&quot;, # The deploy description when the release was created. The value can be up to 512 characters.
            &quot;version&quot;: { # A `Version` is the collection of configuration and [static files](sites.versions.files) that determine how a site is displayed. # Output only. The configuration and content that was released.
              &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was created.
              &quot;preview&quot;: { # Version preview configuration. If active and unexpired, this version will be accessible via a custom URL even if it is not the currently released version. Deprecated in favor of site channels. # Deprecated in favor of site channels. Version preview configuration for the site version. This configuration specifies whether previewing is enabled for this site version. Version previews allow you to preview your site at a custom URL before releasing it as the live version.
                &quot;expireTime&quot;: &quot;A String&quot;, # Indicates the expiration time for previewing this version; preview URL requests received after this time will 404.
                &quot;active&quot;: True or False, # If true, preview URLs are enabled for this version.
              },
              &quot;name&quot;: &quot;A String&quot;, # The unique identifier for a version, in the format: sites/site-name /versions/versionID This name is provided in the response body when you call the [`CreateVersion`](../sites.versions/create) endpoint.
              &quot;finalizeTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `FINALIZED`.
              &quot;status&quot;: &quot;A String&quot;, # The deploy status of a version. For a successful deploy, call the [`CreateVersion`](sites.versions/create) endpoint to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling the [`DeleteVersion`](sites.versions/delete) endpoint.
              &quot;fileCount&quot;: &quot;A String&quot;, # Output only. The total number of files associated with the version. This value is calculated after a version is `FINALIZED`.
              &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `DELETED`.
              &quot;createUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the version.
                &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
                &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
              },
              &quot;deleteUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `DELETED` the version.
                &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
                &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
              },
              &quot;versionBytes&quot;: &quot;A String&quot;, # Output only. The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`.
              &quot;finalizeUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `FINALIZED` the version.
                &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
                &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
              },
              &quot;labels&quot;: { # The labels used for extra metadata and/or filtering.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;config&quot;: { # The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](/docs/hosting/full-config#hosting_priority_order). # The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](/docs/cli/#the_firebasejson_file) file.
                &quot;redirects&quot;: [ # An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
                  { # A [`redirect`](/docs/hosting/full-config#redirects) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
                    &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
                    &quot;statusCode&quot;: 42, # Required. The status HTTP code to return in the response. It must be a valid 3xx status code.
                    &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                    &quot;location&quot;: &quot;A String&quot;, # Required. The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: &quot;glob&quot;: &quot;/:capture*&quot;, &quot;statusCode&quot;: 301, &quot;location&quot;: &quot;https://example.com/foo/:capture&quot;
                  },
                ],
                &quot;appAssociation&quot;: &quot;A String&quot;, # How to handle well known App Association files.
                &quot;trailingSlashBehavior&quot;: &quot;A String&quot;, # Defines how to handle a trailing slash in the URL path.
                &quot;i18n&quot;: { # If provided, i18n rewrites are enabled. # Optional. Defines i18n rewrite behavior.
                  &quot;root&quot;: &quot;A String&quot;, # Required. The user-supplied path where country and language specific content will be looked for within the public directory.
                },
                &quot;rewrites&quot;: [ # An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
                  { # A [`rewrite`](/docs/hosting/full-config#rewrites) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
                    &quot;dynamicLinks&quot;: True or False, # The request will be forwarded to Firebase Dynamic Links.
                    &quot;function&quot;: &quot;A String&quot;, # The function to proxy requests to. Must match the exported function name exactly.
                    &quot;path&quot;: &quot;A String&quot;, # The URL path to rewrite the request to.
                    &quot;run&quot;: { # A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error). # The request will be forwarded to Cloud Run.
                      &quot;region&quot;: &quot;A String&quot;, # Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied.
                      &quot;serviceId&quot;: &quot;A String&quot;, # Required. User-defined ID of the Cloud Run service.
                    },
                    &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                    &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
                  },
                ],
                &quot;cleanUrls&quot;: True or False, # Defines whether to drop the file extension from uploaded files.
                &quot;headers&quot;: [ # An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
                  { # A [`header`](/docs/hosting/full-config#headers) is an object that specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
                    &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                    &quot;headers&quot;: { # Required. The additional headers to add to the response.
                      &quot;a_key&quot;: &quot;A String&quot;,
                    },
                    &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
                  },
                ],
              },
            },
            &quot;type&quot;: &quot;A String&quot;, # Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.
            &quot;releaseUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the release.
              &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
              &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
            },
            &quot;releaseTime&quot;: &quot;A String&quot;, # Output only. The time at which the version is set to be public.
          },
          &quot;url&quot;: &quot;A String&quot;, # Output only. The URL at which the channel can be viewed. For the `live` channel, the content of the current release may also be visible at other URLs.
          &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in output whether set directly or via the `ttl` field.
          &quot;labels&quot;: { # Text labels used for extra metadata and/or filtering.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was last updated.
          &quot;ttl&quot;: &quot;A String&quot;, # Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request.
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was created.
          &quot;name&quot;: &quot;A String&quot;, # The fully-qualified identifier of the Channel.
          &quot;retainedReleaseCount&quot;: 42, # The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels.
        },
    ],
  }</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="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates information for the specified channel of a site. This method will implicitly create a channel if it doesn&#x27;t exist.

Args:
  name: string, The fully-qualified identifier of the Channel. (required)
  body: object, The request body.
    The object takes the form of:

{ # A `Channel` represents a stream of releases for a site. All sites have a default `live` channel that serves content to the live Firebase-provided domains and any connected custom domains.
    &quot;release&quot;: { # A `Release` is a particular [collection of configurations and files](sites.versions) that is set to be public at a particular time. # Output only. The current release for the channel, if any.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier for the release, in the format: sites/ site-name/releases/releaseID This name is provided in the response body when you call the [`CreateRelease`](sites.releases/create) endpoint.
      &quot;message&quot;: &quot;A String&quot;, # The deploy description when the release was created. The value can be up to 512 characters.
      &quot;version&quot;: { # A `Version` is the collection of configuration and [static files](sites.versions.files) that determine how a site is displayed. # Output only. The configuration and content that was released.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was created.
        &quot;preview&quot;: { # Version preview configuration. If active and unexpired, this version will be accessible via a custom URL even if it is not the currently released version. Deprecated in favor of site channels. # Deprecated in favor of site channels. Version preview configuration for the site version. This configuration specifies whether previewing is enabled for this site version. Version previews allow you to preview your site at a custom URL before releasing it as the live version.
          &quot;expireTime&quot;: &quot;A String&quot;, # Indicates the expiration time for previewing this version; preview URL requests received after this time will 404.
          &quot;active&quot;: True or False, # If true, preview URLs are enabled for this version.
        },
        &quot;name&quot;: &quot;A String&quot;, # The unique identifier for a version, in the format: sites/site-name /versions/versionID This name is provided in the response body when you call the [`CreateVersion`](../sites.versions/create) endpoint.
        &quot;finalizeTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `FINALIZED`.
        &quot;status&quot;: &quot;A String&quot;, # The deploy status of a version. For a successful deploy, call the [`CreateVersion`](sites.versions/create) endpoint to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling the [`DeleteVersion`](sites.versions/delete) endpoint.
        &quot;fileCount&quot;: &quot;A String&quot;, # Output only. The total number of files associated with the version. This value is calculated after a version is `FINALIZED`.
        &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `DELETED`.
        &quot;createUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the version.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;deleteUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `DELETED` the version.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;versionBytes&quot;: &quot;A String&quot;, # Output only. The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`.
        &quot;finalizeUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `FINALIZED` the version.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;labels&quot;: { # The labels used for extra metadata and/or filtering.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;config&quot;: { # The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](/docs/hosting/full-config#hosting_priority_order). # The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](/docs/cli/#the_firebasejson_file) file.
          &quot;redirects&quot;: [ # An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
            { # A [`redirect`](/docs/hosting/full-config#redirects) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
              &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              &quot;statusCode&quot;: 42, # Required. The status HTTP code to return in the response. It must be a valid 3xx status code.
              &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
              &quot;location&quot;: &quot;A String&quot;, # Required. The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: &quot;glob&quot;: &quot;/:capture*&quot;, &quot;statusCode&quot;: 301, &quot;location&quot;: &quot;https://example.com/foo/:capture&quot;
            },
          ],
          &quot;appAssociation&quot;: &quot;A String&quot;, # How to handle well known App Association files.
          &quot;trailingSlashBehavior&quot;: &quot;A String&quot;, # Defines how to handle a trailing slash in the URL path.
          &quot;i18n&quot;: { # If provided, i18n rewrites are enabled. # Optional. Defines i18n rewrite behavior.
            &quot;root&quot;: &quot;A String&quot;, # Required. The user-supplied path where country and language specific content will be looked for within the public directory.
          },
          &quot;rewrites&quot;: [ # An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
            { # A [`rewrite`](/docs/hosting/full-config#rewrites) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
              &quot;dynamicLinks&quot;: True or False, # The request will be forwarded to Firebase Dynamic Links.
              &quot;function&quot;: &quot;A String&quot;, # The function to proxy requests to. Must match the exported function name exactly.
              &quot;path&quot;: &quot;A String&quot;, # The URL path to rewrite the request to.
              &quot;run&quot;: { # A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error). # The request will be forwarded to Cloud Run.
                &quot;region&quot;: &quot;A String&quot;, # Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied.
                &quot;serviceId&quot;: &quot;A String&quot;, # Required. User-defined ID of the Cloud Run service.
              },
              &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
              &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
            },
          ],
          &quot;cleanUrls&quot;: True or False, # Defines whether to drop the file extension from uploaded files.
          &quot;headers&quot;: [ # An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
            { # A [`header`](/docs/hosting/full-config#headers) is an object that specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
              &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
              &quot;headers&quot;: { # Required. The additional headers to add to the response.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
            },
          ],
        },
      },
      &quot;type&quot;: &quot;A String&quot;, # Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.
      &quot;releaseUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the release.
        &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
        &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
      },
      &quot;releaseTime&quot;: &quot;A String&quot;, # Output only. The time at which the version is set to be public.
    },
    &quot;url&quot;: &quot;A String&quot;, # Output only. The URL at which the channel can be viewed. For the `live` channel, the content of the current release may also be visible at other URLs.
    &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in output whether set directly or via the `ttl` field.
    &quot;labels&quot;: { # Text labels used for extra metadata and/or filtering.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was last updated.
    &quot;ttl&quot;: &quot;A String&quot;, # Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was created.
    &quot;name&quot;: &quot;A String&quot;, # The fully-qualified identifier of the Channel.
    &quot;retainedReleaseCount&quot;: 42, # The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels.
  }

  updateMask: string, A comma-separated list of fields to be updated in this request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A `Channel` represents a stream of releases for a site. All sites have a default `live` channel that serves content to the live Firebase-provided domains and any connected custom domains.
      &quot;release&quot;: { # A `Release` is a particular [collection of configurations and files](sites.versions) that is set to be public at a particular time. # Output only. The current release for the channel, if any.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier for the release, in the format: sites/ site-name/releases/releaseID This name is provided in the response body when you call the [`CreateRelease`](sites.releases/create) endpoint.
        &quot;message&quot;: &quot;A String&quot;, # The deploy description when the release was created. The value can be up to 512 characters.
        &quot;version&quot;: { # A `Version` is the collection of configuration and [static files](sites.versions.files) that determine how a site is displayed. # Output only. The configuration and content that was released.
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was created.
          &quot;preview&quot;: { # Version preview configuration. If active and unexpired, this version will be accessible via a custom URL even if it is not the currently released version. Deprecated in favor of site channels. # Deprecated in favor of site channels. Version preview configuration for the site version. This configuration specifies whether previewing is enabled for this site version. Version previews allow you to preview your site at a custom URL before releasing it as the live version.
            &quot;expireTime&quot;: &quot;A String&quot;, # Indicates the expiration time for previewing this version; preview URL requests received after this time will 404.
            &quot;active&quot;: True or False, # If true, preview URLs are enabled for this version.
          },
          &quot;name&quot;: &quot;A String&quot;, # The unique identifier for a version, in the format: sites/site-name /versions/versionID This name is provided in the response body when you call the [`CreateVersion`](../sites.versions/create) endpoint.
          &quot;finalizeTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `FINALIZED`.
          &quot;status&quot;: &quot;A String&quot;, # The deploy status of a version. For a successful deploy, call the [`CreateVersion`](sites.versions/create) endpoint to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling the [`DeleteVersion`](sites.versions/delete) endpoint.
          &quot;fileCount&quot;: &quot;A String&quot;, # Output only. The total number of files associated with the version. This value is calculated after a version is `FINALIZED`.
          &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The time at which the version was `DELETED`.
          &quot;createUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;deleteUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `DELETED` the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;versionBytes&quot;: &quot;A String&quot;, # Output only. The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`.
          &quot;finalizeUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who `FINALIZED` the version.
            &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
            &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
          },
          &quot;labels&quot;: { # The labels used for extra metadata and/or filtering.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;config&quot;: { # The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](/docs/hosting/full-config#hosting_priority_order). # The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](/docs/cli/#the_firebasejson_file) file.
            &quot;redirects&quot;: [ # An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
              { # A [`redirect`](/docs/hosting/full-config#redirects) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
                &quot;statusCode&quot;: 42, # Required. The status HTTP code to return in the response. It must be a valid 3xx status code.
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;location&quot;: &quot;A String&quot;, # Required. The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: &quot;glob&quot;: &quot;/:capture*&quot;, &quot;statusCode&quot;: 301, &quot;location&quot;: &quot;https://example.com/foo/:capture&quot;
              },
            ],
            &quot;appAssociation&quot;: &quot;A String&quot;, # How to handle well known App Association files.
            &quot;trailingSlashBehavior&quot;: &quot;A String&quot;, # Defines how to handle a trailing slash in the URL path.
            &quot;i18n&quot;: { # If provided, i18n rewrites are enabled. # Optional. Defines i18n rewrite behavior.
              &quot;root&quot;: &quot;A String&quot;, # Required. The user-supplied path where country and language specific content will be looked for within the public directory.
            },
            &quot;rewrites&quot;: [ # An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
              { # A [`rewrite`](/docs/hosting/full-config#rewrites) object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.
                &quot;dynamicLinks&quot;: True or False, # The request will be forwarded to Firebase Dynamic Links.
                &quot;function&quot;: &quot;A String&quot;, # The function to proxy requests to. Must match the exported function name exactly.
                &quot;path&quot;: &quot;A String&quot;, # The URL path to rewrite the request to.
                &quot;run&quot;: { # A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error). # The request will be forwarded to Cloud Run.
                  &quot;region&quot;: &quot;A String&quot;, # Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied.
                  &quot;serviceId&quot;: &quot;A String&quot;, # Required. User-defined ID of the Cloud Run service.
                },
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              },
            ],
            &quot;cleanUrls&quot;: True or False, # Defines whether to drop the file extension from uploaded files.
            &quot;headers&quot;: [ # An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
              { # A [`header`](/docs/hosting/full-config#headers) is an object that specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.
                &quot;glob&quot;: &quot;A String&quot;, # The user-supplied [glob](/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path.
                &quot;headers&quot;: { # Required. The additional headers to add to the response.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;regex&quot;: &quot;A String&quot;, # The user-supplied RE2 regular expression to match against the request URL path.
              },
            ],
          },
        },
        &quot;type&quot;: &quot;A String&quot;, # Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.
        &quot;releaseUser&quot;: { # Contains metadata about the user who performed an action, such as creating a release or finalizing a version. # Output only. Identifies the user who created the release.
          &quot;email&quot;: &quot;A String&quot;, # The email address of the user when the user performed the action.
          &quot;imageUrl&quot;: &quot;A String&quot;, # A profile image URL for the user. May not be present if the user has changed their email address or deleted their account.
        },
        &quot;releaseTime&quot;: &quot;A String&quot;, # Output only. The time at which the version is set to be public.
      },
      &quot;url&quot;: &quot;A String&quot;, # Output only. The URL at which the channel can be viewed. For the `live` channel, the content of the current release may also be visible at other URLs.
      &quot;expireTime&quot;: &quot;A String&quot;, # The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in output whether set directly or via the `ttl` field.
      &quot;labels&quot;: { # Text labels used for extra metadata and/or filtering.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was last updated.
      &quot;ttl&quot;: &quot;A String&quot;, # Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the channel was created.
      &quot;name&quot;: &quot;A String&quot;, # The fully-qualified identifier of the Channel.
      &quot;retainedReleaseCount&quot;: 42, # The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels.
    }</pre>
</div>

</body></html>