lert name are necessary to update the relevant AlertPolicies in case
      the definition of the rule group changes in the future.This field is
      optional. If this field is not empty, then it must contain a valid UTF-8
      string. This field may not exceed 2048 Unicode characters in length.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class LabelsValue(_messages.Message):
    r"""Optional. Labels to add to or overwrite in the PromQL query result.
    Label names must be valid
    (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
    Label values can be templatized by using variables
    (https://cloud.google.com/monitoring/alerts/doc-variables#doc-vars). The
    only available variable names are the names of the labels in the PromQL
    result, including "__name__" and "value". "labels" may be empty.

    Messages:
      AdditionalProperty: An additional property for a LabelsValue object.

    Fields:
      additionalProperties: Additional properties of type LabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a LabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  alertRule = _messages.StringField(1)
  disableMetricValidation = _messages.BooleanField(2)
  duration = _messages.StringField(3)
  evaluationInterval = _messages.StringField(4)
  labels = _messages.MessageField('LabelsValue', 5)
  query = _messages.StringField(6)
  ruleGroup = _messages.StringField(7)


class QueryTimeSeriesRequest(_messages.Message):
  r"""The QueryTimeSeries request. For information about the status of
  Monitoring Query Language (MQL), see the MQL deprecation notice
  (https://cloud.google.com/stackdriver/docs/deprecations/mql).

  Fields:
    pageSize: A positive number that is the maximum number of time_series_data
      to return.
    pageToken: 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 additional results from the
      previous method call.
    query: Required. The query in the Monitoring Query Language
      (https://cloud.google.com/monitoring/mql/reference) format. The default
      time zone is in UTC.
  """

  pageSize = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  pageToken = _messages.StringField(2)
  query = _messages.StringField(3)


class QueryTimeSeriesResponse(_messages.Message):
  r"""The QueryTimeSeries response. For information about the status of
  Monitoring Query Language (MQL), see the MQL deprecation notice
  (https://cloud.google.com/stackdriver/docs/deprecations/mql).

  Fields:
    nextPageToken: If there are more results than have been returned, then
      this field is set to a non-empty value. To see the additional results,
      use that value as page_token in the next call to this method.
    partialErrors: Query execution errors that may have caused the time series
      data returned to be incomplete. The available data will be available in
      the response.
    timeSeriesData: The time series data.
    timeSeriesDescriptor: The descriptor for the time series data.
  """

  nextPageToken = _messages.StringField(1)
  partialErrors = _messages.MessageField('Status', 2, repeated=True)
  timeSeriesData = _messages.MessageField('TimeSeriesData', 3, repeated=True)
  timeSeriesDescriptor = _messages.MessageField('TimeSeriesDescriptor', 4)


class Range(_messages.Message):
  r"""The range of the population values.

  Fields:
    max: The maximum of the population values.
    min: The minimum of the population values.
  """

  max = _messages.FloatField(1)
  min = _messages.FloatField(2)


class RequestBasedSli(_messages.Message):
  r"""Service Level Indicators for which atomic units of service are counted
  directly.

  Fields:
    distributionCut: distribution_cut is used when good_service is a count of
      values aggregated in a Distribution that fall into a good range. The
      total_service is the total count of all values aggregated in the
      Distribution.
    goodTotalRatio: good_total_ratio is used when the ratio of good_service to
      total_service is computed from two TimeSeries.
  """

  distributionCut = _messages.MessageField('DistributionCut', 1)
  goodTotalRatio = _messages.MessageField('TimeSeriesRatio', 2)


class ResourceGroup(_messages.Message):
  r"""The resource submessage for group checks. It can be used instead of a
  monitored resource, when multiple resources are being monitored.

  Enums:
    ResourceTypeValueValuesEnum: The resource type of the group members.

  Fields:
    groupId: 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].
    resourceType: The resource type of the group members.
  """

  class ResourceTypeValueValuesEnum(_messages.Enum):
    r"""The resource type of the group members.

    Values:
      RESOURCE_TYPE_UNSPECIFIED: Default value (not valid).
      INSTANCE: A group of instances from Google Cloud Platform (GCP) or
        Amazon Web Services (AWS).
      AWS_ELB_LOAD_BALANCER: A group of Amazon ELB load balancers.
    """
    RESOURCE_TYPE_UNSPECIFIED = 0
    INSTANCE = 1
    AWS_ELB_LOAD_BALANCER = 2

  groupId = _messages.StringField(1)
  resourceType = _messages.EnumField('ResourceTypeValueValuesEnum', 2)


class ResponseStatusCode(_messages.Message):
  r"""A status to accept. Either a status code class like "2xx", or an integer
  status code like "200".

  Enums:
    StatusClassValueValuesEnum: A class of status codes to accept.

  Fields:
    statusClass: A class of status codes to accept.
    statusValue: A status code to accept.
  """

  class StatusClassValueValuesEnum(_messages.Enum):
    r"""A class of status codes to accept.

    Values:
      STATUS_CLASS_UNSPECIFIED: Default value that matches no status codes.
      STATUS_CLASS_1XX: The class of status codes between 100 and 199.
      STATUS_CLASS_2XX: The class of status codes between 200 and 299.
      STATUS_CLASS_3XX: The class of status codes between 300 and 399.
      STATUS_CLASS_4XX: The class of status codes between 400 and 499.
      STATUS_CLASS_5XX: The class of status codes between 500 and 599.
      STATUS_CLASS_ANY: The class of all status codes.
    """
    STATUS_CLASS_UNSPECIFIED = 0
    STATUS_CLASS_1XX = 1
    STATUS_CLASS_2XX = 2
    STATUS_CLASS_3XX = 3
    STATUS_CLASS_4XX = 4
    STATUS_CLASS_5XX = 5
    STATUS_CLASS_ANY = 6

  statusClass = _messages.EnumField('StatusClassValueValuesEnum', 1)
  statusValue = _messages.IntegerField(2, variant=_messages.Variant.INT32)


class RowCountTest(_messages.Message):
  r"""A test that checks if the number of rows in the result set violates some
  threshold.

  Enums:
    ComparisonValueValuesEnum: Required. The comparison to apply between the
      number of rows returned by the query and the threshold.

  Fields:
    comparison: Required. The comparison to apply between the number of rows
      returned by the query and the threshold.
    threshold: Required. The value against which to compare the row count.
  """

  class ComparisonValueValuesEnum(_messages.Enum):
    r"""Required. The comparison to apply between the number of rows returned
    by the query and the threshold.

    Values:
      COMPARISON_UNSPECIFIED: No ordering relationship is specified.
      COMPARISON_GT: True if the left argument is greater than the right
        argument.
      COMPARISON_GE: True if the left argument is greater than or equal to the
        right argument.
      COMPARISON_LT: True if the left argument is less than the right
        argument.
      COMPARISON_LE: True if the left argument is less than or equal to the
        right argument.
      COMPARISON_EQ: True if the left argument is equal to the right argument.
      COMPARISON_NE: True if the left argument is not equal to the right
        argument.
    """
    COMPARISON_UNSPECIFIED = 0
    COMPARISON_GT = 1
    COMPARISON_GE = 2
    COMPARISON_LT = 3
    COMPARISON_LE = 4
    COMPARISON_EQ = 5
    COMPARISON_NE = 6

  comparison = _messages.EnumField('ComparisonValueValuesEnum', 1)
  threshold = _messages.IntegerField(2)


class SendNotificationChannelVerificationCodeRequest(_messages.Message):
  r"""The SendNotificationChannelVerificationCode request."""


class Service(_messages.Message):
  r"""A Service is a discrete, autonomous, and network-accessible unit,
  designed to solve an individual concern (Wikipedia
  (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a
  Service acts as the root resource under which operational aspects of the
  service are accessible.

  Messages:
    UserLabelsValue: Labels which have been used to annotate the service.
      Label keys must start with a letter. Label keys and values may contain
      lowercase letters, numbers, underscores, and dashes. Label keys and
      values have a maximum length of 63 characters, and must be less than 128
      bytes in size. Up to 64 label entries may be stored. For labels which do
      not have a semantic value, the empty string may be supplied for the
      label value.

  Fields:
    appEngine: Type used for App Engine services.
    basicService: Message that contains the service type and service labels of
      this service if it is a basic service. Documentation and examples here
      (https://cloud.google.com/stackdriver/docs/solutions/slo-
      monitoring/api/api-structures#basic-svc-w-basic-sli).
    cloudEndpoints: Type used for Cloud Endpoints services.
    cloudRun: Type used for Cloud Run services.
    clusterIstio: Type used for Istio services that live in a Kubernetes
      cluster.
    custom: Custom service type.
    displayName: Name used for UI elements listing this Service.
    gkeNamespace: Type used for GKE Namespaces.
    gkeService: Type used for GKE Services (the Kubernetes concept of a
      service).
    gkeWorkload: Type used for GKE Workloads.
    istioCanonicalService: Type used for canonical services scoped to an Istio
      mesh. Metrics for Istio are documented here
      (https://istio.io/latest/docs/reference/config/metrics/)
    meshIstio: Type used for Istio services scoped to an Istio mesh.
    name: Identifier. Resource name for this Service. The format is:
      projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
    telemetry: Configuration for how to query telemetry on a Service.
    userLabels: Labels which have been used to annotate the service. Label
      keys must start with a letter. Label keys and values may contain
      lowercase letters, numbers, underscores, and dashes. Label keys and
      values have a maximum length of 63 characters, and must be less than 128
      bytes in size. Up to 64 label entries may be stored. For labels which do
      not have a semantic value, the empty string may be supplied for the
      label value.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class UserLabelsValue(_messages.Message):
    r"""Labels which have been used to annotate the service. Label keys must
    start with a letter. Label keys and values may contain lowercase letters,
    numbers, underscores, and dashes. Label keys and values have a maximum
    length of 63 characters, and must be less than 128 bytes in size. Up to 64
    label entries may be stored. For labels which do not have a semantic
    value, the empty string may be supplied for the label value.

    Messages:
      AdditionalProperty: An additional property for a UserLabelsValue object.

    Fields:
      additionalProperties: Additional properties of type UserLabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a UserLabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  appEngine = _messages.MessageField('AppEngine', 1)
  basicService = _messages.MessageField('BasicService', 2)
  cloudEndpoints = _messages.MessageField('CloudEndpoints', 3)
  cloudRun = _messages.MessageField('CloudRun', 4)
  clusterIstio = _messages.MessageField('ClusterIstio', 5)
  custom = _messages.MessageField('Custom', 6)
  displayName = _messages.StringField(7)
  gkeNamespace = _messages.MessageField('GkeNamespace', 8)
  gkeService = _messages.MessageField('GkeService', 9)
  gkeWorkload = _messages.MessageField('GkeWorkload', 10)
  istioCanonicalService = _messages.MessageField('IstioCanonicalService', 11)
  meshIstio = _messages.MessageField('MeshIstio', 12)
  name = _messages.StringField(13)
  telemetry = _messages.MessageField('Telemetry', 14)
  userLabels = _messages.MessageField('UserLabelsValue', 15)


class ServiceAgentAuthentication(_messages.Message):
  r"""Contains information needed for generating either an OpenID Connect
  token (https://developers.google.com/identity/protocols/OpenIDConnect) or
  OAuth token (https://developers.google.com/identity/protocols/oauth2). The
  token will be generated for the Monitoring service agent service account.

  Enums:
    TypeValueValuesEnum: Type of authentication.

  Fields:
    type: Type of authentication.
  """

  class TypeValueValuesEnum(_messages.Enum):
    r"""Type of authentication.

    Values:
      SERVICE_AGENT_AUTHENTICATION_TYPE_UNSPECIFIED: Default value, will
        result in OIDC Authentication.
      OIDC_TOKEN: OIDC Authentication
    """
    SERVICE_AGENT_AUTHENTICATION_TYPE_UNSPECIFIED = 0
    OIDC_TOKEN = 1

  type = _messages.EnumField('TypeValueValuesEnum', 1)


class ServiceLevelIndicator(_messages.Message):
  r"""A Service-Level Indicator (SLI) describes the "performance" of a
  service. For some services, the SLI is well-defined. In such cases, the SLI
  can be described easily by referencing the well-known SLI and providing the
  needed parameters. Alternatively, a "custom" SLI can be defined with a query
  to the underlying metric store. An SLI is defined to be good_service /
  total_service over any queried time interval. The value of performance
  always falls into the range 0 <= performance <= 1. A custom SLI describes
  how to compute this ratio, whether this is by dividing values from a pair of
  time series, cutting a Distribution into good and bad counts, or counting
  time windows in which the service complies with a criterion. For separation
  of concerns, a single Service-Level Indicator measures performance for only
  one aspect of service quality, such as fraction of successful queries or
  fast-enough queries.

  Fields:
    basicSli: Basic SLI on a well-known service type.
    requestBased: Request-based SLIs
    windowsBased: Windows-based SLIs
  """

  basicSli = _messages.MessageField('BasicSli', 1)
  requestBased = _messages.MessageField('RequestBasedSli', 2)
  windowsBased = _messages.MessageField('WindowsBasedSli', 3)


class ServiceLevelObjective(_messages.Message):
  r"""A Service-Level Objective (SLO) describes a level of desired good
  service. It consists of a service-level indicator (SLI), a performance goal,
  and a period over which the objective is to be evaluated against that goal.
  The SLO can use SLIs defined in a number of different manners. Typical SLOs
  might include "99% of requests in each rolling week have latency below 200
  milliseconds" or "99.5% of requests in each calendar month return
  successfully."

  Enums:
    CalendarPeriodValueValuesEnum: A calendar period, semantically "since the
      start of the current ". At this time, only DAY, WEEK, FORTNIGHT, and
      MONTH are supported.

  Messages:
    UserLabelsValue: Labels which have been used to annotate the service-level
      objective. Label keys must start with a letter. Label keys and values
      may contain lowercase letters, numbers, underscores, and dashes. Label
      keys and values have a maximum length of 63 characters, and must be less
      than 128 bytes in size. Up to 64 label entries may be stored. For labels
      which do not have a semantic value, the empty string may be supplied for
      the label value.

  Fields:
    calendarPeriod: A calendar period, semantically "since the start of the
      current ". At this time, only DAY, WEEK, FORTNIGHT, and MONTH are
      supported.
    displayName: Name used for UI elements listing this SLO.
    goal: The fraction of service that must be good in order for this
      objective to be met. 0 < goal <= 0.9999.
    name: Identifier. Resource name for this ServiceLevelObjective. The format
      is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelOb
      jectives/[SLO_NAME]
    rollingPeriod: A rolling time period, semantically "in the past ". Must be
      an integer multiple of 1 day no larger than 30 days.
    serviceLevelIndicator: The definition of good service, used to measure and
      calculate the quality of the Service's performance with respect to a
      single aspect of service quality.
    userLabels: Labels which have been used to annotate the service-level
      objective. Label keys must start with a letter. Label keys and values
      may contain lowercase letters, numbers, underscores, and dashes. Label
      keys and values have a maximum length of 63 characters, and must be less
      than 128 bytes in size. Up to 64 label entries may be stored. For labels
      which do not have a semantic value, the empty string may be supplied for
      the label value.
  """

  class CalendarPeriodValueValuesEnum(_messages.Enum):
    r"""A calendar period, semantically "since the start of the current ". At
    this time, only DAY, WEEK, FORTNIGHT, and MONTH are supported.

    Values:
      CALENDAR_PERIOD_UNSPECIFIED: Undefined period, raises an error.
      DAY: A day.
      WEEK: A week. Weeks begin on Monday, following ISO 8601
        (https://en.wikipedia.org/wiki/ISO_week_date).
      FORTNIGHT: A fortnight. The first calendar fortnight of the year begins
        at the start of week 1 according to ISO 8601
        (https://en.wikipedia.org/wiki/ISO_week_date).
      MONTH: A month.
      QUARTER: A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and
        1-Oct of each year.
      HALF: A half-year. Half-years start on dates 1-Jan and 1-Jul.
      YEAR: A year.
    """
    CALENDAR_PERIOD_UNSPECIFIED = 0
    DAY = 1
    WEEK = 2
    FORTNIGHT = 3
    MONTH = 4
    QUARTER = 5
    HALF = 6
    YEAR = 7

  @encoding.MapUnrecognizedFields('additionalProperties')
  class UserLabelsValue(_messages.Message):
    r"""Labels which have been used to annotate the service-level objective.
    Label keys must start with a letter. Label keys and values may contain
    lowercase letters, numbers, underscores, and dashes. Label keys and values
    have a maximum length of 63 characters, and must be less than 128 bytes in
    size. Up to 64 label entries may be stored. For labels which do not have a
    semantic value, the empty string may be supplied for the label value.

    Messages:
      AdditionalProperty: An additional property for a UserLabelsValue object.

    Fields:
      additionalProperties: Additional properties of type UserLabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a UserLabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  calendarPeriod = _messages.EnumField('CalendarPeriodValueValuesEnum', 1)
  displayName = _messages.StringField(2)
  goal = _messages.FloatField(3)
  name = _messages.StringField(4)
  rollingPeriod = _messages.StringField(5)
  serviceLevelIndicator = _messages.MessageField('ServiceLevelIndicator', 6)
  userLabels = _messages.MessageField('UserLabelsValue', 7)


class Snooze(_messages.Message):
  r"""A Snooze will prevent any alerts from being opened, and close any that
  are already open. The Snooze will work on alerts that match the criteria
  defined in the Snooze. The Snooze will be active from interval.start_time
  through interval.end_time.

  Fields:
    criteria: Required. This defines the criteria for applying the Snooze. See
      Criteria for more information.
    displayName: Required. A display name for the Snooze. This can be, at
      most, 512 unicode characters.
    interval: Required. The Snooze will be active from interval.start_time
      through interval.end_time. interval.start_time cannot be in the past.
      There is a 15 second clock skew to account for the time it takes for a
      request to reach the API from the UI.
    name: Required. Identifier. The name of the Snooze. The format is:
      projects/[PROJECT_ID_OR_NUMBER]/snoozes/[SNOOZE_ID] The ID of the Snooze
      will be generated by the system.
  """

  criteria = _messages.MessageField('Criteria', 1)
  displayName = _messages.StringField(2)
  interval = _messages.MessageField('TimeInterval', 3)
  name = _messages.StringField(4)


class SourceContext(_messages.Message):
  r"""SourceContext represents information about the source of a protobuf
  element, like the file in which it is defined.

  Fields:
    fileName: The path-qualified name of the .proto file that contained the
      associated protobuf element. For example:
      "google/protobuf/source_context.proto".
  """

  fileName = _messages.StringField(1)


class SpanContext(_messages.Message):
  r"""The context of a span. This is attached to an Exemplar in Distribution
  values during aggregation.It contains the name of a span with format:
  projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID]

  Fields:
    spanName: The resource name of the span. The format is:
      projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID]
      [TRACE_ID] is a unique identifier for a trace within a project; it is a
      32-character hexadecimal encoding of a 16-byte array.[SPAN_ID] is a
      unique identifier for a span within a trace; it is a 16-character
      hexadecimal encoding of an 8-byte array.
  """

  spanName = _messages.StringField(1)


class SqlCondition(_messages.Message):
  r"""A condition that allows alerting policies to be defined using GoogleSQL.
  SQL conditions examine a sliding window of logs using GoogleSQL. Alert
  policies with SQL conditions may incur additional billing.

  Fields:
    booleanTest: Test the boolean value in the indicated column.
    daily: Schedule the query to execute every so many days.
    hourly: Schedule the query to execute every so many hours.
    minutes: Schedule the query to execute every so many minutes.
    query: Required. The Log Analytics SQL query to run, as a string. The
      query must conform to the required shape. Specifically, the query must
      not try to filter the input by time. A filter will automatically be
      applied to filter the input so that the query receives all rows received
      since the last time the query was run.For example, the following query
      extracts all log entries containing an HTTP request: SELECT timestamp,
      log_name, severity, http_request, resource, labels FROM my-
      project.global._Default._AllLogs WHERE http_request IS NOT NULL
    rowCountTest: Test the row count against a threshold.
  """

  booleanTest = _messages.MessageField('BooleanTest', 1)
  daily = _messages.MessageField('Daily', 2)
  hourly = _messages.MessageField('Hourly', 3)
  minutes = _messages.MessageField('Minutes', 4)
  query = _messages.StringField(5)
  rowCountTest = _messages.MessageField('RowCountTest', 6)


class StandardQueryParameters(_messages.Message):
  r"""Query parameters accepted by all methods.

  Enums:
    FXgafvValueValuesEnum: V1 error format.
    AltValueValuesEnum: Data format for response.

  Fields:
    f__xgafv: V1 error format.
    access_token: OAuth access token.
    alt: Data format for response.
    callback: JSONP
    fields: Selector specifying which fields to include in a partial response.
    key: API key. Your API key identifies your project and provides you with
      API access, quota, and reports. Required unless you provide an OAuth 2.0
      token.
    oauth_token: OAuth 2.0 token for the current user.
    prettyPrint: Returns response with indentations and line breaks.
    quotaUser: Available to use for quota purposes for server-side
      applications. Can be any arbitrary string assigned to a user, but should
      not exceed 40 characters.
    trace: A tracing token of the form "token:<tokenid>" to include in api
      requests.
    uploadType: Legacy upload protocol for media (e.g. "media", "multipart").
    upload_protocol: Upload protocol for media (e.g. "raw", "multipart").
  """

  class AltValueValuesEnum(_messages.Enum):
    r"""Data format for response.

    Values:
      json: Responses with Content-Type of application/json
      media: Media download with context-dependent Content-Type
      proto: Responses with Content-Type of application/x-protobuf
    """
    json = 0
    media = 1
    proto = 2

  class FXgafvValueValuesEnum(_messages.Enum):
    r"""V1 error format.

    Values:
      _1: v1 error format
      _2: v2 error format
    """
    _1 = 0
    _2 = 1

  f__xgafv = _messages.EnumField('FXgafvValueValuesEnum', 1)
  access_token = _messages.StringField(2)
  alt = _messages.EnumField('AltValueValuesEnum', 3, default='json')
  callback = _messages.StringField(4)
  fields = _messages.StringField(5)
  key = _messages.StringField(6)
  oauth_token = _messages.StringField(7)
  prettyPrint = _messages.BooleanField(8, default=True)
  quotaUser = _messages.StringField(9)
  trace = _messages.StringField(10)
  uploadType = _messages.StringField(11)
  upload_protocol = _messages.StringField(12)


class Status(_messages.Message):
  r"""The Status type defines a logical error model that is suitable for
  different programming environments, including REST APIs and RPC APIs. It is
  used by gRPC (https://github.com/grpc). Each Status message contains three
  pieces of data: error code, error message, and error details.You can find
  out more about this error model and how to work with it in the API Design
  Guide (https://cloud.google.com/apis/design/errors).

  Messages:
    DetailsValueListEntry: A DetailsValueListEntry object.

  Fields:
    code: The status code, which should be an enum value of google.rpc.Code.
    details: A list of messages that carry the error details. There is a
      common set of message types for APIs to use.
    message: A developer-facing error message, which should be in English. Any
      user-facing error message should be localized and sent in the
      google.rpc.Status.details field, or localized by the client.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class DetailsValueListEntry(_messages.Message):
    r"""A DetailsValueListEntry object.

    Messages:
      AdditionalProperty: An additional property for a DetailsValueListEntry
        object.

    Fields:
      additionalProperties: Properties of the object. Contains field @type
        with type URL.
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a DetailsValueListEntry object.

      Fields:
        key: Name of the additional property.
        value: A extra_types.JsonValue attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('extra_types.JsonValue', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  code = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  details = _messages.MessageField('DetailsValueListEntry', 2, repeated=True)
  message = _messages.StringField(3)


class SyntheticMonitorTarget(_messages.Message):
  r"""Describes a Synthetic Monitor to be invoked by Uptime.

  Fields:
    cloudFunctionV2: Target a Synthetic Monitor GCFv2 instance.
  """

  cloudFunctionV2 = _messages.MessageField('CloudFunctionV2Target', 1)


class TcpCheck(_messages.Message):
  r"""Information required for a TCP Uptime check request.

  Fields:
    pingConfig: Contains information needed to add pings to a TCP check.
    port: 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.
  """

  pingConfig = _messages.MessageField('PingConfig', 1)
  port = _messages.IntegerField(2, variant=_messages.Variant.INT32)


class Telemetry(_messages.Message):
  r"""Configuration for how to query telemetry on a Service.

  Fields:
    resourceName: The full name of the resource that defines this service.
      Formatted as described in
      https://cloud.google.com/apis/design/resource_names.
  """

  resourceName = _messages.StringField(1)


class TimeInterval(_messages.Message):
  r"""Describes a time interval: Reads: A half-open time interval. It includes
  the end time but excludes the start time: (startTime, endTime]. The start
  time must be specified, must be earlier than the end time, and should be no
  older than the data retention period for the metric. Writes: A closed time
  interval. It extends from the start time to the end time, and includes both:
  [startTime, endTime]. Valid time intervals depend on the MetricKind (https:/
  /cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#M
  etricKind) of the metric value. The end time must not be earlier than the
  start time, and the end time must not be more than 25 hours in the past or
  more than five minutes in the future. For GAUGE metrics, the startTime value
  is technically optional; if no value is specified, the start time defaults
  to the value of the end time, and the interval represents a single point in
  time. If both start and end times are specified, they must be identical.
  Such an interval is valid only for GAUGE metrics, which are point-in-time
  measurements. The end time of a new interval must be at least a millisecond
  after the end time of the previous interval. For DELTA metrics, the start
  time and end time must specify a non-zero interval, with subsequent points
  specifying contiguous and non-overlapping intervals. For DELTA metrics, the
  start time of the next interval must be at least a millisecond after the end
  time of the previous interval. For CUMULATIVE metrics, the start time and
  end time must specify a non-zero interval, with subsequent points specifying
  the same start time and increasing end times, until an event resets the
  cumulative value to zero and sets a new start time for the following points.
  The new start time must be at least a millisecond after the end time of the
  previous interval. The start time of a new interval must be at least a
  millisecond after the end time of the previous interval because intervals
  are closed. If the start time of a new interval is the same as the end time
  of the previous interval, then data written at the new start time could
  overwrite data written at the previous end time.

  Fields:
    endTime: Required. The end of the time interval.
    startTime: Optional. The beginning of the time interval. The default value
      for the start time is the end time. The start time must not be later
      than the end time.
  """

  endTime = _messages.StringField(1)
  startTime = _messages.StringField(2)


class TimeOfDay(_messages.Message):
  r"""Represents a time of day. The date and time zone are either not
  significant or are specified elsewhere. An API may choose to allow leap
  seconds. Related types are google.type.Date and google.protobuf.Timestamp.

  Fields:
    hours: Hours of a day in 24 hour format. Must be greater than or equal to
      0 and typically must be less than or equal to 23. An API may choose to
      allow the value "24:00:00" for scenarios like business closing time.
    minutes: Minutes of an hour. Must be greater than or equal to 0 and less
      than or equal to 59.
    nanos: Fractions of seconds, in nanoseconds. Must be greater than or equal
      to 0 and less than or equal to 999,999,999.
    seconds: Seconds of a minute. Must be greater than or equal to 0 and
      typically must be less than or equal to 59. An API may allow the value
      60 if it allows leap-seconds.
  """

  hours = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  minutes = _messages.IntegerField(2, variant=_messages.Variant.INT32)
  nanos = _messages.IntegerField(3, variant=_messages.Variant.INT32)
  seconds = _messages.IntegerField(4, variant=_messages.Variant.INT32)


class TimeSeries(_messages.Message):
  r"""A collection of data points that describes the time-varying values of a
  metric. A time series is identified by a combination of a fully-specified
  monitored resource and a fully-specified metric. This type is used for both
  listing and creating time series.

  Enums:
    MetricKindValueValuesEnum: The metric kind of the time series. When
      listing time series, this metric kind might be different from the metric
      kind of the associated metric if this time series is an alignment or
      reduction of other time series.When creating a time series, this field
      is optional. If present, it must be the same as the metric kind of the
      associated metric. If the associated metric's descriptor must be auto-
      created, then this field specifies the metric kind of the new descriptor
      and must be either GAUGE (the default) or CUMULATIVE.
    ValueTypeValueValuesEnum: The value type of the time series. When listing
      time series, this value type might be different from the value type of
      the associated metric if this time series is an alignment or reduction
      of other time series.When creating a time series, this field is
      optional. If present, it must be the same as the type of the data in the
      points field.

  Fields:
    description: Input only. A detailed description of the time series that
      will be associated with the google.api.MetricDescriptor for the metric.
      Once set, this field cannot be changed through CreateTimeSeries.
    metadata: Output only. The associated monitored resource metadata. When
      reading a time series, this field will include metadata labels that are
      explicitly named in the reduction. When creating a time series, this
      field is ignored.
    metric: The associated metric. A fully-specified metric used to identify
      the time series.
    metricKind: The metric kind of the time series. When listing time series,
      this metric kind might be different from the metric kind of the
      associated metric if this time series is an alignment or reduction of
      other time series.When creating a time series, this field is optional.
      If present, it must be the same as the metric kind of the associated
      metric. If the associated metric's descriptor must be auto-created, then
      this field specifies the metric kind of the new descriptor and must be
      either GAUGE (the default) or CUMULATIVE.
    points: The data points of this time series. When listing time series,
      points are returned in reverse time order.When creating a time series,
      this field must contain exactly one point and the point's type must be
      the same as the value type of the associated metric. If the associated
      metric's descriptor must be auto-created, then the value type of the
      descriptor is determined by the point's type, which must be BOOL, INT64,
      DOUBLE, or DISTRIBUTION.
    resource: The associated monitored resource. Custom metrics can use only
      certain monitored resource types in their time series data. For more
      information, see Monitored resources for custom metrics
      (https://cloud.google.com/monitoring/custom-metrics/creating-
      metrics#custom-metric-resources).
    unit: The units in which the metric value is reported. It is only
      applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit
      defines the representation of the stored metric values. This field can
      only be changed through CreateTimeSeries when it is empty.
    valueType: The value type of the time series. When listing time series,
      this value type might be different from the value type of the associated
      metric if this time series is an alignment or reduction of other time
      series.When creating a time series, this field is optional. If present,
      it must be the same as the type of the data in the points field.
  """

  class MetricKindValueValuesEnum(_messages.Enum):
    r"""The metric kind of the time series. When listing time series, this
    metric kind might be different from the metric kind of the associated
    metric if this time series is an alignment or reduction of other time
    series.When creating a time series, this field is optional. If present, it
    must be the same as the metric kind of the associated metric. If the
    associated metric's descriptor must be auto-created, then this field
    specifies the metric kind of the new descriptor and must be either GAUGE
    (the default) or CUMULATIVE.

    Values:
      METRIC_KIND_UNSPECIFIED: Do not use this default value.
      GAUGE: An instantaneous measurement of a value.
      DELTA: The change in a value during a time interval.
      CUMULATIVE: A value accumulated over a time interval. Cumulative
        measurements in a time series should have the same start time and
        increasing end times, until an event resets the cumulative value to
        zero and sets a new start time for the following points.
    """
    METRIC_KIND_UNSPECIFIED = 0
    GAUGE = 1
    DELTA = 2
    CUMULATIVE = 3

  class ValueTypeValueValuesEnum(_messages.Enum):
    r"""The value type of the time series. When listing time series, this
    value type might be different from the value type of the associated metric
    if this time series is an alignment or reduction of other time series.When
    creating a time series, this field is optional. If present, it must be the
    same as the type of the data in the points field.

    Values:
      VALUE_TYPE_UNSPECIFIED: Do not use this default value.
      BOOL: The value is a boolean. This value type can be used only if the
        metric kind is GAUGE.
      INT64: The value is a signed 64-bit integer.
      DOUBLE: The value is a double precision floating point number.
      STRING: The value is a text string. This value type can be used only if
        the metric kind is GAUGE.
      DISTRIBUTION: The value is a Distribution.
      MONEY: The value is money.
    """
    VALUE_TYPE_UNSPECIFIED = 0
    BOOL = 1
    INT64 = 2
    DOUBLE = 3
    STRING = 4
    DISTRIBUTION = 5
    MONEY = 6

  description = _messages.StringField(1)
  metadata = _messages.MessageField('MonitoredResourceMetadata', 2)
  metric = _messages.MessageField('Metric', 3)
  metricKind = _messages.EnumField('MetricKindValueValuesEnum', 4)
  points = _messages.MessageField('Point', 5, repeated=True)
  resource = _messages.MessageField('MonitoredResource', 6)
  unit = _messages.StringField(7)
  valueType = _messages.EnumField('ValueTypeValueValuesEnum', 8)


class TimeSeriesData(_messages.Message):
  r"""Represents the values of a time series associated with a
  TimeSeriesDescriptor.

  Fields:
    labelValues: The values of the labels in the time series identifier, given
      in the same order as the label_descriptors field of the
      TimeSeriesDescriptor associated with this object. Each value must have a
      value of the type given in the corresponding entry of label_descriptors.
    pointData: The points in the time series.
  """

  labelValues = _messages.MessageField('LabelValue', 1, repeated=True)
  pointData = _messages.MessageField('PointData', 2, repeated=True)


class TimeSeriesDescriptor(_messages.Message):
  r"""A descriptor for the labels and points in a time series.

  Fields:
    labelDescriptors: Descriptors for the labels.
    pointDescriptors: Descriptors for the point data value columns.
  """

  labelDescriptors = _messages.MessageField('LabelDescriptor', 1, repeated=True)
  pointDescriptors = _messages.MessageField('ValueDescriptor', 2, repeated=True)


class TimeSeriesRatio(_messages.Message):
  r"""A TimeSeriesRatio specifies two TimeSeries to use for computing the
  good_service / total_service ratio. The specified TimeSeries must have
  ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or
  MetricKind = CUMULATIVE. The TimeSeriesRatio must specify exactly two of
  good, bad, and total, and the relationship good_service + bad_service =
  total_service will be assumed.

  Fields:
    badServiceFilter: A monitoring filter
      (https://cloud.google.com/monitoring/api/v3/filters) specifying a
      TimeSeries quantifying bad service, either demanded service that was not
      provided or demanded service that was of inadequate quality. Must have
      ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA
      or MetricKind = CUMULATIVE.
    goodServiceFilter: A monitoring filter
      (https://cloud.google.com/monitoring/api/v3/filters) specifying a
      TimeSeries quantifying good service provided. Must have ValueType =
      DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or
      MetricKind = CUMULATIVE.
    totalServiceFilter: A monitoring filter
      (https://cloud.google.com/monitoring/api/v3/filters) specifying a
      TimeSeries quantifying total demanded service. Must have ValueType =
      DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or
      MetricKind = CUMULATIVE.
  """

  badServiceFilter = _messages.StringField(1)
  goodServiceFilter = _messages.StringField(2)
  totalServiceFilter = _messages.StringField(3)


class Trigger(_messages.Message):
  r"""Specifies how many time series must fail a predicate to trigger a
  condition. If not specified, then a {count: 1} trigger is used.

  Fields:
    count: The absolute number of time series that must fail the predicate for
      the condition to be triggered.
    percent: The percentage of time series that must fail the predicate for
      the condition to be triggered.
  """

  count = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  percent = _messages.FloatField(2)


class Type(_messages.Message):
  r"""A protocol buffer message type.New usages of this message as an
  alternative to DescriptorProto are strongly discouraged. This message does
  not reliability preserve all information necessary to model the schema and
  preserve semantics. Instead make use of FileDescriptorSet which preserves
  the necessary information.

  Enums:
    SyntaxValueValuesEnum: The source syntax.

  Fields:
    edition: The source edition string, only valid when syntax is
      SYNTAX_EDITIONS.
    fields: The list of fields.
    name: The fully qualified message name.
    oneofs: The list of types appearing in oneof definitions in this type.
    options: The protocol buffer options.
    sourceContext: The source context.
    syntax: The source syntax.
  """

  class SyntaxValueValuesEnum(_messages.Enum):
    r"""The source syntax.

    Values:
      SYNTAX_PROTO2: Syntax proto2.
      SYNTAX_PROTO3: Syntax proto3.
      SYNTAX_EDITIONS: Syntax editions.
    """
    SYNTAX_PROTO2 = 0
    SYNTAX_PROTO3 = 1
    SYNTAX_EDITIONS = 2

  edition = _messages.StringField(1)
  fields = _messages.MessageField('Field', 2, repeated=True)
  name = _messages.StringField(3)
  oneofs = _messages.StringField(4, repeated=True)
  options = _messages.MessageField('Option', 5, repeated=True)
  sourceContext = _messages.MessageField('SourceContext', 6)
  syntax = _messages.EnumField('SyntaxValueValuesEnum', 7)


class TypedValue(_messages.Message):
  r"""A single strongly-typed value.

  Fields:
    boolValue: A Boolean value: true or false.
    distributionValue: A distribution value.
    doubleValue: A 64-bit double-precision floating-point number. Its
      magnitude is approximately \xb110\xb1300 and it has 16 significant
      digits of precision.
    int64Value: A 64-bit integer. Its range is approximately \xb19.2x1018.
    stringValue: A variable-length string value.
  """

  boolValue = _messages.BooleanField(1)
  distributionValue = _messages.MessageField('Distribution', 2)
  doubleValue = _messages.FloatField(3)
  int64Value = _messages.IntegerField(4)
  stringValue = _messages.StringField(5)


class UptimeCheckConfig(_messages.Message):
  r"""This message configures which resources and services to monitor for
  availability.

  Enums:
    CheckerTypeValueValuesEnum: The type of checkers to use to execute the
      Uptime check.
    SelectedRegionsValueListEntryValuesEnum:

  Messages:
    UserLabelsValue: 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.

  Fields:
    checkerType: The type of checkers to use to execute the Uptime check.
    contentMatchers: 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.
    disabled: Whether the check is disabled or not.
    displayName: 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.
    httpCheck: Contains information needed to make an HTTP or HTTPS check.
    internalCheckers: 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.
    isInternal: 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.
    logCheckFailures: To specify whether to log the results of failed probes
      to Cloud Logging.
    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
    name: Identifier. 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.
    period: 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.
    resourceGroup: The group resource associated with the configuration.
    selectedRegions: 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.
    syntheticMonitor: Specifies a Synthetic Monitor to invoke.
    tcpCheck: Contains information needed to make a TCP check.
    timeout: The maximum amount of time to wait for the request to complete
      (must be between 1 and 60 seconds). Required.
    userLabels: 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 CheckerTypeValueValuesEnum(_messages.Enum):
    r"""The type of checkers to use to execute the Uptime check.

    Values:
      CHECKER_TYPE_UNSPECIFIED: The default checker type. Currently converted
        to STATIC_IP_CHECKERS on creation, the default conversion behavior may
        change in the future.
      STATIC_IP_CHECKERS: 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.
      VPC_CHECKERS: 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.
    """
    CHECKER_TYPE_UNSPECIFIED = 0
    STATIC_IP_CHECKERS = 1
    VPC_CHECKERS = 2

  class SelectedRegionsValueListEntryValuesEnum(_messages.Enum):
    r"""SelectedRegionsValueListEntryValuesEnum enum type.

    Values:
      REGION_UNSPECIFIED: Default value if no region is specified. Will result
        in Uptime checks running from all regions.
      USA: Allows checks to run from locations within the United States of
        America.
      EUROPE: Allows checks to run from locations within the continent of
        Europe.
      SOUTH_AMERICA: Allows checks to run from locations within the continent
        of South America.
      ASIA_PACIFIC: Allows checks to run from locations within the Asia
        Pacific area (ex: Singapore).
      USA_OREGON: Allows checks to run from locations within the western
        United States of America
      USA_IOWA: Allows checks to run from locations within the central United
        States of America
      USA_VIRGINIA: Allows checks to run from locations within the eastern
        United States of America
    """
    REGION_UNSPECIFIED = 0
    USA = 1
    EUROPE = 2
    SOUTH_AMERICA = 3
    ASIA_PACIFIC = 4
    USA_OREGON = 5
    USA_IOWA = 6
    USA_VIRGINIA = 7

  @encoding.MapUnrecognizedFields('additionalProperties')
  class UserLabelsValue(_messages.Message):
    r"""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.

    Messages:
      AdditionalProperty: An additional property for a UserLabelsValue object.

    Fields:
      additionalProperties: Additional properties of type UserLabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a UserLabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  checkerType = _messages.EnumField('CheckerTypeValueValuesEnum', 1)
  contentMatchers = _messages.MessageField('ContentMatcher', 2, repeated=True)
  disabled = _messages.BooleanField(3)
  displayName = _messages.StringField(4)
  httpCheck = _messages.MessageField('HttpCheck', 5)
  internalCheckers = _messages.MessageField('InternalChecker', 6, repeated=True)
  isInternal = _messages.BooleanField(7)
  logCheckFailures = _messages.BooleanField(8)
  monitoredResource = _messages.MessageField('MonitoredResource', 9)
  name = _messages.StringField(10)
  period = _messages.StringField(11)
  resourceGroup = _messages.MessageField('ResourceGroup', 12)
  selectedRegions = _messages.EnumField('SelectedRegionsValueListEntryValuesEnum', 13, repeated=True)
  syntheticMonitor = _messages.MessageField('SyntheticMonitorTarget', 14)
  tcpCheck = _messages.MessageField('TcpCheck', 15)
  timeout = _messages.StringField(16)
  userLabels = _messages.MessageField('UserLabelsValue', 17)


class UptimeCheckIp(_messages.Message):
  r"""Contains the region, location, and list of IP addresses where checkers
  in the location run from.

  Enums:
    RegionValueValuesEnum: A broad region category in which the IP address is
      located.

  Fields:
    ipAddress: 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.
    location: 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.
    region: A broad region category in which the IP address is located.
  """

  class RegionValueValuesEnum(_messages.Enum):
    r"""A broad region category in which the IP address is located.

    Values:
      REGION_UNSPECIFIED: Default value if no region is specified. Will result
        in Uptime checks running from all regions.
      USA: Allows checks to run from locations within the United States of
        America.
      EUROPE: Allows checks to run from locations within the continent of
        Europe.
      SOUTH_AMERICA: Allows checks to run from locations within the continent
        of South America.
      ASIA_PACIFIC: Allows checks to run from locations within the Asia
        Pacific area (ex: Singapore).
      USA_OREGON: Allows checks to run from locations within the western
        United States of America
      USA_IOWA: Allows checks to run from locations within the central United
        States of America
      USA_VIRGINIA: Allows checks to run from locations within the eastern
        United States of America
    """
    REGION_UNSPECIFIED = 0
    USA = 1
    EUROPE = 2
    SOUTH_AMERICA = 3
    ASIA_PACIFIC = 4
    USA_OREGON = 5
    USA_IOWA = 6
    USA_VIRGINIA = 7

  ipAddress = _messages.StringField(1)
  location = _messages.StringField(2)
  region = _messages.EnumField('RegionValueValuesEnum', 3)


class ValueDescriptor(_messages.Message):
  r"""A descriptor for the value columns in a data point.

  Enums:
    MetricKindValueValuesEnum: The value stream kind.
    ValueTypeValueValuesEnum: The value type.

  Fields:
    key: The value key.
    metricKind: The value stream kind.
    unit: The unit in which time_series point values are reported. unit
      follows the UCUM format for units as seen in
      https://unitsofmeasure.org/ucum.html. unit is only valid if value_type
      is INTEGER, DOUBLE, DISTRIBUTION.
    valueType: The value type.
  """

  class MetricKindValueValuesEnum(_messages.Enum):
    r"""The value stream kind.

    Values:
      METRIC_KIND_UNSPECIFIED: Do not use this default value.
      GAUGE: An instantaneous measurement of a value.
      DELTA: The change in a value during a time interval.
      CUMULATIVE: A value accumulated over a time interval. Cumulative
        measurements in a time series should have the same start time and
        increasing end times, until an event resets the cumulative value to
        zero and sets a new start time for the following points.
    """
    METRIC_KIND_UNSPECIFIED = 0
    GAUGE = 1
    DELTA = 2
    CUMULATIVE = 3

  class ValueTypeValueValuesEnum(_messages.Enum):
    r"""The value type.

    Values:
      VALUE_TYPE_UNSPECIFIED: Do not use this default value.
      BOOL: The value is a boolean. This value type can be used only if the
        metric kind is GAUGE.
      INT64: The value is a signed 64-bit integer.
      DOUBLE: The value is a double precision floating point number.
      STRING: The value is a text string. This value type can be used only if
        the metric kind is GAUGE.
      DISTRIBUTION: The value is a Distribution.
      MONEY: The value is money.
    """
    VALUE_TYPE_UNSPECIFIED = 0
    BOOL = 1
    INT64 = 2
    DOUBLE = 3
    STRING = 4
    DISTRIBUTION = 5
    MONEY = 6

  key = _messages.StringField(1)
  metricKind = _messages.EnumField('MetricKindValueValuesEnum', 2)
  unit = _messages.StringField(3)
  valueType = _messages.EnumField('ValueTypeValueValuesEnum', 4)


class VerifyNotificationChannelRequest(_messages.Message):
  r"""The VerifyNotificationChannel request.

  Fields:
    code: Required. The verification code that was delivered to the channel as
      a result of invoking the SendNotificationChannelVerificationCode API
      method or that was retrieved from a verified channel via
      GetNotificationChannelVerificationCode. For example, one might have
      "G-123456" or "TKNZGhhd2EyN3I1MnRnMjRv" (in general, one is only
      guaranteed that the code is valid UTF-8; one should not make any
      assumptions regarding the structure or format of the code).
  """

  code = _messages.StringField(1)


class WindowsBasedSli(_messages.Message):
  r"""A WindowsBasedSli defines good_service as the count of time windows for
  which the provided service was of good quality. Criteria for determining if
  service was good are embedded in the window_criterion.

  Fields:
    goodBadMetricFilter: A monitoring filter
      (https://cloud.google.com/monitoring/api/v3/filters) specifying a
      TimeSeries with ValueType = BOOL. The window is good if any true values
      appear in the window.
    goodTotalRatioThreshold: A window is good if its performance is high
      enough.
    metricMeanInRange: A window is good if the metric's value is in a good
      range, averaged across returned streams.
    metricSumInRange: A window is good if the metric's value is in a good
      range, summed across returned streams.
    windowPeriod: Duration over which window quality is evaluated. Must be an
      integer fraction of a day and at least 60s.
  """

  goodBadMetricFilter = _messages.StringField(1)
  goodTotalRatioThreshold = _messages.MessageField('PerformanceThreshold', 2)
  metricMeanInRange = _messages.MessageField('MetricRange', 3)
  metricSumInRange = _messages.MessageField('MetricRange', 4)
  windowPeriod = _messages.StringField(5)


encoding.AddCustomJsonFieldMapping(
    StandardQueryParameters, 'f__xgafv', '$.xgafv')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_1', '1')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_2', '2')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'aggregation_alignmentPeriod', 'aggregation.alignmentPeriod')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'aggregation_crossSeriesReducer', 'aggregation.crossSeriesReducer')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'aggregation_groupByFields', 'aggregation.groupByFields')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'aggregation_perSeriesAligner', 'aggregation.perSeriesAligner')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'interval_endTime', 'interval.endTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'interval_startTime', 'interval.startTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'secondaryAggregation_alignmentPeriod', 'secondaryAggregation.alignmentPeriod')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'secondaryAggregation_crossSeriesReducer', 'secondaryAggregation.crossSeriesReducer')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'secondaryAggregation_groupByFields', 'secondaryAggregation.groupByFields')
encoding.AddCustomJsonFieldMapping(
    MonitoringFoldersTimeSeriesListRequest, 'secondaryAggregation_perSeriesAligner', 'secondaryAggregation.perSeriesAligner')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'aggregation_alignmentPeriod', 'aggregation.alignmentPeriod')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'aggregation_crossSeriesReducer', 'aggregation.crossSeriesReducer')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'aggregation_groupByFields', 'aggregation.groupByFields')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'aggregation_perSeriesAligner', 'aggregation.perSeriesAligner')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'interval_endTime', 'interval.endTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'interval_startTime', 'interval.startTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'secondaryAggregation_alignmentPeriod', 'secondaryAggregation.alignmentPeriod')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'secondaryAggregation_crossSeriesReducer', 'secondaryAggregation.crossSeriesReducer')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'secondaryAggregation_groupByFields', 'secondaryAggregation.groupByFields')
encoding.AddCustomJsonFieldMapping(
    MonitoringOrganizationsTimeSeriesListRequest, 'secondaryAggregation_perSeriesAligner', 'secondaryAggregation.perSeriesAligner')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsGroupsMembersListRequest, 'interval_endTime', 'interval.endTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsGroupsMembersListRequest, 'interval_startTime', 'interval.startTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'aggregation_alignmentPeriod', 'aggregation.alignmentPeriod')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'aggregation_crossSeriesReducer', 'aggregation.crossSeriesReducer')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'aggregation_groupByFields', 'aggregation.groupByFields')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'aggregation_perSeriesAligner', 'aggregation.perSeriesAligner')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'interval_endTime', 'interval.endTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'interval_startTime', 'interval.startTime')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'secondaryAggregation_alignmentPeriod', 'secondaryAggregation.alignmentPeriod')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'secondaryAggregation_crossSeriesReducer', 'secondaryAggregation.crossSeriesReducer')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'secondaryAggregation_groupByFields', 'secondaryAggregation.groupByFields')
encoding.AddCustomJsonFieldMapping(
    MonitoringProjectsTimeSeriesListRequest, 'secondaryAggregation_perSeriesAligner', 'secondaryAggregation.perSeriesAligner')
