// Copyright 2025 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
//
//     http://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.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v6.33.2
// source: google/monitoring/v3/service.proto

package monitoringpb

import (
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	calendarperiod "google.golang.org/genproto/googleapis/type/calendarperiod"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// `ServiceLevelObjective.View` determines what form of
// `ServiceLevelObjective` is returned from `GetServiceLevelObjective`,
// `ListServiceLevelObjectives`, and `ListServiceLevelObjectiveVersions` RPCs.
type ServiceLevelObjective_View int32

const (
	// Same as FULL.
	ServiceLevelObjective_VIEW_UNSPECIFIED ServiceLevelObjective_View = 0
	// Return the embedded `ServiceLevelIndicator` in the form in which it was
	// defined. If it was defined using a `BasicSli`, return that `BasicSli`.
	ServiceLevelObjective_FULL ServiceLevelObjective_View = 2
	// For `ServiceLevelIndicator`s using `BasicSli` articulation, instead
	// return the `ServiceLevelIndicator` with its mode of computation fully
	// spelled out as a `RequestBasedSli`. For `ServiceLevelIndicator`s using
	// `RequestBasedSli` or `WindowsBasedSli`, return the
	// `ServiceLevelIndicator` as it was provided.
	ServiceLevelObjective_EXPLICIT ServiceLevelObjective_View = 1
)

// Enum value maps for ServiceLevelObjective_View.
var (
	ServiceLevelObjective_View_name = map[int32]string{
		0: "VIEW_UNSPECIFIED",
		2: "FULL",
		1: "EXPLICIT",
	}
	ServiceLevelObjective_View_value = map[string]int32{
		"VIEW_UNSPECIFIED": 0,
		"FULL":             2,
		"EXPLICIT":         1,
	}
)

func (x ServiceLevelObjective_View) Enum() *ServiceLevelObjective_View {
	p := new(ServiceLevelObjective_View)
	*p = x
	return p
}

func (x ServiceLevelObjective_View) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ServiceLevelObjective_View) Descriptor() protoreflect.EnumDescriptor {
	return file_google_monitoring_v3_service_proto_enumTypes[0].Descriptor()
}

func (ServiceLevelObjective_View) Type() protoreflect.EnumType {
	return &file_google_monitoring_v3_service_proto_enumTypes[0]
}

func (x ServiceLevelObjective_View) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ServiceLevelObjective_View.Descriptor instead.
func (ServiceLevelObjective_View) EnumDescriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{1, 0}
}

// 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.
type Service struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Identifier. Resource name for this Service. The format is:
	//
	//	projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Name used for UI elements listing this Service.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// REQUIRED. Service-identifying atoms specifying the underlying service.
	//
	// Types that are valid to be assigned to Identifier:
	//
	//	*Service_Custom_
	//	*Service_AppEngine_
	//	*Service_CloudEndpoints_
	//	*Service_ClusterIstio_
	//	*Service_MeshIstio_
	//	*Service_IstioCanonicalService_
	//	*Service_CloudRun_
	//	*Service_GkeNamespace_
	//	*Service_GkeWorkload_
	//	*Service_GkeService_
	Identifier isService_Identifier `protobuf_oneof:"identifier"`
	// 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).
	BasicService *Service_BasicService `protobuf:"bytes,19,opt,name=basic_service,json=basicService,proto3" json:"basic_service,omitempty"`
	// Configuration for how to query telemetry on a Service.
	Telemetry *Service_Telemetry `protobuf:"bytes,13,opt,name=telemetry,proto3" json:"telemetry,omitempty"`
	// 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.
	UserLabels    map[string]string `protobuf:"bytes,14,rep,name=user_labels,json=userLabels,proto3" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service) Reset() {
	*x = Service{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service) ProtoMessage() {}

func (x *Service) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service.ProtoReflect.Descriptor instead.
func (*Service) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0}
}

func (x *Service) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Service) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *Service) GetIdentifier() isService_Identifier {
	if x != nil {
		return x.Identifier
	}
	return nil
}

func (x *Service) GetCustom() *Service_Custom {
	if x != nil {
		if x, ok := x.Identifier.(*Service_Custom_); ok {
			return x.Custom
		}
	}
	return nil
}

func (x *Service) GetAppEngine() *Service_AppEngine {
	if x != nil {
		if x, ok := x.Identifier.(*Service_AppEngine_); ok {
			return x.AppEngine
		}
	}
	return nil
}

func (x *Service) GetCloudEndpoints() *Service_CloudEndpoints {
	if x != nil {
		if x, ok := x.Identifier.(*Service_CloudEndpoints_); ok {
			return x.CloudEndpoints
		}
	}
	return nil
}

func (x *Service) GetClusterIstio() *Service_ClusterIstio {
	if x != nil {
		if x, ok := x.Identifier.(*Service_ClusterIstio_); ok {
			return x.ClusterIstio
		}
	}
	return nil
}

func (x *Service) GetMeshIstio() *Service_MeshIstio {
	if x != nil {
		if x, ok := x.Identifier.(*Service_MeshIstio_); ok {
			return x.MeshIstio
		}
	}
	return nil
}

func (x *Service) GetIstioCanonicalService() *Service_IstioCanonicalService {
	if x != nil {
		if x, ok := x.Identifier.(*Service_IstioCanonicalService_); ok {
			return x.IstioCanonicalService
		}
	}
	return nil
}

func (x *Service) GetCloudRun() *Service_CloudRun {
	if x != nil {
		if x, ok := x.Identifier.(*Service_CloudRun_); ok {
			return x.CloudRun
		}
	}
	return nil
}

func (x *Service) GetGkeNamespace() *Service_GkeNamespace {
	if x != nil {
		if x, ok := x.Identifier.(*Service_GkeNamespace_); ok {
			return x.GkeNamespace
		}
	}
	return nil
}

func (x *Service) GetGkeWorkload() *Service_GkeWorkload {
	if x != nil {
		if x, ok := x.Identifier.(*Service_GkeWorkload_); ok {
			return x.GkeWorkload
		}
	}
	return nil
}

func (x *Service) GetGkeService() *Service_GkeService {
	if x != nil {
		if x, ok := x.Identifier.(*Service_GkeService_); ok {
			return x.GkeService
		}
	}
	return nil
}

func (x *Service) GetBasicService() *Service_BasicService {
	if x != nil {
		return x.BasicService
	}
	return nil
}

func (x *Service) GetTelemetry() *Service_Telemetry {
	if x != nil {
		return x.Telemetry
	}
	return nil
}

func (x *Service) GetUserLabels() map[string]string {
	if x != nil {
		return x.UserLabels
	}
	return nil
}

type isService_Identifier interface {
	isService_Identifier()
}

type Service_Custom_ struct {
	// Custom service type.
	Custom *Service_Custom `protobuf:"bytes,6,opt,name=custom,proto3,oneof"`
}

type Service_AppEngine_ struct {
	// Type used for App Engine services.
	AppEngine *Service_AppEngine `protobuf:"bytes,7,opt,name=app_engine,json=appEngine,proto3,oneof"`
}

type Service_CloudEndpoints_ struct {
	// Type used for Cloud Endpoints services.
	CloudEndpoints *Service_CloudEndpoints `protobuf:"bytes,8,opt,name=cloud_endpoints,json=cloudEndpoints,proto3,oneof"`
}

type Service_ClusterIstio_ struct {
	// Type used for Istio services that live in a Kubernetes cluster.
	ClusterIstio *Service_ClusterIstio `protobuf:"bytes,9,opt,name=cluster_istio,json=clusterIstio,proto3,oneof"`
}

type Service_MeshIstio_ struct {
	// Type used for Istio services scoped to an Istio mesh.
	MeshIstio *Service_MeshIstio `protobuf:"bytes,10,opt,name=mesh_istio,json=meshIstio,proto3,oneof"`
}

type Service_IstioCanonicalService_ struct {
	// Type used for canonical services scoped to an Istio mesh.
	// Metrics for Istio are
	// [documented here](https://istio.io/latest/docs/reference/config/metrics/)
	IstioCanonicalService *Service_IstioCanonicalService `protobuf:"bytes,11,opt,name=istio_canonical_service,json=istioCanonicalService,proto3,oneof"`
}

type Service_CloudRun_ struct {
	// Type used for Cloud Run services.
	CloudRun *Service_CloudRun `protobuf:"bytes,12,opt,name=cloud_run,json=cloudRun,proto3,oneof"`
}

type Service_GkeNamespace_ struct {
	// Type used for GKE Namespaces.
	GkeNamespace *Service_GkeNamespace `protobuf:"bytes,15,opt,name=gke_namespace,json=gkeNamespace,proto3,oneof"`
}

type Service_GkeWorkload_ struct {
	// Type used for GKE Workloads.
	GkeWorkload *Service_GkeWorkload `protobuf:"bytes,16,opt,name=gke_workload,json=gkeWorkload,proto3,oneof"`
}

type Service_GkeService_ struct {
	// Type used for GKE Services (the Kubernetes concept of a service).
	GkeService *Service_GkeService `protobuf:"bytes,17,opt,name=gke_service,json=gkeService,proto3,oneof"`
}

func (*Service_Custom_) isService_Identifier() {}

func (*Service_AppEngine_) isService_Identifier() {}

func (*Service_CloudEndpoints_) isService_Identifier() {}

func (*Service_ClusterIstio_) isService_Identifier() {}

func (*Service_MeshIstio_) isService_Identifier() {}

func (*Service_IstioCanonicalService_) isService_Identifier() {}

func (*Service_CloudRun_) isService_Identifier() {}

func (*Service_GkeNamespace_) isService_Identifier() {}

func (*Service_GkeWorkload_) isService_Identifier() {}

func (*Service_GkeService_) isService_Identifier() {}

// 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."
type ServiceLevelObjective struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Identifier. Resource name for this `ServiceLevelObjective`. The format is:
	//
	//	projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Name used for UI elements listing this SLO.
	DisplayName string `protobuf:"bytes,11,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// 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.
	ServiceLevelIndicator *ServiceLevelIndicator `protobuf:"bytes,3,opt,name=service_level_indicator,json=serviceLevelIndicator,proto3" json:"service_level_indicator,omitempty"`
	// The fraction of service that must be good in order for this objective to be
	// met. `0 < goal <= 0.9999`.
	Goal float64 `protobuf:"fixed64,4,opt,name=goal,proto3" json:"goal,omitempty"`
	// The time period over which the objective will be evaluated.
	//
	// Types that are valid to be assigned to Period:
	//
	//	*ServiceLevelObjective_RollingPeriod
	//	*ServiceLevelObjective_CalendarPeriod
	Period isServiceLevelObjective_Period `protobuf_oneof:"period"`
	// 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.
	UserLabels    map[string]string `protobuf:"bytes,12,rep,name=user_labels,json=userLabels,proto3" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceLevelObjective) Reset() {
	*x = ServiceLevelObjective{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceLevelObjective) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceLevelObjective) ProtoMessage() {}

func (x *ServiceLevelObjective) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceLevelObjective.ProtoReflect.Descriptor instead.
func (*ServiceLevelObjective) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{1}
}

func (x *ServiceLevelObjective) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ServiceLevelObjective) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *ServiceLevelObjective) GetServiceLevelIndicator() *ServiceLevelIndicator {
	if x != nil {
		return x.ServiceLevelIndicator
	}
	return nil
}

func (x *ServiceLevelObjective) GetGoal() float64 {
	if x != nil {
		return x.Goal
	}
	return 0
}

func (x *ServiceLevelObjective) GetPeriod() isServiceLevelObjective_Period {
	if x != nil {
		return x.Period
	}
	return nil
}

func (x *ServiceLevelObjective) GetRollingPeriod() *durationpb.Duration {
	if x != nil {
		if x, ok := x.Period.(*ServiceLevelObjective_RollingPeriod); ok {
			return x.RollingPeriod
		}
	}
	return nil
}

func (x *ServiceLevelObjective) GetCalendarPeriod() calendarperiod.CalendarPeriod {
	if x != nil {
		if x, ok := x.Period.(*ServiceLevelObjective_CalendarPeriod); ok {
			return x.CalendarPeriod
		}
	}
	return calendarperiod.CalendarPeriod(0)
}

func (x *ServiceLevelObjective) GetUserLabels() map[string]string {
	if x != nil {
		return x.UserLabels
	}
	return nil
}

type isServiceLevelObjective_Period interface {
	isServiceLevelObjective_Period()
}

type ServiceLevelObjective_RollingPeriod struct {
	// A rolling time period, semantically "in the past `<rolling_period>`".
	// Must be an integer multiple of 1 day no larger than 30 days.
	RollingPeriod *durationpb.Duration `protobuf:"bytes,5,opt,name=rolling_period,json=rollingPeriod,proto3,oneof"`
}

type ServiceLevelObjective_CalendarPeriod struct {
	// A calendar period, semantically "since the start of the current
	// `<calendar_period>`". At this time, only `DAY`, `WEEK`, `FORTNIGHT`, and
	// `MONTH` are supported.
	CalendarPeriod calendarperiod.CalendarPeriod `protobuf:"varint,6,opt,name=calendar_period,json=calendarPeriod,proto3,enum=google.type.CalendarPeriod,oneof"`
}

func (*ServiceLevelObjective_RollingPeriod) isServiceLevelObjective_Period() {}

func (*ServiceLevelObjective_CalendarPeriod) isServiceLevelObjective_Period() {}

// 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.
type ServiceLevelIndicator struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Service level indicators can be grouped by whether the "unit" of service
	// being measured is based on counts of good requests or on counts of good
	// time windows
	//
	// Types that are valid to be assigned to Type:
	//
	//	*ServiceLevelIndicator_BasicSli
	//	*ServiceLevelIndicator_RequestBased
	//	*ServiceLevelIndicator_WindowsBased
	Type          isServiceLevelIndicator_Type `protobuf_oneof:"type"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceLevelIndicator) Reset() {
	*x = ServiceLevelIndicator{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceLevelIndicator) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceLevelIndicator) ProtoMessage() {}

