# frozen_string_literal: true

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Monitoring
      module V3
        # An internal checker allows Uptime checks to run on private/internal GCP
        # resources.
        # @deprecated This message is deprecated and may be removed in the next major version update.
        # @!attribute [rw] name
        #   @return [::String]
        #     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 Cloud Monitoring Metrics Scope project for
        #     the Uptime check config associated with the internal checker.
        # @!attribute [rw] display_name
        #   @return [::String]
        #     The checker's human-readable name. The display name
        #     should be unique within a Cloud Monitoring Metrics Scope in order to make
        #     it easier to identify; however, uniqueness is not enforced.
        # @!attribute [rw] network
        #   @return [::String]
        #     The [GCP VPC network](https://cloud.google.com/vpc/docs/vpc) where the
        #     internal resource lives (ex: "default").
        # @!attribute [rw] gcp_zone
        #   @return [::String]
        #     The GCP zone the Uptime check should egress from. Only respected for
        #     internal Uptime checks, where internal_network is specified.
        # @!attribute [rw] peer_project_id
        #   @return [::String]
        #     The GCP project ID where the internal checker lives. Not necessary
        #     the same as the Metrics Scope project.
        # @!attribute [rw] state
        #   @return [::Google::Cloud::Monitoring::V3::InternalChecker::State]
        #     The current operational state of the internal checker.
        class InternalChecker
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Operational states for an internal checker.
          module State
            # An internal checker should never be in the unspecified state.
            UNSPECIFIED = 0

            # The checker is being created, provisioned, and configured. A checker in
            # this state can be returned by `ListInternalCheckers` or
            # `GetInternalChecker`, as well as by examining the [long running
            # Operation](https://cloud.google.com/apis/design/design_patterns#long_running_operations)
            # that created it.
            CREATING = 1

            # The checker is running and available for use. A checker in this state
            # can be returned by `ListInternalCheckers` or `GetInternalChecker` as
            # well as by examining the [long running
            # Operation](https://cloud.google.com/apis/design/design_patterns#long_running_operations)
            # that created it.
            # If a checker is being torn down, it is neither visible nor usable, so
            # there is no "deleting" or "down" state.
            RUNNING = 2
          end
        end

        # This message configures which resources and services to monitor for
        # availability.
        # @!attribute [rw] name
        #   @return [::String]
        #     A unique resource name for this Uptime check configuration. The format is:
        #
        #          projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
        #
        #     `[PROJECT_ID_OR_NUMBER]` is the Workspace host project associated with the
        #     Uptime check.
        #
        #     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.
        # @!attribute [rw] display_name
        #   @return [::String]
        #     A human-friendly name for the Uptime check configuration. The display name
        #     should be unique within a Cloud Monitoring Workspace in order to make it
        #     easier to identify; however, uniqueness is not enforced. Required.
        # @!attribute [rw] monitored_resource
        #   @return [::Google::Api::MonitoredResource]
        #     The [monitored
        #     resource](https://cloud.google.com/monitoring/api/resources) associated
        #     with the configuration.
        #     The following monitored resource types are valid for this field:
        #       `uptime_url`,
        #       `gce_instance`,
        #       `gae_app`,
        #       `aws_ec2_instance`,
        #       `aws_elb_load_balancer`
        #       `k8s_service`
        #       `servicedirectory_service`
        #       `cloud_run_revision`
        # @!attribute [rw] resource_group
        #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::ResourceGroup]
        #     The group resource associated with the configuration.
        # @!attribute [rw] http_check
        #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::HttpCheck]
        #     Contains information needed to make an HTTP or HTTPS check.
        # @!attribute [rw] tcp_check
        #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::TcpCheck]
        #     Contains information needed to make a TCP check.
        # @!attribute [rw] period
        #   @return [::Google::Protobuf::Duration]
        #     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`.
        # @!attribute [rw] timeout
        #   @return [::Google::Protobuf::Duration]
        #     The maximum amount of time to wait for the request to complete (must be
        #     between 1 and 60 seconds). Required.
        # @!attribute [rw] content_matchers
        #   @return [::Array<::Google::Cloud::Monitoring::V3::UptimeCheckConfig::ContentMatcher>]
        #     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.
        # @!attribute [rw] checker_type
        #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::CheckerType]
        #     The type of checkers to use to execute the Uptime check.
        # @!attribute [rw] selected_regions
        #   @return [::Array<::Google::Cloud::Monitoring::V3::UptimeCheckRegion>]
        #     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.
        # @!attribute [rw] is_internal
        #   @deprecated This field is deprecated and may be removed in the next major version update.
        #   @return [::Boolean]
        #     If this is `true`, then checks are made only from the 'internal_checkers'.
        #     If it is `false`, then checks are made only from the 'selected_regions'.
        #     It is an error to provide 'selected_regions' when is_internal is `true`,
        #     or to provide 'internal_checkers' when is_internal is `false`.
        # @!attribute [rw] internal_checkers
        #   @deprecated This field is deprecated and may be removed in the next major version update.
        #   @return [::Array<::Google::Cloud::Monitoring::V3::InternalChecker>]
        #     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`.
        # @!attribute [rw] user_labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     User-supplied key/value data to be used for organizing and
        #     identifying the `UptimeCheckConfig` objects.
        #
        #     The field can contain up to 64 entries. Each key and value is limited to
        #     63 Unicode characters or 128 bytes, whichever is smaller. Labels and
        #     values can contain only lowercase letters, numerals, underscores, and
        #     dashes. Keys must begin with a letter.
        class UptimeCheckConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # The resource submessage for group checks. It can be used instead of a
          # monitored resource, when multiple resources are being monitored.
          # @!attribute [rw] group_id
          #   @return [::String]
          #     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]`.
          # @!attribute [rw] resource_type
          #   @return [::Google::Cloud::Monitoring::V3::GroupResourceType]
          #     The resource type of the group members.
          class ResourceGroup
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Information involved in sending ICMP pings alongside public HTTP/TCP
          # checks. For HTTP, the pings are performed for each part of the redirect
          # chain.
          # @!attribute [rw] pings_count
          #   @return [::Integer]
          #     Number of ICMP pings. A maximum of 3 ICMP pings is currently supported.
          class PingConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Information involved in an HTTP/HTTPS Uptime check request.
          # @!attribute [rw] request_method
          #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::HttpCheck::RequestMethod]
          #     The HTTP request method to use for the check. If set to
          #     `METHOD_UNSPECIFIED` then `request_method` defaults to `GET`.
          # @!attribute [rw] use_ssl
          #   @return [::Boolean]
          #     If `true`, use HTTPS instead of HTTP to run the check.
          # @!attribute [rw] path
          #   @return [::String]
          #     Optional (defaults to "/"). 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 "/", a "/" will be prepended
          #     automatically.
          # @!attribute [rw] port
          #   @return [::Integer]
          #     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.
          # @!attribute [rw] auth_info
          #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::HttpCheck::BasicAuthentication]
          #     The authentication information. Optional when creating an HTTP check;
          #     defaults to empty.
          # @!attribute [rw] mask_headers
          #   @return [::Boolean]
          #     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 `******.`
          # @!attribute [rw] headers
          #   @return [::Google::Protobuf::Map{::String => ::String}]
          #     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.
          # @!attribute [rw] content_type
          #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::HttpCheck::ContentType]
          #     The content type header to use for the check. The following
          #     configurations result in errors:
          #     1. Content type is specified in both the `headers` field and the
          #     `content_type` field.
          #     2. Request method is `GET` and `content_type` is not `TYPE_UNSPECIFIED`
          #     3. Request method is `POST` and `content_type` is `TYPE_UNSPECIFIED`.
          #     4. Request method is `POST` and a "Content-Type" header is provided via
          #     `headers` field. The `content_type` field should be used instead.
          # @!attribute [rw] custom_content_type
          #   @return [::String]
          #     A user provided content type header to use for the check. The invalid
          #     configurations outlined in the `content_type` field apply to
          #     `custom_content_type`, as well as the following:
          #     1. `content_type` is `URL_ENCODED` and `custom_content_type` is set.
          #     2. `content_type` is `USER_PROVIDED` and `custom_content_type` is not
          #     set.
          # @!attribute [rw] validate_ssl
          #   @return [::Boolean]
          #     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.
          # @!attribute [rw] body
          #   @return [::String]
          #     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: If client libraries aren't used (which performs the conversion
          #     automatically) base64 encode your `body` data since the field is of
          #     `bytes` type.
          # @!attribute [rw] accepted_response_status_codes
          #   @return [::Array<::Google::Cloud::Monitoring::V3::UptimeCheckConfig::HttpCheck::ResponseStatusCode>]
          #     If present, the check will only pass if the HTTP response status code is
          #     in this set of status codes. If empty, the HTTP status code will only
          #     pass if the HTTP status code is 200-299.
          # @!attribute [rw] ping_config
          #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::PingConfig]
          #     Contains information needed to add pings to an HTTP check.
          class HttpCheck
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # 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.
            # @!attribute [rw] username
            #   @return [::String]
            #     The username to use when authenticating with the HTTP server.
            # @!attribute [rw] password
            #   @return [::String]
            #     The password to use when authenticating with the HTTP server.
            class BasicAuthentication
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # A status to accept. Either a status code class like "2xx", or an integer
            # status code like "200".
            # @!attribute [rw] status_value
            #   @return [::Integer]
            #     A status code to accept.
            # @!attribute [rw] status_class
            #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::HttpCheck::ResponseStatusCode::StatusClass]
            #     A class of status codes to accept.
            class ResponseStatusCode
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods

              # An HTTP status code class.
              module StatusClass
                # Default value that matches no status codes.
                STATUS_CLASS_UNSPECIFIED = 0

                # The class of status codes between 100 and 199.
                STATUS_CLASS_1XX = 100

                # The class of status codes between 200 and 299.
                STATUS_CLASS_2XX = 200

                # The class of status codes between 300 and 399.
                STATUS_CLASS_3XX = 300

                # The class of status codes between 400 and 499.
                STATUS_CLASS_4XX = 400

                # The class of status codes between 500 and 599.
                STATUS_CLASS_5XX = 500

                # The class of all status codes.
                STATUS_CLASS_ANY = 1000
              end
            end

            # @!attribute [rw] key
            #   @return [::String]
            # @!attribute [rw] value
            #   @return [::String]
            class HeadersEntry
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # The HTTP request method options.
            module RequestMethod
              # No request method specified.
              METHOD_UNSPECIFIED = 0

              # GET request.
              GET = 1

              # POST request.
              POST = 2
            end

            # Header options corresponding to the content type of a HTTP request body.
            module ContentType
              # No content type specified.
              TYPE_UNSPECIFIED = 0

              # `body` is in URL-encoded form. Equivalent to setting the `Content-Type`
              # to `application/x-www-form-urlencoded` in the HTTP request.
              URL_ENCODED = 1

              # `body` is in `custom_content_type` form. Equivalent to setting the
              # `Content-Type` to the contents of `custom_content_type` in the HTTP
              # request.
              USER_PROVIDED = 2
            end
          end

          # Information required for a TCP Uptime check request.
          # @!attribute [rw] port
          #   @return [::Integer]
          #     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.
          # @!attribute [rw] ping_config
          #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::PingConfig]
          #     Contains information needed to add pings to a TCP check.
          class TcpCheck
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Optional. Used to perform content matching. This allows matching based on
          # substrings and regular expressions, together with their negations. Only the
          # first 4&nbsp;MB of an HTTP or HTTPS check's response (and the first
          # 1&nbsp;MB of a TCP check's response) are examined for purposes of content
          # matching.
          # @!attribute [rw] content
          #   @return [::String]
          #     String, regex or JSON content to match. Maximum 1024 bytes. An empty
          #     `content` string indicates no content matching is to be performed.
          # @!attribute [rw] matcher
          #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::ContentMatcher::ContentMatcherOption]
          #     The type of content matcher that will be applied to the server output,
          #     compared to the `content` string when the check is run.
          # @!attribute [rw] json_path_matcher
          #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::ContentMatcher::JsonPathMatcher]
          #     Matcher information for `MATCHES_JSON_PATH` and `NOT_MATCHES_JSON_PATH`
          class ContentMatcher
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Information needed to perform a JSONPath content match.
            # Used for `ContentMatcherOption::MATCHES_JSON_PATH` and
            # `ContentMatcherOption::NOT_MATCHES_JSON_PATH`.
            # @!attribute [rw] json_path
            #   @return [::String]
            #     JSONPath within the response output pointing to the expected
            #     `ContentMatcher::content` to match against.
            # @!attribute [rw] json_matcher
            #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckConfig::ContentMatcher::JsonPathMatcher::JsonPathMatcherOption]
            #     The type of JSONPath match that will be applied to the JSON output
            #     (`ContentMatcher.content`)
            class JsonPathMatcher
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods

              # Options to perform JSONPath content matching.
              module JsonPathMatcherOption
                # No JSONPath matcher type specified (not valid).
                JSON_PATH_MATCHER_OPTION_UNSPECIFIED = 0

                # Selects 'exact string' matching. The match succeeds if the content at
                # the `json_path` within the output is exactly the same as the
                # `content` string.
                EXACT_MATCH = 1

                # Selects regular-expression matching. The match succeeds if the
                # content at the `json_path` within the output matches the regular
                # expression specified in the `content` string.
                REGEX_MATCH = 2
              end
            end

            # Options to perform content matching.
            module ContentMatcherOption
              # No content matcher type specified (maintained for backward
              # compatibility, but deprecated for future use).
              # Treated as `CONTAINS_STRING`.
              CONTENT_MATCHER_OPTION_UNSPECIFIED = 0

              # Selects substring matching. The match succeeds if the output contains
              # the `content` string.  This is the default value for checks without
              # a `matcher` option, or where the value of `matcher` is
              # `CONTENT_MATCHER_OPTION_UNSPECIFIED`.
              CONTAINS_STRING = 1

              # Selects negation of substring matching. The match succeeds if the
              # output does _NOT_ contain the `content` string.
              NOT_CONTAINS_STRING = 2

              # Selects regular-expression matching. The match succeeds if the output
              # matches the regular expression specified in the `content` string.
              # Regex matching is only supported for HTTP/HTTPS checks.
              MATCHES_REGEX = 3

              # Selects negation of regular-expression matching. The match succeeds if
              # the output does _NOT_ match the regular expression specified in the
              # `content` string. Regex matching is only supported for HTTP/HTTPS
              # checks.
              NOT_MATCHES_REGEX = 4

              # Selects JSONPath matching. See `JsonPathMatcher` for details on when
              # the match succeeds. JSONPath matching is only supported for HTTP/HTTPS
              # checks.
              MATCHES_JSON_PATH = 5

              # Selects JSONPath matching. See `JsonPathMatcher` for details on when
              # the match succeeds. Succeeds when output does _NOT_ match as specified.
              # JSONPath is only supported for HTTP/HTTPS checks.
              NOT_MATCHES_JSON_PATH = 6
            end
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class UserLabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # What kind of checkers are available to be used by the check.
          module CheckerType
            # The default checker type. Currently converted to `STATIC_IP_CHECKERS`
            # on creation, the default conversion behavior may change in the future.
            CHECKER_TYPE_UNSPECIFIED = 0

            # `STATIC_IP_CHECKERS` are used for uptime checks that perform egress
            # across the public internet. `STATIC_IP_CHECKERS` use the static IP
            # addresses returned by `ListUptimeCheckIps`.
            STATIC_IP_CHECKERS = 1

            # `VPC_CHECKERS` are used for uptime checks that perform egress using
            # Service Directory and private network access. When using `VPC_CHECKERS`,
            # the monitored resource type must be `servicedirectory_service`.
            VPC_CHECKERS = 3
          end
        end

        # Contains the region, location, and list of IP
        # addresses where checkers in the location run from.
        # @!attribute [rw] region
        #   @return [::Google::Cloud::Monitoring::V3::UptimeCheckRegion]
        #     A broad region category in which the IP address is located.
        # @!attribute [rw] location
        #   @return [::String]
        #     A more specific location within the region that typically encodes
        #     a particular city/town/metro (and its containing state/province or country)
        #     within the broader umbrella region category.
        # @!attribute [rw] ip_address
        #   @return [::String]
        #     The IP address from which the Uptime check originates. This is a fully
        #     specified IP address (not an IP address range). Most IP addresses, as of
        #     this publication, are in IPv4 format; however, one should not rely on the
        #     IP addresses being in IPv4 format indefinitely, and should support
        #     interpreting this field in either IPv4 or IPv6 format.
        class UptimeCheckIp
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The regions from which an Uptime check can be run.
        module UptimeCheckRegion
          # Default value if no region is specified. Will result in Uptime checks
          # running from all regions.
          REGION_UNSPECIFIED = 0

          # Allows checks to run from locations within the United States of America.
          USA = 1

          # Allows checks to run from locations within the continent of Europe.
          EUROPE = 2

          # Allows checks to run from locations within the continent of South
          # America.
          SOUTH_AMERICA = 3

          # Allows checks to run from locations within the Asia Pacific area (ex:
          # Singapore).
          ASIA_PACIFIC = 4

          # Allows checks to run from locations within the western United States of
          # America
          USA_OREGON = 5

          # Allows checks to run from locations within the central United States of
          # America
          USA_IOWA = 6

          # Allows checks to run from locations within the eastern United States of
          # America
          USA_VIRGINIA = 7
        end

        # The supported resource types that can be used as values of
        # `group_resource.resource_type`.
        # `INSTANCE` includes `gce_instance` and `aws_ec2_instance` resource types.
        # The resource types `gae_app` and `uptime_url` are not valid here because
        # group checks on App Engine modules and URLs are not allowed.
        module GroupResourceType
          # Default value (not valid).
          RESOURCE_TYPE_UNSPECIFIED = 0

          # A group of instances from Google Cloud Platform (GCP) or
          # Amazon Web Services (AWS).
          INSTANCE = 1

          # A group of Amazon ELB load balancers.
          AWS_ELB_LOAD_BALANCER = 2
        end
      end
    end
  end
end