<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="monitoring_v3.html">Cloud Monitoring API</a> . <a href="monitoring_v3.projects.html">projects</a> . <a href="monitoring_v3.projects.uptimeCheckConfigs.html">uptimeCheckConfigs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Uptime check configuration.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an Uptime check configuration. Note that this method will fail if the Uptime check configuration is referenced by an alert policy or other dependent configs that would be rendered invalid by the deletion.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a single Uptime check configuration.</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 existing valid Uptime check configurations for the project (leaving out any invalid configurations).</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 an Uptime check configuration. You can either replace the entire configuration with a new one or replace only certain fields in the current configuration by specifying the fields to be updated via updateMask. Returns the updated configuration.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new Uptime check configuration.

Args:
  parent: string, Required. The project in which to create the Uptime check. The format is:
projects/[PROJECT_ID_OR_NUMBER]
 (required)
  body: object, The request body.
    The object takes the form of:

{ # This message configures which resources and services to monitor for availability.
  &quot;resourceGroup&quot;: { # The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored. # The group resource associated with the configuration.
    &quot;groupId&quot;: &quot;A String&quot;, # The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].
    &quot;resourceType&quot;: &quot;A String&quot;, # The resource type of the group members.
  },
  &quot;contentMatchers&quot;: [ # The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.
    { # Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4&amp;nbsp;MB of an HTTP or HTTPS check&#x27;s response (and the first 1&amp;nbsp;MB of a TCP check&#x27;s response) are examined for purposes of content matching.
      &quot;matcher&quot;: &quot;A String&quot;, # The type of content matcher that will be applied to the server output, compared to the content string when the check is run.
      &quot;content&quot;: &quot;A String&quot;, # String or regex content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed.
    },
  ],
  &quot;monitoredResource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for Uptime checks:  uptime_url,  gce_instance,  gae_app,  aws_ec2_instance,  aws_elb_load_balancer
      # { &quot;type&quot;: &quot;gce_instance&quot;,
      #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
      #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
    &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types and Logging resource types.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # A human-friendly name for the Uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.
  &quot;period&quot;: &quot;A String&quot;, # How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.
  &quot;selectedRegions&quot;: [ # The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.
    &quot;A String&quot;,
  ],
  &quot;tcpCheck&quot;: { # Information required for a TCP Uptime check request. # Contains information needed to make a TCP check.
    &quot;port&quot;: 42, # The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required.
  },
  &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.
  &quot;internalCheckers&quot;: [ # The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.
    { # An internal checker allows Uptime checks to run on private/internal GCP resources.
      &quot;gcpZone&quot;: &quot;A String&quot;, # The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified.
      &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this InternalChecker. The format is:
          # projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID]
          # [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime check config associated with the internal checker.
      &quot;state&quot;: &quot;A String&quot;, # The current operational state of the internal checker.
      &quot;displayName&quot;: &quot;A String&quot;, # The checker&#x27;s human-readable name. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced.
      &quot;network&quot;: &quot;A String&quot;, # The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: &quot;default&quot;).
      &quot;peerProjectId&quot;: &quot;A String&quot;, # The GCP project ID where the internal checker lives. Not necessary the same as the Workspace project.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this Uptime check configuration. The format is:
      #  projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
      # This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.
  &quot;isInternal&quot;: True or False, # If this is true, then checks are made only from the &#x27;internal_checkers&#x27;. If it is false, then checks are made only from the &#x27;selected_regions&#x27;. It is an error to provide &#x27;selected_regions&#x27; when is_internal is true, or to provide &#x27;internal_checkers&#x27; when is_internal is false.
  &quot;httpCheck&quot;: { # Information involved in an HTTP/HTTPS Uptime check request. # Contains information needed to make an HTTP or HTTPS check.
    &quot;requestMethod&quot;: &quot;A String&quot;, # The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.
    &quot;contentType&quot;: &quot;A String&quot;, # The content type to use for the check.
    &quot;maskHeaders&quot;: True or False, # Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******.
    &quot;path&quot;: &quot;A String&quot;, # Optional (defaults to &quot;/&quot;). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with &quot;/&quot;, a &quot;/&quot; will be prepended automatically.
    &quot;validateSsl&quot;: True or False, # Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect.
    &quot;headers&quot;: { # The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;port&quot;: 42, # Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL.
    &quot;authInfo&quot;: { # The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. # The authentication information. Optional when creating an HTTP check; defaults to empty.
      &quot;password&quot;: &quot;A String&quot;, # The password to use when authenticating with the HTTP server.
      &quot;username&quot;: &quot;A String&quot;, # The username to use when authenticating with the HTTP server.
    },
    &quot;body&quot;: &quot;A String&quot;, # The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte. Note: As with all bytes fields JSON representations are base64 encoded. e.g.: &quot;foo=bar&quot; in URL-encoded form is &quot;foo%3Dbar&quot; and in base64 encoding is &quot;Zm9vJTI1M0RiYXI=&quot;.
    &quot;useSsl&quot;: True or False, # If true, use HTTPS instead of HTTP to run the check.
  },
}

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

Returns:
  An object of the form:

    { # This message configures which resources and services to monitor for availability.
    &quot;resourceGroup&quot;: { # The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored. # The group resource associated with the configuration.
      &quot;groupId&quot;: &quot;A String&quot;, # The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].
      &quot;resourceType&quot;: &quot;A String&quot;, # The resource type of the group members.
    },
    &quot;contentMatchers&quot;: [ # The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.
      { # Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4&amp;nbsp;MB of an HTTP or HTTPS check&#x27;s response (and the first 1&amp;nbsp;MB of a TCP check&#x27;s response) are examined for purposes of content matching.
        &quot;matcher&quot;: &quot;A String&quot;, # The type of content matcher that will be applied to the server output, compared to the content string when the check is run.
        &quot;content&quot;: &quot;A String&quot;, # String or regex content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed.
      },
    ],
    &quot;monitoredResource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for Uptime checks:  uptime_url,  gce_instance,  gae_app,  aws_ec2_instance,  aws_elb_load_balancer
        # { &quot;type&quot;: &quot;gce_instance&quot;,
        #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
        #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
      &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types and Logging resource types.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # A human-friendly name for the Uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.
    &quot;period&quot;: &quot;A String&quot;, # How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.
    &quot;selectedRegions&quot;: [ # The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.
      &quot;A String&quot;,
    ],
    &quot;tcpCheck&quot;: { # Information required for a TCP Uptime check request. # Contains information needed to make a TCP check.
      &quot;port&quot;: 42, # The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required.
    },
    &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.
    &quot;internalCheckers&quot;: [ # The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.
      { # An internal checker allows Uptime checks to run on private/internal GCP resources.
        &quot;gcpZone&quot;: &quot;A String&quot;, # The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified.
        &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this InternalChecker. The format is:
            # projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID]
            # [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime check config associated with the internal checker.
        &quot;state&quot;: &quot;A String&quot;, # The current operational state of the internal checker.
        &quot;displayName&quot;: &quot;A String&quot;, # The checker&#x27;s human-readable name. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced.
        &quot;network&quot;: &quot;A String&quot;, # The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: &quot;default&quot;).
        &quot;peerProjectId&quot;: &quot;A String&quot;, # The GCP project ID where the internal checker lives. Not necessary the same as the Workspace project.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this Uptime check configuration. The format is:
        #  projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
        # This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.
    &quot;isInternal&quot;: True or False, # If this is true, then checks are made only from the &#x27;internal_checkers&#x27;. If it is false, then checks are made only from the &#x27;selected_regions&#x27;. It is an error to provide &#x27;selected_regions&#x27; when is_internal is true, or to provide &#x27;internal_checkers&#x27; when is_internal is false.
    &quot;httpCheck&quot;: { # Information involved in an HTTP/HTTPS Uptime check request. # Contains information needed to make an HTTP or HTTPS check.
      &quot;requestMethod&quot;: &quot;A String&quot;, # The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type to use for the check.
      &quot;maskHeaders&quot;: True or False, # Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******.
      &quot;path&quot;: &quot;A String&quot;, # Optional (defaults to &quot;/&quot;). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with &quot;/&quot;, a &quot;/&quot; will be prepended automatically.
      &quot;validateSsl&quot;: True or False, # Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect.
      &quot;headers&quot;: { # The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;port&quot;: 42, # Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL.
      &quot;authInfo&quot;: { # The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. # The authentication information. Optional when creating an HTTP check; defaults to empty.
        &quot;password&quot;: &quot;A String&quot;, # The password to use when authenticating with the HTTP server.
        &quot;username&quot;: &quot;A String&quot;, # The username to use when authenticating with the HTTP server.
      },
      &quot;body&quot;: &quot;A String&quot;, # The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte. Note: As with all bytes fields JSON representations are base64 encoded. e.g.: &quot;foo=bar&quot; in URL-encoded form is &quot;foo%3Dbar&quot; and in base64 encoding is &quot;Zm9vJTI1M0RiYXI=&quot;.
      &quot;useSsl&quot;: True or False, # If true, use HTTPS instead of HTTP to run the check.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an Uptime check configuration. Note that this method will fail if the Uptime check configuration is referenced by an alert policy or other dependent configs that would be rendered invalid by the deletion.

Args:
  name: string, Required. The Uptime check configuration to delete. The format is:
projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
 (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 single Uptime check configuration.

Args:
  name: string, Required. The Uptime check configuration to retrieve. The format is:
projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
 (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This message configures which resources and services to monitor for availability.
    &quot;resourceGroup&quot;: { # The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored. # The group resource associated with the configuration.
      &quot;groupId&quot;: &quot;A String&quot;, # The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].
      &quot;resourceType&quot;: &quot;A String&quot;, # The resource type of the group members.
    },
    &quot;contentMatchers&quot;: [ # The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.
      { # Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4&amp;nbsp;MB of an HTTP or HTTPS check&#x27;s response (and the first 1&amp;nbsp;MB of a TCP check&#x27;s response) are examined for purposes of content matching.
        &quot;matcher&quot;: &quot;A String&quot;, # The type of content matcher that will be applied to the server output, compared to the content string when the check is run.
        &quot;content&quot;: &quot;A String&quot;, # String or regex content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed.
      },
    ],
    &quot;monitoredResource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for Uptime checks:  uptime_url,  gce_instance,  gae_app,  aws_ec2_instance,  aws_elb_load_balancer
        # { &quot;type&quot;: &quot;gce_instance&quot;,
        #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
        #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
      &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types and Logging resource types.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # A human-friendly name for the Uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.
    &quot;period&quot;: &quot;A String&quot;, # How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.
    &quot;selectedRegions&quot;: [ # The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.
      &quot;A String&quot;,
    ],
    &quot;tcpCheck&quot;: { # Information required for a TCP Uptime check request. # Contains information needed to make a TCP check.
      &quot;port&quot;: 42, # The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required.
    },
    &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.
    &quot;internalCheckers&quot;: [ # The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.
      { # An internal checker allows Uptime checks to run on private/internal GCP resources.
        &quot;gcpZone&quot;: &quot;A String&quot;, # The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified.
        &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this InternalChecker. The format is:
            # projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID]
            # [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime check config associated with the internal checker.
        &quot;state&quot;: &quot;A String&quot;, # The current operational state of the internal checker.
        &quot;displayName&quot;: &quot;A String&quot;, # The checker&#x27;s human-readable name. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced.
        &quot;network&quot;: &quot;A String&quot;, # The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: &quot;default&quot;).
        &quot;peerProjectId&quot;: &quot;A String&quot;, # The GCP project ID where the internal checker lives. Not necessary the same as the Workspace project.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this Uptime check configuration. The format is:
        #  projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
        # This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.
    &quot;isInternal&quot;: True or False, # If this is true, then checks are made only from the &#x27;internal_checkers&#x27;. If it is false, then checks are made only from the &#x27;selected_regions&#x27;. It is an error to provide &#x27;selected_regions&#x27; when is_internal is true, or to provide &#x27;internal_checkers&#x27; when is_internal is false.
    &quot;httpCheck&quot;: { # Information involved in an HTTP/HTTPS Uptime check request. # Contains information needed to make an HTTP or HTTPS check.
      &quot;requestMethod&quot;: &quot;A String&quot;, # The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type to use for the check.
      &quot;maskHeaders&quot;: True or False, # Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******.
      &quot;path&quot;: &quot;A String&quot;, # Optional (defaults to &quot;/&quot;). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with &quot;/&quot;, a &quot;/&quot; will be prepended automatically.
      &quot;validateSsl&quot;: True or False, # Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect.
      &quot;headers&quot;: { # The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;port&quot;: 42, # Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL.
      &quot;authInfo&quot;: { # The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. # The authentication information. Optional when creating an HTTP check; defaults to empty.
        &quot;password&quot;: &quot;A String&quot;, # The password to use when authenticating with the HTTP server.
        &quot;username&quot;: &quot;A String&quot;, # The username to use when authenticating with the HTTP server.
      },
      &quot;body&quot;: &quot;A String&quot;, # The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte. Note: As with all bytes fields JSON representations are base64 encoded. e.g.: &quot;foo=bar&quot; in URL-encoded form is &quot;foo%3Dbar&quot; and in base64 encoding is &quot;Zm9vJTI1M0RiYXI=&quot;.
      &quot;useSsl&quot;: True or False, # If true, use HTTPS instead of HTTP to run the check.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists the existing valid Uptime check configurations for the project (leaving out any invalid configurations).

Args:
  parent: string, Required. The project whose Uptime check configurations are listed. The format is:
projects/[PROJECT_ID_OR_NUMBER]
 (required)
  pageToken: string, If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return more results from the previous method call.
  pageSize: integer, The maximum number of results to return in a single response. The server may further constrain the maximum number of results returned in a single page. If the page_size is &lt;=0, the server will decide the number of results to be returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The protocol for the ListUptimeCheckConfigs response.
    &quot;uptimeCheckConfigs&quot;: [ # The returned Uptime check configurations.
      { # This message configures which resources and services to monitor for availability.
        &quot;resourceGroup&quot;: { # The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored. # The group resource associated with the configuration.
          &quot;groupId&quot;: &quot;A String&quot;, # The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].
          &quot;resourceType&quot;: &quot;A String&quot;, # The resource type of the group members.
        },
        &quot;contentMatchers&quot;: [ # The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.
          { # Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4&amp;nbsp;MB of an HTTP or HTTPS check&#x27;s response (and the first 1&amp;nbsp;MB of a TCP check&#x27;s response) are examined for purposes of content matching.
            &quot;matcher&quot;: &quot;A String&quot;, # The type of content matcher that will be applied to the server output, compared to the content string when the check is run.
            &quot;content&quot;: &quot;A String&quot;, # String or regex content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed.
          },
        ],
        &quot;monitoredResource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for Uptime checks:  uptime_url,  gce_instance,  gae_app,  aws_ec2_instance,  aws_elb_load_balancer
            # { &quot;type&quot;: &quot;gce_instance&quot;,
            #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
            #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types and Logging resource types.
        },
        &quot;displayName&quot;: &quot;A String&quot;, # A human-friendly name for the Uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.
        &quot;period&quot;: &quot;A String&quot;, # How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.
        &quot;selectedRegions&quot;: [ # The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.
          &quot;A String&quot;,
        ],
        &quot;tcpCheck&quot;: { # Information required for a TCP Uptime check request. # Contains information needed to make a TCP check.
          &quot;port&quot;: 42, # The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required.
        },
        &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.
        &quot;internalCheckers&quot;: [ # The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.
          { # An internal checker allows Uptime checks to run on private/internal GCP resources.
            &quot;gcpZone&quot;: &quot;A String&quot;, # The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified.
            &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this InternalChecker. The format is:
                # projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID]
                # [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime check config associated with the internal checker.
            &quot;state&quot;: &quot;A String&quot;, # The current operational state of the internal checker.
            &quot;displayName&quot;: &quot;A String&quot;, # The checker&#x27;s human-readable name. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced.
            &quot;network&quot;: &quot;A String&quot;, # The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: &quot;default&quot;).
            &quot;peerProjectId&quot;: &quot;A String&quot;, # The GCP project ID where the internal checker lives. Not necessary the same as the Workspace project.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this Uptime check configuration. The format is:
            #  projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
            # This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.
        &quot;isInternal&quot;: True or False, # If this is true, then checks are made only from the &#x27;internal_checkers&#x27;. If it is false, then checks are made only from the &#x27;selected_regions&#x27;. It is an error to provide &#x27;selected_regions&#x27; when is_internal is true, or to provide &#x27;internal_checkers&#x27; when is_internal is false.
        &quot;httpCheck&quot;: { # Information involved in an HTTP/HTTPS Uptime check request. # Contains information needed to make an HTTP or HTTPS check.
          &quot;requestMethod&quot;: &quot;A String&quot;, # The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.
          &quot;contentType&quot;: &quot;A String&quot;, # The content type to use for the check.
          &quot;maskHeaders&quot;: True or False, # Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******.
          &quot;path&quot;: &quot;A String&quot;, # Optional (defaults to &quot;/&quot;). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with &quot;/&quot;, a &quot;/&quot; will be prepended automatically.
          &quot;validateSsl&quot;: True or False, # Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect.
          &quot;headers&quot;: { # The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;port&quot;: 42, # Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL.
          &quot;authInfo&quot;: { # The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. # The authentication information. Optional when creating an HTTP check; defaults to empty.
            &quot;password&quot;: &quot;A String&quot;, # The password to use when authenticating with the HTTP server.
            &quot;username&quot;: &quot;A String&quot;, # The username to use when authenticating with the HTTP server.
          },
          &quot;body&quot;: &quot;A String&quot;, # The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte. Note: As with all bytes fields JSON representations are base64 encoded. e.g.: &quot;foo=bar&quot; in URL-encoded form is &quot;foo%3Dbar&quot; and in base64 encoding is &quot;Zm9vJTI1M0RiYXI=&quot;.
          &quot;useSsl&quot;: True or False, # If true, use HTTPS instead of HTTP to run the check.
        },
      },
    ],
    &quot;totalSize&quot;: 42, # The total number of Uptime check configurations for the project, irrespective of any pagination.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # This field represents the pagination token to retrieve the next page of results. If the value is empty, it means no further results for the request. To retrieve the next page of results, the value of the next_page_token is passed to the subsequent List method call (in the request message&#x27;s page_token field).
  }</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 an Uptime check configuration. You can either replace the entire configuration with a new one or replace only certain fields in the current configuration by specifying the fields to be updated via updateMask. Returns the updated configuration.

Args:
  name: string, A unique resource name for this Uptime check configuration. The format is:
 projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response. (required)
  body: object, The request body.
    The object takes the form of:

{ # This message configures which resources and services to monitor for availability.
  &quot;resourceGroup&quot;: { # The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored. # The group resource associated with the configuration.
    &quot;groupId&quot;: &quot;A String&quot;, # The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].
    &quot;resourceType&quot;: &quot;A String&quot;, # The resource type of the group members.
  },
  &quot;contentMatchers&quot;: [ # The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.
    { # Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4&amp;nbsp;MB of an HTTP or HTTPS check&#x27;s response (and the first 1&amp;nbsp;MB of a TCP check&#x27;s response) are examined for purposes of content matching.
      &quot;matcher&quot;: &quot;A String&quot;, # The type of content matcher that will be applied to the server output, compared to the content string when the check is run.
      &quot;content&quot;: &quot;A String&quot;, # String or regex content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed.
    },
  ],
  &quot;monitoredResource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for Uptime checks:  uptime_url,  gce_instance,  gae_app,  aws_ec2_instance,  aws_elb_load_balancer
      # { &quot;type&quot;: &quot;gce_instance&quot;,
      #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
      #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
    &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types and Logging resource types.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # A human-friendly name for the Uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.
  &quot;period&quot;: &quot;A String&quot;, # How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.
  &quot;selectedRegions&quot;: [ # The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.
    &quot;A String&quot;,
  ],
  &quot;tcpCheck&quot;: { # Information required for a TCP Uptime check request. # Contains information needed to make a TCP check.
    &quot;port&quot;: 42, # The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required.
  },
  &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.
  &quot;internalCheckers&quot;: [ # The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.
    { # An internal checker allows Uptime checks to run on private/internal GCP resources.
      &quot;gcpZone&quot;: &quot;A String&quot;, # The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified.
      &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this InternalChecker. The format is:
          # projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID]
          # [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime check config associated with the internal checker.
      &quot;state&quot;: &quot;A String&quot;, # The current operational state of the internal checker.
      &quot;displayName&quot;: &quot;A String&quot;, # The checker&#x27;s human-readable name. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced.
      &quot;network&quot;: &quot;A String&quot;, # The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: &quot;default&quot;).
      &quot;peerProjectId&quot;: &quot;A String&quot;, # The GCP project ID where the internal checker lives. Not necessary the same as the Workspace project.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this Uptime check configuration. The format is:
      #  projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
      # This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.
  &quot;isInternal&quot;: True or False, # If this is true, then checks are made only from the &#x27;internal_checkers&#x27;. If it is false, then checks are made only from the &#x27;selected_regions&#x27;. It is an error to provide &#x27;selected_regions&#x27; when is_internal is true, or to provide &#x27;internal_checkers&#x27; when is_internal is false.
  &quot;httpCheck&quot;: { # Information involved in an HTTP/HTTPS Uptime check request. # Contains information needed to make an HTTP or HTTPS check.
    &quot;requestMethod&quot;: &quot;A String&quot;, # The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.
    &quot;contentType&quot;: &quot;A String&quot;, # The content type to use for the check.
    &quot;maskHeaders&quot;: True or False, # Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******.
    &quot;path&quot;: &quot;A String&quot;, # Optional (defaults to &quot;/&quot;). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with &quot;/&quot;, a &quot;/&quot; will be prepended automatically.
    &quot;validateSsl&quot;: True or False, # Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect.
    &quot;headers&quot;: { # The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;port&quot;: 42, # Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL.
    &quot;authInfo&quot;: { # The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. # The authentication information. Optional when creating an HTTP check; defaults to empty.
      &quot;password&quot;: &quot;A String&quot;, # The password to use when authenticating with the HTTP server.
      &quot;username&quot;: &quot;A String&quot;, # The username to use when authenticating with the HTTP server.
    },
    &quot;body&quot;: &quot;A String&quot;, # The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte. Note: As with all bytes fields JSON representations are base64 encoded. e.g.: &quot;foo=bar&quot; in URL-encoded form is &quot;foo%3Dbar&quot; and in base64 encoding is &quot;Zm9vJTI1M0RiYXI=&quot;.
    &quot;useSsl&quot;: True or False, # If true, use HTTPS instead of HTTP to run the check.
  },
}

  updateMask: string, Optional. If present, only the listed fields in the current Uptime check configuration are updated with values from the new configuration. If this field is empty, then the current configuration is completely replaced with the new configuration.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This message configures which resources and services to monitor for availability.
    &quot;resourceGroup&quot;: { # The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored. # The group resource associated with the configuration.
      &quot;groupId&quot;: &quot;A String&quot;, # The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].
      &quot;resourceType&quot;: &quot;A String&quot;, # The resource type of the group members.
    },
    &quot;contentMatchers&quot;: [ # The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.
      { # Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4&amp;nbsp;MB of an HTTP or HTTPS check&#x27;s response (and the first 1&amp;nbsp;MB of a TCP check&#x27;s response) are examined for purposes of content matching.
        &quot;matcher&quot;: &quot;A String&quot;, # The type of content matcher that will be applied to the server output, compared to the content string when the check is run.
        &quot;content&quot;: &quot;A String&quot;, # String or regex content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed.
      },
    ],
    &quot;monitoredResource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are supported for Uptime checks:  uptime_url,  gce_instance,  gae_app,  aws_ec2_instance,  aws_elb_load_balancer
        # { &quot;type&quot;: &quot;gce_instance&quot;,
        #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
        #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
      &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types and Logging resource types.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # A human-friendly name for the Uptime check configuration. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.
    &quot;period&quot;: &quot;A String&quot;, # How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.
    &quot;selectedRegions&quot;: [ # The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.
      &quot;A String&quot;,
    ],
    &quot;tcpCheck&quot;: { # Information required for a TCP Uptime check request. # Contains information needed to make a TCP check.
      &quot;port&quot;: 42, # The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required.
    },
    &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.
    &quot;internalCheckers&quot;: [ # The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.
      { # An internal checker allows Uptime checks to run on private/internal GCP resources.
        &quot;gcpZone&quot;: &quot;A String&quot;, # The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified.
        &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this InternalChecker. The format is:
            # projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID]
            # [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime check config associated with the internal checker.
        &quot;state&quot;: &quot;A String&quot;, # The current operational state of the internal checker.
        &quot;displayName&quot;: &quot;A String&quot;, # The checker&#x27;s human-readable name. The display name should be unique within a Stackdriver Workspace in order to make it easier to identify; however, uniqueness is not enforced.
        &quot;network&quot;: &quot;A String&quot;, # The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: &quot;default&quot;).
        &quot;peerProjectId&quot;: &quot;A String&quot;, # The GCP project ID where the internal checker lives. Not necessary the same as the Workspace project.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A unique resource name for this Uptime check configuration. The format is:
        #  projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
        # This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.
    &quot;isInternal&quot;: True or False, # If this is true, then checks are made only from the &#x27;internal_checkers&#x27;. If it is false, then checks are made only from the &#x27;selected_regions&#x27;. It is an error to provide &#x27;selected_regions&#x27; when is_internal is true, or to provide &#x27;internal_checkers&#x27; when is_internal is false.
    &quot;httpCheck&quot;: { # Information involved in an HTTP/HTTPS Uptime check request. # Contains information needed to make an HTTP or HTTPS check.
      &quot;requestMethod&quot;: &quot;A String&quot;, # The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type to use for the check.
      &quot;maskHeaders&quot;: True or False, # Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******.
      &quot;path&quot;: &quot;A String&quot;, # Optional (defaults to &quot;/&quot;). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with &quot;/&quot;, a &quot;/&quot; will be prepended automatically.
      &quot;validateSsl&quot;: True or False, # Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect.
      &quot;headers&quot;: { # The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;port&quot;: 42, # Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL.
      &quot;authInfo&quot;: { # The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. # The authentication information. Optional when creating an HTTP check; defaults to empty.
        &quot;password&quot;: &quot;A String&quot;, # The password to use when authenticating with the HTTP server.
        &quot;username&quot;: &quot;A String&quot;, # The username to use when authenticating with the HTTP server.
      },
      &quot;body&quot;: &quot;A String&quot;, # The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte. Note: As with all bytes fields JSON representations are base64 encoded. e.g.: &quot;foo=bar&quot; in URL-encoded form is &quot;foo%3Dbar&quot; and in base64 encoding is &quot;Zm9vJTI1M0RiYXI=&quot;.
      &quot;useSsl&quot;: True or False, # If true, use HTTPS instead of HTTP to run the check.
    },
  }</pre>
</div>

</body></html>