func (x *ServiceLevelIndicator) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceLevelIndicator.ProtoReflect.Descriptor instead.
func (*ServiceLevelIndicator) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{2}
}

func (x *ServiceLevelIndicator) GetType() isServiceLevelIndicator_Type {
	if x != nil {
		return x.Type
	}
	return nil
}

func (x *ServiceLevelIndicator) GetBasicSli() *BasicSli {
	if x != nil {
		if x, ok := x.Type.(*ServiceLevelIndicator_BasicSli); ok {
			return x.BasicSli
		}
	}
	return nil
}

func (x *ServiceLevelIndicator) GetRequestBased() *RequestBasedSli {
	if x != nil {
		if x, ok := x.Type.(*ServiceLevelIndicator_RequestBased); ok {
			return x.RequestBased
		}
	}
	return nil
}

func (x *ServiceLevelIndicator) GetWindowsBased() *WindowsBasedSli {
	if x != nil {
		if x, ok := x.Type.(*ServiceLevelIndicator_WindowsBased); ok {
			return x.WindowsBased
		}
	}
	return nil
}

type isServiceLevelIndicator_Type interface {
	isServiceLevelIndicator_Type()
}

type ServiceLevelIndicator_BasicSli struct {
	// Basic SLI on a well-known service type.
	BasicSli *BasicSli `protobuf:"bytes,4,opt,name=basic_sli,json=basicSli,proto3,oneof"`
}

type ServiceLevelIndicator_RequestBased struct {
	// Request-based SLIs
	RequestBased *RequestBasedSli `protobuf:"bytes,1,opt,name=request_based,json=requestBased,proto3,oneof"`
}

type ServiceLevelIndicator_WindowsBased struct {
	// Windows-based SLIs
	WindowsBased *WindowsBasedSli `protobuf:"bytes,2,opt,name=windows_based,json=windowsBased,proto3,oneof"`
}

func (*ServiceLevelIndicator_BasicSli) isServiceLevelIndicator_Type() {}

func (*ServiceLevelIndicator_RequestBased) isServiceLevelIndicator_Type() {}

func (*ServiceLevelIndicator_WindowsBased) isServiceLevelIndicator_Type() {}

// An SLI measuring performance on a well-known service type. Performance will
// be computed on the basis of pre-defined metrics. The type of the
// `service_resource` determines the metrics to use and the
// `service_resource.labels` and `metric_labels` are used to construct a
// monitoring filter to filter that metric down to just the data relevant to
// this service.
type BasicSli struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// OPTIONAL: The set of RPCs to which this SLI is relevant. Telemetry from
	// other methods will not be used to calculate performance for this SLI. If
	// omitted, this SLI applies to all the Service's methods. For service types
	// that don't support breaking down by method, setting this field will result
	// in an error.
	Method []string `protobuf:"bytes,7,rep,name=method,proto3" json:"method,omitempty"`
	// OPTIONAL: The set of locations to which this SLI is relevant. Telemetry
	// from other locations will not be used to calculate performance for this
	// SLI. If omitted, this SLI applies to all locations in which the Service has
	// activity. For service types that don't support breaking down by location,
	// setting this field will result in an error.
	Location []string `protobuf:"bytes,8,rep,name=location,proto3" json:"location,omitempty"`
	// OPTIONAL: The set of API versions to which this SLI is relevant. Telemetry
	// from other API versions will not be used to calculate performance for this
	// SLI. If omitted, this SLI applies to all API versions. For service types
	// that don't support breaking down by version, setting this field will result
	// in an error.
	Version []string `protobuf:"bytes,9,rep,name=version,proto3" json:"version,omitempty"`
	// This SLI can be evaluated on the basis of availability or latency.
	//
	// Types that are valid to be assigned to SliCriteria:
	//
	//	*BasicSli_Availability
	//	*BasicSli_Latency
	SliCriteria   isBasicSli_SliCriteria `protobuf_oneof:"sli_criteria"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BasicSli) Reset() {
	*x = BasicSli{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BasicSli) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BasicSli) ProtoMessage() {}

func (x *BasicSli) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BasicSli.ProtoReflect.Descriptor instead.
func (*BasicSli) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{3}
}

func (x *BasicSli) GetMethod() []string {
	if x != nil {
		return x.Method
	}
	return nil
}

func (x *BasicSli) GetLocation() []string {
	if x != nil {
		return x.Location
	}
	return nil
}

func (x *BasicSli) GetVersion() []string {
	if x != nil {
		return x.Version
	}
	return nil
}

func (x *BasicSli) GetSliCriteria() isBasicSli_SliCriteria {
	if x != nil {
		return x.SliCriteria
	}
	return nil
}

func (x *BasicSli) GetAvailability() *BasicSli_AvailabilityCriteria {
	if x != nil {
		if x, ok := x.SliCriteria.(*BasicSli_Availability); ok {
			return x.Availability
		}
	}
	return nil
}

func (x *BasicSli) GetLatency() *BasicSli_LatencyCriteria {
	if x != nil {
		if x, ok := x.SliCriteria.(*BasicSli_Latency); ok {
			return x.Latency
		}
	}
	return nil
}

type isBasicSli_SliCriteria interface {
	isBasicSli_SliCriteria()
}

type BasicSli_Availability struct {
	// Good service is defined to be the count of requests made to this service
	// that return successfully.
	Availability *BasicSli_AvailabilityCriteria `protobuf:"bytes,2,opt,name=availability,proto3,oneof"`
}

type BasicSli_Latency struct {
	// Good service is defined to be the count of requests made to this service
	// that are fast enough with respect to `latency.threshold`.
	Latency *BasicSli_LatencyCriteria `protobuf:"bytes,3,opt,name=latency,proto3,oneof"`
}

func (*BasicSli_Availability) isBasicSli_SliCriteria() {}

func (*BasicSli_Latency) isBasicSli_SliCriteria() {}

// Range of numerical values within `min` and `max`.
type Range struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Range minimum.
	Min float64 `protobuf:"fixed64,1,opt,name=min,proto3" json:"min,omitempty"`
	// Range maximum.
	Max           float64 `protobuf:"fixed64,2,opt,name=max,proto3" json:"max,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Range) Reset() {
	*x = Range{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Range) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Range) ProtoMessage() {}

func (x *Range) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Range.ProtoReflect.Descriptor instead.
func (*Range) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{4}
}

func (x *Range) GetMin() float64 {
	if x != nil {
		return x.Min
	}
	return 0
}

func (x *Range) GetMax() float64 {
	if x != nil {
		return x.Max
	}
	return 0
}

// Service Level Indicators for which atomic units of service are counted
// directly.
type RequestBasedSli struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The means to compute a ratio of `good_service` to `total_service`.
	//
	// Types that are valid to be assigned to Method:
	//
	//	*RequestBasedSli_GoodTotalRatio
	//	*RequestBasedSli_DistributionCut
	Method        isRequestBasedSli_Method `protobuf_oneof:"method"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RequestBasedSli) Reset() {
	*x = RequestBasedSli{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RequestBasedSli) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RequestBasedSli) ProtoMessage() {}

func (x *RequestBasedSli) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RequestBasedSli.ProtoReflect.Descriptor instead.
func (*RequestBasedSli) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{5}
}

func (x *RequestBasedSli) GetMethod() isRequestBasedSli_Method {
	if x != nil {
		return x.Method
	}
	return nil
}

func (x *RequestBasedSli) GetGoodTotalRatio() *TimeSeriesRatio {
	if x != nil {
		if x, ok := x.Method.(*RequestBasedSli_GoodTotalRatio); ok {
			return x.GoodTotalRatio
		}
	}
	return nil
}

func (x *RequestBasedSli) GetDistributionCut() *DistributionCut {
	if x != nil {
		if x, ok := x.Method.(*RequestBasedSli_DistributionCut); ok {
			return x.DistributionCut
		}
	}
	return nil
}

type isRequestBasedSli_Method interface {
	isRequestBasedSli_Method()
}

type RequestBasedSli_GoodTotalRatio struct {
	// `good_total_ratio` is used when the ratio of `good_service` to
	// `total_service` is computed from two `TimeSeries`.
	GoodTotalRatio *TimeSeriesRatio `protobuf:"bytes,1,opt,name=good_total_ratio,json=goodTotalRatio,proto3,oneof"`
}

type RequestBasedSli_DistributionCut struct {
	// `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`.
	DistributionCut *DistributionCut `protobuf:"bytes,3,opt,name=distribution_cut,json=distributionCut,proto3,oneof"`
}

func (*RequestBasedSli_GoodTotalRatio) isRequestBasedSli_Method() {}

func (*RequestBasedSli_DistributionCut) isRequestBasedSli_Method() {}

// 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.
type TimeSeriesRatio struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// 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`.
	GoodServiceFilter string `protobuf:"bytes,4,opt,name=good_service_filter,json=goodServiceFilter,proto3" json:"good_service_filter,omitempty"`
	// 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`.
	BadServiceFilter string `protobuf:"bytes,5,opt,name=bad_service_filter,json=badServiceFilter,proto3" json:"bad_service_filter,omitempty"`
	// 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`.
	TotalServiceFilter string `protobuf:"bytes,6,opt,name=total_service_filter,json=totalServiceFilter,proto3" json:"total_service_filter,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *TimeSeriesRatio) Reset() {
	*x = TimeSeriesRatio{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TimeSeriesRatio) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TimeSeriesRatio) ProtoMessage() {}

func (x *TimeSeriesRatio) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TimeSeriesRatio.ProtoReflect.Descriptor instead.
func (*TimeSeriesRatio) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{6}
}

func (x *TimeSeriesRatio) GetGoodServiceFilter() string {
	if x != nil {
		return x.GoodServiceFilter
	}
	return ""
}

func (x *TimeSeriesRatio) GetBadServiceFilter() string {
	if x != nil {
		return x.BadServiceFilter
	}
	return ""
}

func (x *TimeSeriesRatio) GetTotalServiceFilter() string {
	if x != nil {
		return x.TotalServiceFilter
	}
	return ""
}

// A `DistributionCut` defines a `TimeSeries` and thresholds used for measuring
// good service and total service. The `TimeSeries` must have `ValueType =
// DISTRIBUTION` and `MetricKind = DELTA` or `MetricKind = CUMULATIVE`. The
// computed `good_service` will be the estimated count of values in the
// `Distribution` that fall within the specified `min` and `max`.
type DistributionCut struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
	// specifying a `TimeSeries` aggregating values. Must have `ValueType =
	// DISTRIBUTION` and `MetricKind = DELTA` or `MetricKind = CUMULATIVE`.
	DistributionFilter string `protobuf:"bytes,4,opt,name=distribution_filter,json=distributionFilter,proto3" json:"distribution_filter,omitempty"`
	// Range of values considered "good." For a one-sided range, set one bound to
	// an infinite value.
	Range         *Range `protobuf:"bytes,5,opt,name=range,proto3" json:"range,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DistributionCut) Reset() {
	*x = DistributionCut{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DistributionCut) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DistributionCut) ProtoMessage() {}

func (x *DistributionCut) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DistributionCut.ProtoReflect.Descriptor instead.
func (*DistributionCut) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{7}
}

func (x *DistributionCut) GetDistributionFilter() string {
	if x != nil {
		return x.DistributionFilter
	}
	return ""
}

func (x *DistributionCut) GetRange() *Range {
	if x != nil {
		return x.Range
	}
	return nil
}

// 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`.
type WindowsBasedSli struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The criterion to use for evaluating window goodness.
	//
	// Types that are valid to be assigned to WindowCriterion:
	//
	//	*WindowsBasedSli_GoodBadMetricFilter
	//	*WindowsBasedSli_GoodTotalRatioThreshold
	//	*WindowsBasedSli_MetricMeanInRange
	//	*WindowsBasedSli_MetricSumInRange
	WindowCriterion isWindowsBasedSli_WindowCriterion `protobuf_oneof:"window_criterion"`
	// Duration over which window quality is evaluated. Must be an integer
	// fraction of a day and at least `60s`.
	WindowPeriod  *durationpb.Duration `protobuf:"bytes,4,opt,name=window_period,json=windowPeriod,proto3" json:"window_period,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WindowsBasedSli) Reset() {
	*x = WindowsBasedSli{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WindowsBasedSli) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WindowsBasedSli) ProtoMessage() {}

func (x *WindowsBasedSli) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WindowsBasedSli.ProtoReflect.Descriptor instead.
func (*WindowsBasedSli) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{8}
}

func (x *WindowsBasedSli) GetWindowCriterion() isWindowsBasedSli_WindowCriterion {
	if x != nil {
		return x.WindowCriterion
	}
	return nil
}

func (x *WindowsBasedSli) GetGoodBadMetricFilter() string {
	if x != nil {
		if x, ok := x.WindowCriterion.(*WindowsBasedSli_GoodBadMetricFilter); ok {
			return x.GoodBadMetricFilter
		}
	}
	return ""
}

func (x *WindowsBasedSli) GetGoodTotalRatioThreshold() *WindowsBasedSli_PerformanceThreshold {
	if x != nil {
		if x, ok := x.WindowCriterion.(*WindowsBasedSli_GoodTotalRatioThreshold); ok {
			return x.GoodTotalRatioThreshold
		}
	}
	return nil
}

func (x *WindowsBasedSli) GetMetricMeanInRange() *WindowsBasedSli_MetricRange {
	if x != nil {
		if x, ok := x.WindowCriterion.(*WindowsBasedSli_MetricMeanInRange); ok {
			return x.MetricMeanInRange
		}
	}
	return nil
}

func (x *WindowsBasedSli) GetMetricSumInRange() *WindowsBasedSli_MetricRange {
	if x != nil {
		if x, ok := x.WindowCriterion.(*WindowsBasedSli_MetricSumInRange); ok {
			return x.MetricSumInRange
		}
	}
	return nil
}

func (x *WindowsBasedSli) GetWindowPeriod() *durationpb.Duration {
	if x != nil {
		return x.WindowPeriod
	}
	return nil
}

type isWindowsBasedSli_WindowCriterion interface {
	isWindowsBasedSli_WindowCriterion()
}

type WindowsBasedSli_GoodBadMetricFilter struct {
	// 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.
	GoodBadMetricFilter string `protobuf:"bytes,5,opt,name=good_bad_metric_filter,json=goodBadMetricFilter,proto3,oneof"`
}

type WindowsBasedSli_GoodTotalRatioThreshold struct {
	// A window is good if its `performance` is high enough.
	GoodTotalRatioThreshold *WindowsBasedSli_PerformanceThreshold `protobuf:"bytes,2,opt,name=good_total_ratio_threshold,json=goodTotalRatioThreshold,proto3,oneof"`
}

type WindowsBasedSli_MetricMeanInRange struct {
	// A window is good if the metric's value is in a good range, averaged
	// across returned streams.
	MetricMeanInRange *WindowsBasedSli_MetricRange `protobuf:"bytes,6,opt,name=metric_mean_in_range,json=metricMeanInRange,proto3,oneof"`
}

type WindowsBasedSli_MetricSumInRange struct {
	// A window is good if the metric's value is in a good range, summed across
	// returned streams.
	MetricSumInRange *WindowsBasedSli_MetricRange `protobuf:"bytes,7,opt,name=metric_sum_in_range,json=metricSumInRange,proto3,oneof"`
}

func (*WindowsBasedSli_GoodBadMetricFilter) isWindowsBasedSli_WindowCriterion() {}

func (*WindowsBasedSli_GoodTotalRatioThreshold) isWindowsBasedSli_WindowCriterion() {}

func (*WindowsBasedSli_MetricMeanInRange) isWindowsBasedSli_WindowCriterion() {}

func (*WindowsBasedSli_MetricSumInRange) isWindowsBasedSli_WindowCriterion() {}

// Use a custom service to designate a service that you want to monitor
// when none of the other service types (like App Engine, Cloud Run, or
// a GKE type) matches your intended service.
type Service_Custom struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_Custom) Reset() {
	*x = Service_Custom{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_Custom) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_Custom) ProtoMessage() {}

func (x *Service_Custom) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_Custom.ProtoReflect.Descriptor instead.
func (*Service_Custom) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 0}
}

// App Engine service. Learn more at https://cloud.google.com/appengine.
type Service_AppEngine struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the App Engine module underlying this service. Corresponds to
	// the `module_id` resource label in the [`gae_app` monitored
	// resource](https://cloud.google.com/monitoring/api/resources#tag_gae_app).
	ModuleId      string `protobuf:"bytes,1,opt,name=module_id,json=moduleId,proto3" json:"module_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_AppEngine) Reset() {
	*x = Service_AppEngine{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_AppEngine) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_AppEngine) ProtoMessage() {}

func (x *Service_AppEngine) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_AppEngine.ProtoReflect.Descriptor instead.
func (*Service_AppEngine) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 1}
}

func (x *Service_AppEngine) GetModuleId() string {
	if x != nil {
		return x.ModuleId
	}
	return ""
}

// Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints.
type Service_CloudEndpoints struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the Cloud Endpoints service underlying this service.
	// Corresponds to the `service` resource label in the [`api` monitored
	// resource](https://cloud.google.com/monitoring/api/resources#tag_api).
	Service       string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_CloudEndpoints) Reset() {
	*x = Service_CloudEndpoints{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_CloudEndpoints) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_CloudEndpoints) ProtoMessage() {}

func (x *Service_CloudEndpoints) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_CloudEndpoints.ProtoReflect.Descriptor instead.
func (*Service_CloudEndpoints) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 2}
}

func (x *Service_CloudEndpoints) GetService() string {
	if x != nil {
		return x.Service
	}
	return ""
}

// Istio service scoped to a single Kubernetes cluster. Learn more at
// https://istio.io. Clusters running OSS Istio will have their services
// ingested as this type.
type Service_ClusterIstio struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The location of the Kubernetes cluster in which this Istio service is
	// defined. Corresponds to the `location` resource label in `k8s_cluster`
	// resources.
	Location string `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"`
	// The name of the Kubernetes cluster in which this Istio service is
	// defined. Corresponds to the `cluster_name` resource label in
	// `k8s_cluster` resources.
	ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
	// The namespace of the Istio service underlying this service. Corresponds
	// to the `destination_service_namespace` metric label in Istio metrics.
	ServiceNamespace string `protobuf:"bytes,3,opt,name=service_namespace,json=serviceNamespace,proto3" json:"service_namespace,omitempty"`
	// The name of the Istio service underlying this service. Corresponds to the
	// `destination_service_name` metric label in Istio metrics.
	ServiceName   string `protobuf:"bytes,4,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_ClusterIstio) Reset() {
	*x = Service_ClusterIstio{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_ClusterIstio) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_ClusterIstio) ProtoMessage() {}

func (x *Service_ClusterIstio) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_ClusterIstio.ProtoReflect.Descriptor instead.
func (*Service_ClusterIstio) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 3}
}

func (x *Service_ClusterIstio) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

func (x *Service_ClusterIstio) GetClusterName() string {
	if x != nil {
		return x.ClusterName
	}
	return ""
}

func (x *Service_ClusterIstio) GetServiceNamespace() string {
	if x != nil {
		return x.ServiceNamespace
	}
	return ""
}

func (x *Service_ClusterIstio) GetServiceName() string {
	if x != nil {
		return x.ServiceName
	}
	return ""
}

// Istio service scoped to an Istio mesh. Anthos clusters running ASM < 1.6.8
// will have their services ingested as this type.
type Service_MeshIstio struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Identifier for the mesh in which this Istio service is defined.
	// Corresponds to the `mesh_uid` metric label in Istio metrics.
	MeshUid string `protobuf:"bytes,1,opt,name=mesh_uid,json=meshUid,proto3" json:"mesh_uid,omitempty"`
	// The namespace of the Istio service underlying this service. Corresponds
	// to the `destination_service_namespace` metric label in Istio metrics.
	ServiceNamespace string `protobuf:"bytes,3,opt,name=service_namespace,json=serviceNamespace,proto3" json:"service_namespace,omitempty"`
	// The name of the Istio service underlying this service. Corresponds to the
	// `destination_service_name` metric label in Istio metrics.
	ServiceName   string `protobuf:"bytes,4,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_MeshIstio) Reset() {
	*x = Service_MeshIstio{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_MeshIstio) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_MeshIstio) ProtoMessage() {}

func (x *Service_MeshIstio) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_MeshIstio.ProtoReflect.Descriptor instead.
func (*Service_MeshIstio) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 4}
}

func (x *Service_MeshIstio) GetMeshUid() string {
	if x != nil {
		return x.MeshUid
	}
	return ""
}

func (x *Service_MeshIstio) GetServiceNamespace() string {
	if x != nil {
		return x.ServiceNamespace
	}
	return ""
}

func (x *Service_MeshIstio) GetServiceName() string {
	if x != nil {
		return x.ServiceName
	}
	return ""
}

// Canonical service scoped to an Istio mesh. Anthos clusters running ASM >=
// 1.6.8 will have their services ingested as this type.
type Service_IstioCanonicalService struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Identifier for the Istio mesh in which this canonical service is defined.
	// Corresponds to the `mesh_uid` metric label in
	// [Istio metrics](https://cloud.google.com/monitoring/api/metrics_istio).
	MeshUid string `protobuf:"bytes,1,opt,name=mesh_uid,json=meshUid,proto3" json:"mesh_uid,omitempty"`
	// The namespace of the canonical service underlying this service.
	// Corresponds to the `destination_canonical_service_namespace` metric
	// label in [Istio
	// metrics](https://cloud.google.com/monitoring/api/metrics_istio).
	CanonicalServiceNamespace string `protobuf:"bytes,3,opt,name=canonical_service_namespace,json=canonicalServiceNamespace,proto3" json:"canonical_service_namespace,omitempty"`
	// The name of the canonical service underlying this service.
	// Corresponds to the `destination_canonical_service_name` metric label in
	// label in [Istio
	// metrics](https://cloud.google.com/monitoring/api/metrics_istio).
	CanonicalService string `protobuf:"bytes,4,opt,name=canonical_service,json=canonicalService,proto3" json:"canonical_service,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *Service_IstioCanonicalService) Reset() {
	*x = Service_IstioCanonicalService{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_IstioCanonicalService) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_IstioCanonicalService) ProtoMessage() {}

func (x *Service_IstioCanonicalService) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_IstioCanonicalService.ProtoReflect.Descriptor instead.
func (*Service_IstioCanonicalService) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 5}
}

func (x *Service_IstioCanonicalService) GetMeshUid() string {
	if x != nil {
		return x.MeshUid
	}
	return ""
}

func (x *Service_IstioCanonicalService) GetCanonicalServiceNamespace() string {
	if x != nil {
		return x.CanonicalServiceNamespace
	}
	return ""
}

func (x *Service_IstioCanonicalService) GetCanonicalService() string {
	if x != nil {
		return x.CanonicalService
	}
	return ""
}

// Cloud Run service. Learn more at https://cloud.google.com/run.
type Service_CloudRun struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the Cloud Run service. Corresponds to the `service_name`
	// resource label in the [`cloud_run_revision` monitored
	// resource](https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision).
	ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	// The location the service is run. Corresponds to the `location`
	// resource label in the [`cloud_run_revision` monitored
	// resource](https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision).
	Location      string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_CloudRun) Reset() {
	*x = Service_CloudRun{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_CloudRun) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_CloudRun) ProtoMessage() {}

func (x *Service_CloudRun) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_CloudRun.ProtoReflect.Descriptor instead.
func (*Service_CloudRun) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 6}
}

func (x *Service_CloudRun) GetServiceName() string {
	if x != nil {
		return x.ServiceName
	}
	return ""
}

func (x *Service_CloudRun) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

// GKE Namespace. The field names correspond to the resource metadata labels
// on monitored resources that fall under a namespace (for example,
// `k8s_container` or `k8s_pod`).
type Service_GkeNamespace struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Output only. The project this resource lives in. For legacy services
	// migrated from the `Custom` type, this may be a distinct project from the
	// one parenting the service itself.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// The location of the parent cluster. This may be a zone or region.
	Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"`
	// The name of the parent cluster.
	ClusterName string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
	// The name of this namespace.
	NamespaceName string `protobuf:"bytes,4,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_GkeNamespace) Reset() {
	*x = Service_GkeNamespace{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_GkeNamespace) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_GkeNamespace) ProtoMessage() {}

func (x *Service_GkeNamespace) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_GkeNamespace.ProtoReflect.Descriptor instead.
func (*Service_GkeNamespace) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 7}
}

func (x *Service_GkeNamespace) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *Service_GkeNamespace) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

func (x *Service_GkeNamespace) GetClusterName() string {
	if x != nil {
		return x.ClusterName
	}
	return ""
}

func (x *Service_GkeNamespace) GetNamespaceName() string {
	if x != nil {
		return x.NamespaceName
	}
	return ""
}

// A GKE Workload (Deployment, StatefulSet, etc). The field names correspond
// to the metadata labels on monitored resources that fall under a workload
// (for example, `k8s_container` or `k8s_pod`).
type Service_GkeWorkload struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Output only. The project this resource lives in. For legacy services
	// migrated from the `Custom` type, this may be a distinct project from the
	// one parenting the service itself.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// The location of the parent cluster. This may be a zone or region.
	Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"`
	// The name of the parent cluster.
	ClusterName string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
	// The name of the parent namespace.
	NamespaceName string `protobuf:"bytes,4,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"`
	// The type of this workload (for example, "Deployment" or "DaemonSet")
	TopLevelControllerType string `protobuf:"bytes,5,opt,name=top_level_controller_type,json=topLevelControllerType,proto3" json:"top_level_controller_type,omitempty"`
	// The name of this workload.
	TopLevelControllerName string `protobuf:"bytes,6,opt,name=top_level_controller_name,json=topLevelControllerName,proto3" json:"top_level_controller_name,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

func (x *Service_GkeWorkload) Reset() {
	*x = Service_GkeWorkload{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_GkeWorkload) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_GkeWorkload) ProtoMessage() {}

func (x *Service_GkeWorkload) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_GkeWorkload.ProtoReflect.Descriptor instead.
func (*Service_GkeWorkload) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 8}
}

func (x *Service_GkeWorkload) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *Service_GkeWorkload) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

func (x *Service_GkeWorkload) GetClusterName() string {
	if x != nil {
		return x.ClusterName
	}
	return ""
}

func (x *Service_GkeWorkload) GetNamespaceName() string {
	if x != nil {
		return x.NamespaceName
	}
	return ""
}

func (x *Service_GkeWorkload) GetTopLevelControllerType() string {
	if x != nil {
		return x.TopLevelControllerType
	}
	return ""
}

func (x *Service_GkeWorkload) GetTopLevelControllerName() string {
	if x != nil {
		return x.TopLevelControllerName
	}
	return ""
}

// GKE Service. The "service" here represents a
// [Kubernetes service
// object](https://kubernetes.io/docs/concepts/services-networking/service).
// The field names correspond to the resource labels on [`k8s_service`
// monitored
// resources](https://cloud.google.com/monitoring/api/resources#tag_k8s_service).
type Service_GkeService struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Output only. The project this resource lives in. For legacy services
	// migrated from the `Custom` type, this may be a distinct project from the
	// one parenting the service itself.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// The location of the parent cluster. This may be a zone or region.
	Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"`
	// The name of the parent cluster.
	ClusterName string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
	// The name of the parent namespace.
	NamespaceName string `protobuf:"bytes,4,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"`
	// The name of this service.
	ServiceName   string `protobuf:"bytes,5,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_GkeService) Reset() {
	*x = Service_GkeService{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_GkeService) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_GkeService) ProtoMessage() {}

func (x *Service_GkeService) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_GkeService.ProtoReflect.Descriptor instead.
func (*Service_GkeService) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 9}
}

func (x *Service_GkeService) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *Service_GkeService) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

func (x *Service_GkeService) GetClusterName() string {
	if x != nil {
		return x.ClusterName
	}
	return ""
}

func (x *Service_GkeService) GetNamespaceName() string {
	if x != nil {
		return x.NamespaceName
	}
	return ""
}

func (x *Service_GkeService) GetServiceName() string {
	if x != nil {
		return x.ServiceName
	}
	return ""
}

// A well-known service type, defined by its service type and service labels.
// Documentation and examples
// [here](https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).
type Service_BasicService struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The type of service that this basic service defines, e.g.
	// APP_ENGINE service type.
	// Documentation and valid values
	// [here](https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).
	ServiceType string `protobuf:"bytes,1,opt,name=service_type,json=serviceType,proto3" json:"service_type,omitempty"`
	// Labels that specify the resource that emits the monitoring data which
	// is used for SLO reporting of this `Service`.
	// Documentation and valid values for given service types
	// [here](https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).
	ServiceLabels map[string]string `protobuf:"bytes,2,rep,name=service_labels,json=serviceLabels,proto3" json:"service_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_BasicService) Reset() {
	*x = Service_BasicService{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_BasicService) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_BasicService) ProtoMessage() {}

func (x *Service_BasicService) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_BasicService.ProtoReflect.Descriptor instead.
func (*Service_BasicService) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 10}
}

func (x *Service_BasicService) GetServiceType() string {
	if x != nil {
		return x.ServiceType
	}
	return ""
}

func (x *Service_BasicService) GetServiceLabels() map[string]string {
	if x != nil {
		return x.ServiceLabels
	}
	return nil
}

// Configuration for how to query telemetry on a Service.
type Service_Telemetry struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The full name of the resource that defines this service. Formatted as
	// described in https://cloud.google.com/apis/design/resource_names.
	ResourceName  string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Service_Telemetry) Reset() {
	*x = Service_Telemetry{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Service_Telemetry) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service_Telemetry) ProtoMessage() {}

func (x *Service_Telemetry) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Service_Telemetry.ProtoReflect.Descriptor instead.
func (*Service_Telemetry) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 11}
}

func (x *Service_Telemetry) GetResourceName() string {
	if x != nil {
		return x.ResourceName
	}
	return ""
}

// Future parameters for the availability SLI.
type BasicSli_AvailabilityCriteria struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BasicSli_AvailabilityCriteria) Reset() {
	*x = BasicSli_AvailabilityCriteria{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BasicSli_AvailabilityCriteria) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BasicSli_AvailabilityCriteria) ProtoMessage() {}

func (x *BasicSli_AvailabilityCriteria) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BasicSli_AvailabilityCriteria.ProtoReflect.Descriptor instead.
func (*BasicSli_AvailabilityCriteria) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{3, 0}
}

// Parameters for a latency threshold SLI.
type BasicSli_LatencyCriteria struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Good service is defined to be the count of requests made to this service
	// that return in no more than `threshold`.
	Threshold     *durationpb.Duration `protobuf:"bytes,3,opt,name=threshold,proto3" json:"threshold,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BasicSli_LatencyCriteria) Reset() {
	*x = BasicSli_LatencyCriteria{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BasicSli_LatencyCriteria) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BasicSli_LatencyCriteria) ProtoMessage() {}

func (x *BasicSli_LatencyCriteria) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BasicSli_LatencyCriteria.ProtoReflect.Descriptor instead.
func (*BasicSli_LatencyCriteria) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{3, 1}
}

func (x *BasicSli_LatencyCriteria) GetThreshold() *durationpb.Duration {
	if x != nil {
		return x.Threshold
	}
	return nil
}

// A `PerformanceThreshold` is used when each window is good when that window
// has a sufficiently high `performance`.
type WindowsBasedSli_PerformanceThreshold struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The means, either a request-based SLI or a basic SLI, by which to compute
	// performance over a window.
	//
	// Types that are valid to be assigned to Type:
	//
	//	*WindowsBasedSli_PerformanceThreshold_Performance
	//	*WindowsBasedSli_PerformanceThreshold_BasicSliPerformance
	Type isWindowsBasedSli_PerformanceThreshold_Type `protobuf_oneof:"type"`
	// If window `performance >= threshold`, the window is counted as good.
	Threshold     float64 `protobuf:"fixed64,2,opt,name=threshold,proto3" json:"threshold,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WindowsBasedSli_PerformanceThreshold) Reset() {
	*x = WindowsBasedSli_PerformanceThreshold{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WindowsBasedSli_PerformanceThreshold) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WindowsBasedSli_PerformanceThreshold) ProtoMessage() {}

func (x *WindowsBasedSli_PerformanceThreshold) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WindowsBasedSli_PerformanceThreshold.ProtoReflect.Descriptor instead.
func (*WindowsBasedSli_PerformanceThreshold) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{8, 0}
}

func (x *WindowsBasedSli_PerformanceThreshold) GetType() isWindowsBasedSli_PerformanceThreshold_Type {
	if x != nil {
		return x.Type
	}
	return nil
}

func (x *WindowsBasedSli_PerformanceThreshold) GetPerformance() *RequestBasedSli {
	if x != nil {
		if x, ok := x.Type.(*WindowsBasedSli_PerformanceThreshold_Performance); ok {
			return x.Performance
		}
	}
	return nil
}

func (x *WindowsBasedSli_PerformanceThreshold) GetBasicSliPerformance() *BasicSli {
	if x != nil {
		if x, ok := x.Type.(*WindowsBasedSli_PerformanceThreshold_BasicSliPerformance); ok {
			return x.BasicSliPerformance
		}
	}
	return nil
}

func (x *WindowsBasedSli_PerformanceThreshold) GetThreshold() float64 {
	if x != nil {
		return x.Threshold
	}
	return 0
}

type isWindowsBasedSli_PerformanceThreshold_Type interface {
	isWindowsBasedSli_PerformanceThreshold_Type()
}

type WindowsBasedSli_PerformanceThreshold_Performance struct {
	// `RequestBasedSli` to evaluate to judge window quality.
	Performance *RequestBasedSli `protobuf:"bytes,1,opt,name=performance,proto3,oneof"`
}

type WindowsBasedSli_PerformanceThreshold_BasicSliPerformance struct {
	// `BasicSli` to evaluate to judge window quality.
	BasicSliPerformance *BasicSli `protobuf:"bytes,3,opt,name=basic_sli_performance,json=basicSliPerformance,proto3,oneof"`
}

func (*WindowsBasedSli_PerformanceThreshold_Performance) isWindowsBasedSli_PerformanceThreshold_Type() {
}

func (*WindowsBasedSli_PerformanceThreshold_BasicSliPerformance) isWindowsBasedSli_PerformanceThreshold_Type() {
}

// A `MetricRange` is used when each window is good when the value x of a
// single `TimeSeries` satisfies `range.min <= x <= range.max`. The provided
// `TimeSeries` must have `ValueType = INT64` or `ValueType = DOUBLE` and
// `MetricKind = GAUGE`.
type WindowsBasedSli_MetricRange struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
	// specifying the `TimeSeries` to use for evaluating window quality.
	TimeSeries string `protobuf:"bytes,1,opt,name=time_series,json=timeSeries,proto3" json:"time_series,omitempty"`
	// Range of values considered "good." For a one-sided range, set one bound
	// to an infinite value.
	Range         *Range `protobuf:"bytes,4,opt,name=range,proto3" json:"range,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WindowsBasedSli_MetricRange) Reset() {
	*x = WindowsBasedSli_MetricRange{}
	mi := &file_google_monitoring_v3_service_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WindowsBasedSli_MetricRange) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WindowsBasedSli_MetricRange) ProtoMessage() {}

func (x *WindowsBasedSli_MetricRange) ProtoReflect() protoreflect.Message {
	mi := &file_google_monitoring_v3_service_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WindowsBasedSli_MetricRange.ProtoReflect.Descriptor instead.
func (*WindowsBasedSli_MetricRange) Descriptor() ([]byte, []int) {
	return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{8, 1}
}

func (x *WindowsBasedSli_MetricRange) GetTimeSeries() string {
	if x != nil {
		return x.TimeSeries
	}
	return ""
}

func (x *WindowsBasedSli_MetricRange) GetRange() *Range {
	if x != nil {
		return x.Range
	}
	return nil
}

var File_google_monitoring_v3_service_proto protoreflect.FileDescriptor

const file_google_monitoring_v3_service_proto_rawDesc = "" +
	"\n" +
	"\"google/monitoring/v3/service.proto\x12\x14google.monitoring.v3\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a!google/type/calendar_period.proto\"\xa4\x16\n" +
	"\aService\x12\x17\n" +
	"\x04name\x18\x01 \x01(\tB\x03\xe0A\bR\x04name\x12!\n" +
	"\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12>\n" +
	"\x06custom\x18\x06 \x01(\v2$.google.monitoring.v3.Service.CustomH\x00R\x06custom\x12H\n" +
	"\n" +
	"app_engine\x18\a \x01(\v2'.google.monitoring.v3.Service.AppEngineH\x00R\tappEngine\x12W\n" +
	"\x0fcloud_endpoints\x18\b \x01(\v2,.google.monitoring.v3.Service.CloudEndpointsH\x00R\x0ecloudEndpoints\x12Q\n" +
	"\rcluster_istio\x18\t \x01(\v2*.google.monitoring.v3.Service.ClusterIstioH\x00R\fclusterIstio\x12H\n" +
	"\n" +
	"mesh_istio\x18\n" +
	" \x01(\v2'.google.monitoring.v3.Service.MeshIstioH\x00R\tmeshIstio\x12m\n" +
	"\x17istio_canonical_service\x18\v \x01(\v23.google.monitoring.v3.Service.IstioCanonicalServiceH\x00R\x15istioCanonicalService\x12E\n" +
	"\tcloud_run\x18\f \x01(\v2&.google.monitoring.v3.Service.CloudRunH\x00R\bcloudRun\x12Q\n" +
	"\rgke_namespace\x18\x0f \x01(\v2*.google.monitoring.v3.Service.GkeNamespaceH\x00R\fgkeNamespace\x12N\n" +
	"\fgke_workload\x18\x10 \x01(\v2).google.monitoring.v3.Service.GkeWorkloadH\x00R\vgkeWorkload\x12K\n" +
	"\vgke_service\x18\x11 \x01(\v2(.google.monitoring.v3.Service.GkeServiceH\x00R\n" +
	"gkeService\x12O\n" +
	"\rbasic_service\x18\x13 \x01(\v2*.google.monitoring.v3.Service.BasicServiceR\fbasicService\x12E\n" +
	"\ttelemetry\x18\r \x01(\v2'.google.monitoring.v3.Service.TelemetryR\ttelemetry\x12N\n" +
	"\vuser_labels\x18\x0e \x03(\v2-.google.monitoring.v3.Service.UserLabelsEntryR\n" +
	"userLabels\x1a\b\n" +
	"\x06Custom\x1a(\n" +
	"\tAppEngine\x12\x1b\n" +
	"\tmodule_id\x18\x01 \x01(\tR\bmoduleId\x1a*\n" +
	"\x0eCloudEndpoints\x12\x18\n" +
	"\aservice\x18\x01 \x01(\tR\aservice\x1a\x9d\x01\n" +
	"\fClusterIstio\x12\x1a\n" +
	"\blocation\x18\x01 \x01(\tR\blocation\x12!\n" +
	"\fcluster_name\x18\x02 \x01(\tR\vclusterName\x12+\n" +
	"\x11service_namespace\x18\x03 \x01(\tR\x10serviceNamespace\x12!\n" +
	"\fservice_name\x18\x04 \x01(\tR\vserviceName\x1av\n" +
	"\tMeshIstio\x12\x19\n" +
	"\bmesh_uid\x18\x01 \x01(\tR\ameshUid\x12+\n" +
	"\x11service_namespace\x18\x03 \x01(\tR\x10serviceNamespace\x12!\n" +
	"\fservice_name\x18\x04 \x01(\tR\vserviceName\x1a\x9f\x01\n" +
	"\x15IstioCanonicalService\x12\x19\n" +
	"\bmesh_uid\x18\x01 \x01(\tR\ameshUid\x12>\n" +
	"\x1bcanonical_service_namespace\x18\x03 \x01(\tR\x19canonicalServiceNamespace\x12+\n" +
	"\x11canonical_service\x18\x04 \x01(\tR\x10canonicalService\x1aI\n" +
	"\bCloudRun\x12!\n" +
	"\fservice_name\x18\x01 \x01(\tR\vserviceName\x12\x1a\n" +
	"\blocation\x18\x02 \x01(\tR\blocation\x1a\x98\x01\n" +
	"\fGkeNamespace\x12\"\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tB\x03\xe0A\x03R\tprojectId\x12\x1a\n" +
	"\blocation\x18\x02 \x01(\tR\blocation\x12!\n" +
	"\fcluster_name\x18\x03 \x01(\tR\vclusterName\x12%\n" +
	"\x0enamespace_name\x18\x04 \x01(\tR\rnamespaceName\x1a\x8d\x02\n" +
	"\vGkeWorkload\x12\"\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tB\x03\xe0A\x03R\tprojectId\x12\x1a\n" +
	"\blocation\x18\x02 \x01(\tR\blocation\x12!\n" +
	"\fcluster_name\x18\x03 \x01(\tR\vclusterName\x12%\n" +
	"\x0enamespace_name\x18\x04 \x01(\tR\rnamespaceName\x129\n" +
	"\x19top_level_controller_type\x18\x05 \x01(\tR\x16topLevelControllerType\x129\n" +
	"\x19top_level_controller_name\x18\x06 \x01(\tR\x16topLevelControllerName\x1a\xb9\x01\n" +
	"\n" +
	"GkeService\x12\"\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tB\x03\xe0A\x03R\tprojectId\x12\x1a\n" +
	"\blocation\x18\x02 \x01(\tR\blocation\x12!\n" +
	"\fcluster_name\x18\x03 \x01(\tR\vclusterName\x12%\n" +
	"\x0enamespace_name\x18\x04 \x01(\tR\rnamespaceName\x12!\n" +
	"\fservice_name\x18\x05 \x01(\tR\vserviceName\x1a\xd9\x01\n" +
	"\fBasicService\x12!\n" +
	"\fservice_type\x18\x01 \x01(\tR\vserviceType\x12d\n" +
	"\x0eservice_labels\x18\x02 \x03(\v2=.google.monitoring.v3.Service.BasicService.ServiceLabelsEntryR\rserviceLabels\x1a@\n" +
	"\x12ServiceLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a0\n" +
	"\tTelemetry\x12#\n" +
	"\rresource_name\x18\x01 \x01(\tR\fresourceName\x1a=\n" +
	"\x0fUserLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01:\xa7\x01\xeaA\xa3\x01\n" +
	"!monitoring.googleapis.com/Service\x12%projects/{project}/services/{service}\x12/organizations/{organization}/services/{service}\x12#folders/{folder}/services/{service}\x12\x01*B\f\n" +
	"\n" +
	"identifier\"\x82\a\n" +
	"\x15ServiceLevelObjective\x12\x17\n" +
	"\x04name\x18\x01 \x01(\tB\x03\xe0A\bR\x04name\x12!\n" +
	"\fdisplay_name\x18\v \x01(\tR\vdisplayName\x12c\n" +
	"\x17service_level_indicator\x18\x03 \x01(\v2+.google.monitoring.v3.ServiceLevelIndicatorR\x15serviceLevelIndicator\x12\x12\n" +
	"\x04goal\x18\x04 \x01(\x01R\x04goal\x12B\n" +
	"\x0erolling_period\x18\x05 \x01(\v2\x19.google.protobuf.DurationH\x00R\rrollingPeriod\x12F\n" +
	"\x0fcalendar_period\x18\x06 \x01(\x0e2\x1b.google.type.CalendarPeriodH\x00R\x0ecalendarPeriod\x12\\\n" +
	"\vuser_labels\x18\f \x03(\v2;.google.monitoring.v3.ServiceLevelObjective.UserLabelsEntryR\n" +
	"userLabels\x1a=\n" +
	"\x0fUserLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"4\n" +
	"\x04View\x12\x14\n" +
	"\x10VIEW_UNSPECIFIED\x10\x00\x12\b\n" +
	"\x04FULL\x10\x02\x12\f\n" +
	"\bEXPLICIT\x10\x01:\xca\x02\xeaA\xc6\x02\n" +
	"/monitoring.googleapis.com/ServiceLevelObjective\x12Vprojects/{project}/services/{service}/serviceLevelObjectives/{service_level_objective}\x12`organizations/{organization}/services/{service}/serviceLevelObjectives/{service_level_objective}\x12Tfolders/{folder}/services/{service}/serviceLevelObjectives/{service_level_objective}\x12\x01* \x01B\b\n" +
	"\x06period\"\xfa\x01\n" +
	"\x15ServiceLevelIndicator\x12=\n" +
	"\tbasic_sli\x18\x04 \x01(\v2\x1e.google.monitoring.v3.BasicSliH\x00R\bbasicSli\x12L\n" +
	"\rrequest_based\x18\x01 \x01(\v2%.google.monitoring.v3.RequestBasedSliH\x00R\frequestBased\x12L\n" +
	"\rwindows_based\x18\x02 \x01(\v2%.google.monitoring.v3.WindowsBasedSliH\x00R\fwindowsBasedB\x06\n" +
	"\x04type\"\xf3\x02\n" +
	"\bBasicSli\x12\x16\n" +
	"\x06method\x18\a \x03(\tR\x06method\x12\x1a\n" +
	"\blocation\x18\b \x03(\tR\blocation\x12\x18\n" +
	"\aversion\x18\t \x03(\tR\aversion\x12Y\n" +
	"\favailability\x18\x02 \x01(\v23.google.monitoring.v3.BasicSli.AvailabilityCriteriaH\x00R\favailability\x12J\n" +
	"\alatency\x18\x03 \x01(\v2..google.monitoring.v3.BasicSli.LatencyCriteriaH\x00R\alatency\x1a\x16\n" +
	"\x14AvailabilityCriteria\x1aJ\n" +
	"\x0fLatencyCriteria\x127\n" +
	"\tthreshold\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\tthresholdB\x0e\n" +
	"\fsli_criteria\"+\n" +
	"\x05Range\x12\x10\n" +
	"\x03min\x18\x01 \x01(\x01R\x03min\x12\x10\n" +
	"\x03max\x18\x02 \x01(\x01R\x03max\"\xc2\x01\n" +
	"\x0fRequestBasedSli\x12Q\n" +
	"\x10good_total_ratio\x18\x01 \x01(\v2%.google.monitoring.v3.TimeSeriesRatioH\x00R\x0egoodTotalRatio\x12R\n" +
	"\x10distribution_cut\x18\x03 \x01(\v2%.google.monitoring.v3.DistributionCutH\x00R\x0fdistributionCutB\b\n" +
	"\x06method\"\xa1\x01\n" +
	"\x0fTimeSeriesRatio\x12.\n" +
	"\x13good_service_filter\x18\x04 \x01(\tR\x11goodServiceFilter\x12,\n" +
	"\x12bad_service_filter\x18\x05 \x01(\tR\x10badServiceFilter\x120\n" +
	"\x14total_service_filter\x18\x06 \x01(\tR\x12totalServiceFilter\"u\n" +
	"\x0fDistributionCut\x12/\n" +
	"\x13distribution_filter\x18\x04 \x01(\tR\x12distributionFilter\x121\n" +
	"\x05range\x18\x05 \x01(\v2\x1b.google.monitoring.v3.RangeR\x05range\"\xa4\x06\n" +
	"\x0fWindowsBasedSli\x125\n" +
	"\x16good_bad_metric_filter\x18\x05 \x01(\tH\x00R\x13goodBadMetricFilter\x12y\n" +
	"\x1agood_total_ratio_threshold\x18\x02 \x01(\v2:.google.monitoring.v3.WindowsBasedSli.PerformanceThresholdH\x00R\x17goodTotalRatioThreshold\x12d\n" +
	"\x14metric_mean_in_range\x18\x06 \x01(\v21.google.monitoring.v3.WindowsBasedSli.MetricRangeH\x00R\x11metricMeanInRange\x12b\n" +
	"\x13metric_sum_in_range\x18\a \x01(\v21.google.monitoring.v3.WindowsBasedSli.MetricRangeH\x00R\x10metricSumInRange\x12>\n" +
	"\rwindow_period\x18\x04 \x01(\v2\x19.google.protobuf.DurationR\fwindowPeriod\x1a\xdd\x01\n" +
	"\x14PerformanceThreshold\x12I\n" +
	"\vperformance\x18\x01 \x01(\v2%.google.monitoring.v3.RequestBasedSliH\x00R\vperformance\x12T\n" +
	"\x15basic_sli_performance\x18\x03 \x01(\v2\x1e.google.monitoring.v3.BasicSliH\x00R\x13basicSliPerformance\x12\x1c\n" +
	"\tthreshold\x18\x02 \x01(\x01R\tthresholdB\x06\n" +
	"\x04type\x1aa\n" +
	"\vMetricRange\x12\x1f\n" +
	"\vtime_series\x18\x01 \x01(\tR\n" +
	"timeSeries\x121\n" +
	"\x05range\x18\x04 \x01(\v2\x1b.google.monitoring.v3.RangeR\x05rangeB\x12\n" +
	"\x10window_criterionB\xd1\x01\n" +
	"\x18com.google.monitoring.v3B\x16ServiceMonitoringProtoP\x01ZAcloud.google.com/go/monitoring/apiv3/v2/monitoringpb;monitoringpb\xaa\x02\x1aGoogle.Cloud.Monitoring.V3\xca\x02\x1aGoogle\\Cloud\\Monitoring\\V3\xea\x02\x1dGoogle::Cloud::Monitoring::V3b\x06proto3"

var (
	file_google_monitoring_v3_service_proto_rawDescOnce sync.Once
	file_google_monitoring_v3_service_proto_rawDescData []byte
)

func file_google_monitoring_v3_service_proto_rawDescGZIP() []byte {
	file_google_monitoring_v3_service_proto_rawDescOnce.Do(func() {
		file_google_monitoring_v3_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_monitoring_v3_service_proto_rawDesc), len(file_google_monitoring_v3_service_proto_rawDesc)))
	})
	return file_google_monitoring_v3_service_proto_rawDescData
}

var file_google_monitoring_v3_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_google_monitoring_v3_service_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
var file_google_monitoring_v3_service_proto_goTypes = []any{
	(ServiceLevelObjective_View)(0),              // 0: google.monitoring.v3.ServiceLevelObjective.View
	(*Service)(nil),                              // 1: google.monitoring.v3.Service
	(*ServiceLevelObjective)(nil),                // 2: google.monitoring.v3.ServiceLevelObjective
	(*ServiceLevelIndicator)(nil),                // 3: google.monitoring.v3.ServiceLevelIndicator
	(*BasicSli)(nil),                             // 4: google.monitoring.v3.BasicSli
	(*Range)(nil),                                // 5: google.monitoring.v3.Range
	(*RequestBasedSli)(nil),                      // 6: google.monitoring.v3.RequestBasedSli
	(*TimeSeriesRatio)(nil),                      // 7: google.monitoring.v3.TimeSeriesRatio
	(*DistributionCut)(nil),                      // 8: google.monitoring.v3.DistributionCut
	(*WindowsBasedSli)(nil),                      // 9: google.monitoring.v3.WindowsBasedSli
	(*Service_Custom)(nil),                       // 10: google.monitoring.v3.Service.Custom
	(*Service_AppEngine)(nil),                    // 11: google.monitoring.v3.Service.AppEngine
	(*Service_CloudEndpoints)(nil),               // 12: google.monitoring.v3.Service.CloudEndpoints
	(*Service_ClusterIstio)(nil),                 // 13: google.monitoring.v3.Service.ClusterIstio
	(*Service_MeshIstio)(nil),                    // 14: google.monitoring.v3.Service.MeshIstio
	(*Service_IstioCanonicalService)(nil),        // 15: google.monitoring.v3.Service.IstioCanonicalService
	(*Service_CloudRun)(nil),                     // 16: google.monitoring.v3.Service.CloudRun
	(*Service_GkeNamespace)(nil),                 // 17: google.monitoring.v3.Service.GkeNamespace
	(*Service_GkeWorkload)(nil),                  // 18: google.monitoring.v3.Service.GkeWorkload
	(*Service_GkeService)(nil),                   // 19: google.monitoring.v3.Service.GkeService
	(*Service_BasicService)(nil),                 // 20: google.monitoring.v3.Service.BasicService
	(*Service_Telemetry)(nil),                    // 21: google.monitoring.v3.Service.Telemetry
	nil,                                          // 22: google.monitoring.v3.Service.UserLabelsEntry
	nil,                                          // 23: google.monitoring.v3.Service.BasicService.ServiceLabelsEntry
	nil,                                          // 24: google.monitoring.v3.ServiceLevelObjective.UserLabelsEntry
	(*BasicSli_AvailabilityCriteria)(nil),        // 25: google.monitoring.v3.BasicSli.AvailabilityCriteria
	(*BasicSli_LatencyCriteria)(nil),             // 26: google.monitoring.v3.BasicSli.LatencyCriteria
	(*WindowsBasedSli_PerformanceThreshold)(nil), // 27: google.monitoring.v3.WindowsBasedSli.PerformanceThreshold
	(*WindowsBasedSli_MetricRange)(nil),          // 28: google.monitoring.v3.WindowsBasedSli.MetricRange
	(*durationpb.Duration)(nil),                  // 29: google.protobuf.Duration
	(calendarperiod.CalendarPeriod)(0),           // 30: google.type.CalendarPeriod
}
var file_google_monitoring_v3_service_proto_depIdxs = []int32{
	10, // 0: google.monitoring.v3.Service.custom:type_name -> google.monitoring.v3.Service.Custom
	11, // 1: google.monitoring.v3.Service.app_engine:type_name -> google.monitoring.v3.Service.AppEngine
	12, // 2: google.monitoring.v3.Service.cloud_endpoints:type_name -> google.monitoring.v3.Service.CloudEndpoints
	13, // 3: google.monitoring.v3.Service.cluster_istio:type_name -> google.monitoring.v3.Service.ClusterIstio
	14, // 4: google.monitoring.v3.Service.mesh_istio:type_name -> google.monitoring.v3.Service.MeshIstio
	15, // 5: google.monitoring.v3.Service.istio_canonical_service:type_name -> google.monitoring.v3.Service.IstioCanonicalService
	16, // 6: google.monitoring.v3.Service.cloud_run:type_name -> google.monitoring.v3.Service.CloudRun
	17, // 7: google.monitoring.v3.Service.gke_namespace:type_name -> google.monitoring.v3.Service.GkeNamespace
	18, // 8: google.monitoring.v3.Service.gke_workload:type_name -> google.monitoring.v3.Service.GkeWorkload
	19, // 9: google.monitoring.v3.Service.gke_service:type_name -> google.monitoring.v3.Service.GkeService
	20, // 10: google.monitoring.v3.Service.basic_service:type_name -> google.monitoring.v3.Service.BasicService
	21, // 11: google.monitoring.v3.Service.telemetry:type_name -> google.monitoring.v3.Service.Telemetry
	22, // 12: google.monitoring.v3.Service.user_labels:type_name -> google.monitoring.v3.Service.UserLabelsEntry
	3,  // 13: google.monitoring.v3.ServiceLevelObjective.service_level_indicator:type_name -> google.monitoring.v3.ServiceLevelIndicator
	29, // 14: google.monitoring.v3.ServiceLevelObjective.rolling_period:type_name -> google.protobuf.Duration
	30, // 15: google.monitoring.v3.ServiceLevelObjective.calendar_period:type_name -> google.type.CalendarPeriod
	24, // 16: google.monitoring.v3.ServiceLevelObjective.user_labels:type_name -> google.monitoring.v3.ServiceLevelObjective.UserLabelsEntry
	4,  // 17: google.monitoring.v3.ServiceLevelIndicator.basic_sli:type_name -> google.monitoring.v3.BasicSli
	6,  // 18: google.monitoring.v3.ServiceLevelIndicator.request_based:type_name -> google.monitoring.v3.RequestBasedSli
	9,  // 19: google.monitoring.v3.ServiceLevelIndicator.windows_based:type_name -> google.monitoring.v3.WindowsBasedSli
	25, // 20: google.monitoring.v3.BasicSli.availability:type_name -> google.monitoring.v3.BasicSli.AvailabilityCriteria
	26, // 21: google.monitoring.v3.BasicSli.latency:type_name -> google.monitoring.v3.BasicSli.LatencyCriteria
	7,  // 22: google.monitoring.v3.RequestBasedSli.good_total_ratio:type_name -> google.monitoring.v3.TimeSeriesRatio
	8,  // 23: google.monitoring.v3.RequestBasedSli.distribution_cut:type_name -> google.monitoring.v3.DistributionCut
	5,  // 24: google.monitoring.v3.DistributionCut.range:type_name -> google.monitoring.v3.Range
	27, // 25: google.monitoring.v3.WindowsBasedSli.good_total_ratio_threshold:type_name -> google.monitoring.v3.WindowsBasedSli.PerformanceThreshold
	28, // 26: google.monitoring.v3.WindowsBasedSli.metric_mean_in_range:type_name -> google.monitoring.v3.WindowsBasedSli.MetricRange
	28, // 27: google.monitoring.v3.WindowsBasedSli.metric_sum_in_range:type_name -> google.monitoring.v3.WindowsBasedSli.MetricRange
	29, // 28: google.monitoring.v3.WindowsBasedSli.window_period:type_name -> google.protobuf.Duration
	23, // 29: google.monitoring.v3.Service.BasicService.service_labels:type_name -> google.monitoring.v3.Service.BasicService.ServiceLabelsEntry
	29, // 30: google.monitoring.v3.BasicSli.LatencyCriteria.threshold:type_name -> google.protobuf.Duration
	6,  // 31: google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.performance:type_name -> google.monitoring.v3.RequestBasedSli
	4,  // 32: google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.basic_sli_performance:type_name -> google.monitoring.v3.BasicSli
	5,  // 33: google.monitoring.v3.WindowsBasedSli.MetricRange.range:type_name -> google.monitoring.v3.Range
	34, // [34:34] is the sub-list for method output_type
	34, // [34:34] is the sub-list for method input_type
	34, // [34:34] is the sub-list for extension type_name
	34, // [34:34] is the sub-list for extension extendee
	0,  // [0:34] is the sub-list for field type_name
}

func init() { file_google_monitoring_v3_service_proto_init() }
func file_google_monitoring_v3_service_proto_init() {
	if File_google_monitoring_v3_service_proto != nil {
		return
	}
	file_google_monitoring_v3_service_proto_msgTypes[0].OneofWrappers = []any{
		(*Service_Custom_)(nil),
		(*Service_AppEngine_)(nil),
		(*Service_CloudEndpoints_)(nil),
		(*Service_ClusterIstio_)(nil),
		(*Service_MeshIstio_)(nil),
		(*Service_IstioCanonicalService_)(nil),
		(*Service_CloudRun_)(nil),
		(*Service_GkeNamespace_)(nil),
		(*Service_GkeWorkload_)(nil),
		(*Service_GkeService_)(nil),
	}
	file_google_monitoring_v3_service_proto_msgTypes[1].OneofWrappers = []any{
		(*ServiceLevelObjective_RollingPeriod)(nil),
		(*ServiceLevelObjective_CalendarPeriod)(nil),
	}
	file_google_monitoring_v3_service_proto_msgTypes[2].OneofWrappers = []any{
		(*ServiceLevelIndicator_BasicSli)(nil),
		(*ServiceLevelIndicator_RequestBased)(nil),
		(*ServiceLevelIndicator_WindowsBased)(nil),
	}
	file_google_monitoring_v3_service_proto_msgTypes[3].OneofWrappers = []any{
		(*BasicSli_Availability)(nil),
		(*BasicSli_Latency)(nil),
	}
	file_google_monitoring_v3_service_proto_msgTypes[5].OneofWrappers = []any{
		(*RequestBasedSli_GoodTotalRatio)(nil),
		(*RequestBasedSli_DistributionCut)(nil),
	}
	file_google_monitoring_v3_service_proto_msgTypes[8].OneofWrappers = []any{
		(*WindowsBasedSli_GoodBadMetricFilter)(nil),
		(*WindowsBasedSli_GoodTotalRatioThreshold)(nil),
		(*WindowsBasedSli_MetricMeanInRange)(nil),
		(*WindowsBasedSli_MetricSumInRange)(nil),
	}
	file_google_monitoring_v3_service_proto_msgTypes[26].OneofWrappers = []any{
		(*WindowsBasedSli_PerformanceThreshold_Performance)(nil),
		(*WindowsBasedSli_PerformanceThreshold_BasicSliPerformance)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_google_monitoring_v3_service_proto_rawDesc), len(file_google_monitoring_v3_service_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   28,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_monitoring_v3_service_proto_goTypes,
		DependencyIndexes: file_google_monitoring_v3_service_proto_depIdxs,
		EnumInfos:         file_google_monitoring_v3_service_proto_enumTypes,
		MessageInfos:      file_google_monitoring_v3_service_proto_msgTypes,
	}.Build()
	File_google_monitoring_v3_service_proto = out.File
	file_google_monitoring_v3_service_proto_goTypes = nil
	file_google_monitoring_v3_service_proto_depIdxs = nil
}
