// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v3.21.12
// source: yandex/cloud/smartwebsecurity/v1/advanced_rate_limiter/advanced_rate_limiter_profile.proto

package smartwebsecurity

import (
	_ "github.com/yandex-cloud/go-genproto/yandex/cloud"
	v1 "github.com/yandex-cloud/go-genproto/yandex/cloud/smartwebsecurity/v1"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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)
)

// Type of action to perform if this rule matched.
type AdvancedRateLimiterRule_Action int32

const (
	AdvancedRateLimiterRule_ACTION_UNSPECIFIED AdvancedRateLimiterRule_Action = 0
	// Deny request.
	AdvancedRateLimiterRule_DENY AdvancedRateLimiterRule_Action = 1
)

// Enum value maps for AdvancedRateLimiterRule_Action.
var (
	AdvancedRateLimiterRule_Action_name = map[int32]string{
		0: "ACTION_UNSPECIFIED",
		1: "DENY",
	}
	AdvancedRateLimiterRule_Action_value = map[string]int32{
		"ACTION_UNSPECIFIED": 0,
		"DENY":               1,
	}
)

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

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

func (AdvancedRateLimiterRule_Action) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes[0].Descriptor()
}

func (AdvancedRateLimiterRule_Action) Type() protoreflect.EnumType {
	return &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes[0]
}

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

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

// Type of simple characteristic.
type AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type int32

const (
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_TYPE_UNSPECIFIED AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type = 0
	// HTTP Request path.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_REQUEST_PATH AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type = 1
	// HTTP Method.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_HTTP_METHOD AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type = 2
	// IP address.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_IP AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type = 3
	// Region.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_GEO AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type = 4
	// Host.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_HOST AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type = 5
)

// Enum value maps for AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type.
var (
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type_name = map[int32]string{
		0: "TYPE_UNSPECIFIED",
		1: "REQUEST_PATH",
		2: "HTTP_METHOD",
		3: "IP",
		4: "GEO",
		5: "HOST",
	}
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type_value = map[string]int32{
		"TYPE_UNSPECIFIED": 0,
		"REQUEST_PATH":     1,
		"HTTP_METHOD":      2,
		"IP":               3,
		"GEO":              4,
		"HOST":             5,
	}
)

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

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

func (AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes[1].Descriptor()
}

func (AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type) Type() protoreflect.EnumType {
	return &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes[1]
}

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

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

// Type of key characteristic.
type AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type int32

const (
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_TYPE_UNSPECIFIED AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type = 0
	// HTTP cookie key.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_COOKIE_KEY AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type = 1
	// HTTP header key.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_HEADER_KEY AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type = 2
	// Query params key.
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_QUERY_KEY AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type = 3
)

// Enum value maps for AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type.
var (
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type_name = map[int32]string{
		0: "TYPE_UNSPECIFIED",
		1: "COOKIE_KEY",
		2: "HEADER_KEY",
		3: "QUERY_KEY",
	}
	AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type_value = map[string]int32{
		"TYPE_UNSPECIFIED": 0,
		"COOKIE_KEY":       1,
		"HEADER_KEY":       2,
		"QUERY_KEY":        3,
	}
)

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

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

func (AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes[2].Descriptor()
}

func (AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type) Type() protoreflect.EnumType {
	return &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes[2]
}

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

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

// A AdvancedRateLimiterProfile (ARL) resource.
type AdvancedRateLimiterProfile struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// ID of the ARL profile.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// ID of the folder that the ARL profile belongs to.
	FolderId string `protobuf:"bytes,2,opt,name=folder_id,json=folderId,proto3" json:"folder_id,omitempty"`
	// Labels as “ key:value “ pairs. Maximum of 64 per resource.
	Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Name of the ARL profile. The name is unique within the folder. 1-50 characters long.
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// Optional description of the ARL profile.
	Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
	// List of rules.
	AdvancedRateLimiterRules []*AdvancedRateLimiterRule `protobuf:"bytes,6,rep,name=advanced_rate_limiter_rules,json=advancedRateLimiterRules,proto3" json:"advanced_rate_limiter_rules,omitempty"`
	// Creation timestamp in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// ID of the cloud that the ARL profile belongs to.
	CloudId       string `protobuf:"bytes,9,opt,name=cloud_id,json=cloudId,proto3" json:"cloud_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdvancedRateLimiterProfile) ProtoMessage() {}

func (x *AdvancedRateLimiterProfile) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_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 AdvancedRateLimiterProfile.ProtoReflect.Descriptor instead.
func (*AdvancedRateLimiterProfile) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP(), []int{0}
}

func (x *AdvancedRateLimiterProfile) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *AdvancedRateLimiterProfile) GetFolderId() string {
	if x != nil {
		return x.FolderId
	}
	return ""
}

func (x *AdvancedRateLimiterProfile) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

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

func (x *AdvancedRateLimiterProfile) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *AdvancedRateLimiterProfile) GetAdvancedRateLimiterRules() []*AdvancedRateLimiterRule {
	if x != nil {
		return x.AdvancedRateLimiterRules
	}
	return nil
}

func (x *AdvancedRateLimiterProfile) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *AdvancedRateLimiterProfile) GetCloudId() string {
	if x != nil {
		return x.CloudId
	}
	return ""
}

// A AdvancedRateLimiterRule object, see [Rules](/docs/smartwebsecurity/concepts/arl#traffic-conditions).
type AdvancedRateLimiterRule struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Name of the rule. The name is unique within the ARL profile. 1-50 characters long.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Determines the priority in case there are several matched rules.
	// Enter an integer within the range of 1 and 999999.
	// The rule priority must be unique within the entire ARL profile.
	// A lower numeric value means a higher priority.
	Priority int64 `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
	// Optional description of the rule. 0-512 characters long.
	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// This allows you to evaluate backend capabilities and find the optimum limit values.
	// Requests will not be blocked in this mode.
	DryRun bool `protobuf:"varint,4,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
	// Types that are valid to be assigned to RuleSpecifier:
	//
	//	*AdvancedRateLimiterRule_StaticQuota_
	//	*AdvancedRateLimiterRule_DynamicQuota_
	RuleSpecifier isAdvancedRateLimiterRule_RuleSpecifier `protobuf_oneof:"rule_specifier"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdvancedRateLimiterRule) ProtoMessage() {}

func (x *AdvancedRateLimiterRule) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_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 AdvancedRateLimiterRule.ProtoReflect.Descriptor instead.
func (*AdvancedRateLimiterRule) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP(), []int{1}
}

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

func (x *AdvancedRateLimiterRule) GetPriority() int64 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *AdvancedRateLimiterRule) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *AdvancedRateLimiterRule) GetDryRun() bool {
	if x != nil {
		return x.DryRun
	}
	return false
}

func (x *AdvancedRateLimiterRule) GetRuleSpecifier() isAdvancedRateLimiterRule_RuleSpecifier {
	if x != nil {
		return x.RuleSpecifier
	}
	return nil
}

func (x *AdvancedRateLimiterRule) GetStaticQuota() *AdvancedRateLimiterRule_StaticQuota {
	if x != nil {
		if x, ok := x.RuleSpecifier.(*AdvancedRateLimiterRule_StaticQuota_); ok {
			return x.StaticQuota
		}
	}
	return nil
}

func (x *AdvancedRateLimiterRule) GetDynamicQuota() *AdvancedRateLimiterRule_DynamicQuota {
	if x != nil {
		if x, ok := x.RuleSpecifier.(*AdvancedRateLimiterRule_DynamicQuota_); ok {
			return x.DynamicQuota
		}
	}
	return nil
}

type isAdvancedRateLimiterRule_RuleSpecifier interface {
	isAdvancedRateLimiterRule_RuleSpecifier()
}

type AdvancedRateLimiterRule_StaticQuota_ struct {
	// Static quota. Counting each request individually.
	StaticQuota *AdvancedRateLimiterRule_StaticQuota `protobuf:"bytes,5,opt,name=static_quota,json=staticQuota,proto3,oneof"`
}

type AdvancedRateLimiterRule_DynamicQuota_ struct {
	// Dynamic quota. Grouping requests by a certain attribute and limiting the number of groups.
	DynamicQuota *AdvancedRateLimiterRule_DynamicQuota `protobuf:"bytes,6,opt,name=dynamic_quota,json=dynamicQuota,proto3,oneof"`
}

func (*AdvancedRateLimiterRule_StaticQuota_) isAdvancedRateLimiterRule_RuleSpecifier() {}

func (*AdvancedRateLimiterRule_DynamicQuota_) isAdvancedRateLimiterRule_RuleSpecifier() {}

// StaticQuota object.
type AdvancedRateLimiterRule_StaticQuota struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Action in case of exceeding this quota.
	Action AdvancedRateLimiterRule_Action `protobuf:"varint,1,opt,name=action,proto3,enum=yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule_Action" json:"action,omitempty"`
	// The condition for matching the quota.
	Condition *v1.Condition `protobuf:"bytes,2,opt,name=condition,proto3" json:"condition,omitempty"`
	// Desired maximum number of requests per period.
	// Enter an integer within the range of 1 and 9999999999999.
	Limit int64 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Period of time in seconds.
	Period        int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdvancedRateLimiterRule_StaticQuota) ProtoMessage() {}

func (x *AdvancedRateLimiterRule_StaticQuota) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_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 AdvancedRateLimiterRule_StaticQuota.ProtoReflect.Descriptor instead.
func (*AdvancedRateLimiterRule_StaticQuota) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP(), []int{1, 0}
}

func (x *AdvancedRateLimiterRule_StaticQuota) GetAction() AdvancedRateLimiterRule_Action {
	if x != nil {
		return x.Action
	}
	return AdvancedRateLimiterRule_ACTION_UNSPECIFIED
}

func (x *AdvancedRateLimiterRule_StaticQuota) GetCondition() *v1.Condition {
	if x != nil {
		return x.Condition
	}
	return nil
}

func (x *AdvancedRateLimiterRule_StaticQuota) GetLimit() int64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *AdvancedRateLimiterRule_StaticQuota) GetPeriod() int64 {
	if x != nil {
		return x.Period
	}
	return 0
}

// DynamicQuota object.
type AdvancedRateLimiterRule_DynamicQuota struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Action in case of exceeding this quota.
	Action AdvancedRateLimiterRule_Action `protobuf:"varint,1,opt,name=action,proto3,enum=yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule_Action" json:"action,omitempty"`
	// The condition for matching the quota.
	Condition *v1.Condition `protobuf:"bytes,2,opt,name=condition,proto3" json:"condition,omitempty"`
	// Desired maximum number of requests per period.
	// Enter an integer within the range of 1 and 9999999999999.
	Limit int64 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Period of time in seconds.
	Period int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
	// List of characteristics.
	Characteristics []*AdvancedRateLimiterRule_DynamicQuota_Characteristic `protobuf:"bytes,5,rep,name=characteristics,proto3" json:"characteristics,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*AdvancedRateLimiterRule_DynamicQuota) ProtoMessage() {}

func (x *AdvancedRateLimiterRule_DynamicQuota) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_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 AdvancedRateLimiterRule_DynamicQuota.ProtoReflect.Descriptor instead.
func (*AdvancedRateLimiterRule_DynamicQuota) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP(), []int{1, 1}
}

func (x *AdvancedRateLimiterRule_DynamicQuota) GetAction() AdvancedRateLimiterRule_Action {
	if x != nil {
		return x.Action
	}
	return AdvancedRateLimiterRule_ACTION_UNSPECIFIED
}

func (x *AdvancedRateLimiterRule_DynamicQuota) GetCondition() *v1.Condition {
	if x != nil {
		return x.Condition
	}
	return nil
}

func (x *AdvancedRateLimiterRule_DynamicQuota) GetLimit() int64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *AdvancedRateLimiterRule_DynamicQuota) GetPeriod() int64 {
	if x != nil {
		return x.Period
	}
	return 0
}

func (x *AdvancedRateLimiterRule_DynamicQuota) GetCharacteristics() []*AdvancedRateLimiterRule_DynamicQuota_Characteristic {
	if x != nil {
		return x.Characteristics
	}
	return nil
}

type AdvancedRateLimiterRule_DynamicQuota_Characteristic struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to CharacteristicSpecifier:
	//
	//	*AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_
	//	*AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_
	CharacteristicSpecifier isAdvancedRateLimiterRule_DynamicQuota_Characteristic_CharacteristicSpecifier `protobuf_oneof:"characteristic_specifier"`
	// Determines case-sensitive or case-insensitive keys matching.
	CaseInsensitive bool `protobuf:"varint,10,opt,name=case_insensitive,json=caseInsensitive,proto3" json:"case_insensitive,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic) ProtoMessage() {}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_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 AdvancedRateLimiterRule_DynamicQuota_Characteristic.ProtoReflect.Descriptor instead.
func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP(), []int{1, 1, 0}
}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic) GetCharacteristicSpecifier() isAdvancedRateLimiterRule_DynamicQuota_Characteristic_CharacteristicSpecifier {
	if x != nil {
		return x.CharacteristicSpecifier
	}
	return nil
}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic) GetSimpleCharacteristic() *AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic {
	if x != nil {
		if x, ok := x.CharacteristicSpecifier.(*AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_); ok {
			return x.SimpleCharacteristic
		}
	}
	return nil
}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic) GetKeyCharacteristic() *AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic {
	if x != nil {
		if x, ok := x.CharacteristicSpecifier.(*AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_); ok {
			return x.KeyCharacteristic
		}
	}
	return nil
}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic) GetCaseInsensitive() bool {
	if x != nil {
		return x.CaseInsensitive
	}
	return false
}

type isAdvancedRateLimiterRule_DynamicQuota_Characteristic_CharacteristicSpecifier interface {
	isAdvancedRateLimiterRule_DynamicQuota_Characteristic_CharacteristicSpecifier()
}

type AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_ struct {
	// Characteristic automatically based on the Request path, HTTP method, IP address, Region, and Host attributes.
	// See [Rules](/docs/smartwebsecurity/concepts/arl#requests-counting) for more details.
	SimpleCharacteristic *AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic `protobuf:"bytes,1,opt,name=simple_characteristic,json=simpleCharacteristic,proto3,oneof"`
}

type AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_ struct {
	// Characteristic based on key match in the Query params, HTTP header, and HTTP cookie attributes.
	// See [Rules](/docs/smartwebsecurity/concepts/arl#requests-counting) for more details.
	KeyCharacteristic *AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic `protobuf:"bytes,2,opt,name=key_characteristic,json=keyCharacteristic,proto3,oneof"`
}

func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_) isAdvancedRateLimiterRule_DynamicQuota_Characteristic_CharacteristicSpecifier() {
}

func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_) isAdvancedRateLimiterRule_DynamicQuota_Characteristic_CharacteristicSpecifier() {
}

type AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Type of simple characteristic.
	Type          AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type `protobuf:"varint,1,opt,name=type,proto3,enum=yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type" json:"type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic) ProtoMessage() {}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_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 AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic.ProtoReflect.Descriptor instead.
func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP(), []int{1, 1, 0, 0}
}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic) GetType() AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type {
	if x != nil {
		return x.Type
	}
	return AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_TYPE_UNSPECIFIED
}

type AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Type of key characteristic.
	Type AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type `protobuf:"varint,1,opt,name=type,proto3,enum=yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type" json:"type,omitempty"`
	// String value of the key.
	Value         string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic) ProtoMessage() {}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_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 AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic.ProtoReflect.Descriptor instead.
func (*AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP(), []int{1, 1, 0, 1}
}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic) GetType() AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type {
	if x != nil {
		return x.Type
	}
	return AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_TYPE_UNSPECIFIED
}

func (x *AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

var File_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto protoreflect.FileDescriptor

const file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDesc = "" +
	"\n" +
	"Zyandex/cloud/smartwebsecurity/v1/advanced_rate_limiter/advanced_rate_limiter_profile.proto\x126yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter\x1a\x1fgoogle/protobuf/timestamp.proto\x1a7yandex/cloud/smartwebsecurity/v1/security_profile.proto\x1a\x1dyandex/cloud/validation.proto\"\x94\x05\n" +
	"\x1aAdvancedRateLimiterProfile\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" +
	"\tfolder_id\x18\x02 \x01(\tR\bfolderId\x12\xb3\x01\n" +
	"\x06labels\x18\x03 \x03(\v2^.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterProfile.LabelsEntryB;\xf2\xc71\v[-_0-9a-z]*\x82\xc81\x04<=64\x8a\xc81\x04<=63\xb2\xc81\x18\x12\x10[a-z][-_0-9a-z]*\x1a\x041-63R\x06labels\x12>\n" +
	"\x04name\x18\x04 \x01(\tB*\xe8\xc71\x01\xf2\xc71\x1a[a-zA-Z0-9][a-zA-Z0-9-_.]*\x8a\xc81\x041-50R\x04name\x12+\n" +
	"\vdescription\x18\x05 \x01(\tB\t\x8a\xc81\x05<=512R\vdescription\x12\x8e\x01\n" +
	"\x1badvanced_rate_limiter_rules\x18\x06 \x03(\v2O.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRuleR\x18advancedRateLimiterRules\x129\n" +
	"\n" +
	"created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x19\n" +
	"\bcloud_id\x18\t \x01(\tR\acloudId\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01J\x04\b\b\x10\t\"\xc7\x12\n" +
	"\x17AdvancedRateLimiterRule\x12>\n" +
	"\x04name\x18\x01 \x01(\tB*\xe8\xc71\x01\xf2\xc71\x1a[a-zA-Z0-9][a-zA-Z0-9-_.]*\x8a\xc81\x041-50R\x04name\x12(\n" +
	"\bpriority\x18\x02 \x01(\x03B\f\xfa\xc71\b1-999999R\bpriority\x12+\n" +
	"\vdescription\x18\x03 \x01(\tB\t\x8a\xc81\x05<=512R\vdescription\x12\x17\n" +
	"\adry_run\x18\x04 \x01(\bR\x06dryRun\x12\x80\x01\n" +
	"\fstatic_quota\x18\x05 \x01(\v2[.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.StaticQuotaH\x00R\vstaticQuota\x12\x83\x01\n" +
	"\rdynamic_quota\x18\x06 \x01(\v2\\.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuotaH\x00R\fdynamicQuota\x1a\xc9\x02\n" +
	"\vStaticQuota\x12n\n" +
	"\x06action\x18\x01 \x01(\x0e2V.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.ActionR\x06action\x12I\n" +
	"\tcondition\x18\x02 \x01(\v2+.yandex.cloud.smartwebsecurity.v1.ConditionR\tcondition\x12)\n" +
	"\x05limit\x18\x03 \x01(\x03B\x13\xfa\xc71\x0f1-9999999999999R\x05limit\x12T\n" +
	"\x06period\x18\x04 \x01(\x03B<\xfa\xc7181,5,10,30,60,120,180,240,300,600,900,1200,1800,2700,3600R\x06period\x1a\xe2\v\n" +
	"\fDynamicQuota\x12n\n" +
	"\x06action\x18\x01 \x01(\x0e2V.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.ActionR\x06action\x12I\n" +
	"\tcondition\x18\x02 \x01(\v2+.yandex.cloud.smartwebsecurity.v1.ConditionR\tcondition\x12)\n" +
	"\x05limit\x18\x03 \x01(\x03B\x13\xfa\xc71\x0f1-9999999999999R\x05limit\x12T\n" +
	"\x06period\x18\x04 \x01(\x03B<\xfa\xc7181,5,10,30,60,120,180,240,300,600,900,1200,1800,2700,3600R\x06period\x12\x9e\x01\n" +
	"\x0fcharacteristics\x18\x05 \x03(\v2k.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.CharacteristicB\a\x82\xc81\x03<=3R\x0fcharacteristics\x1a\xf4\a\n" +
	"\x0eCharacteristic\x12\xb8\x01\n" +
	"\x15simple_characteristic\x18\x01 \x01(\v2\x80\x01.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.SimpleCharacteristicH\x00R\x14simpleCharacteristic\x12\xae\x01\n" +
	"\x12key_characteristic\x18\x02 \x01(\v2}.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.KeyCharacteristicH\x00R\x11keyCharacteristic\x12)\n" +
	"\x10case_insensitive\x18\n" +
	" \x01(\bR\x0fcaseInsensitive\x1a\x8f\x02\n" +
	"\x14SimpleCharacteristic\x12\x9a\x01\n" +
	"\x04type\x18\x01 \x01(\x0e2\x85\x01.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.SimpleCharacteristic.TypeR\x04type\"Z\n" +
	"\x04Type\x12\x14\n" +
	"\x10TYPE_UNSPECIFIED\x10\x00\x12\x10\n" +
	"\fREQUEST_PATH\x10\x01\x12\x0f\n" +
	"\vHTTP_METHOD\x10\x02\x12\x06\n" +
	"\x02IP\x10\x03\x12\a\n" +
	"\x03GEO\x10\x04\x12\b\n" +
	"\x04HOST\x10\x05\x1a\x90\x02\n" +
	"\x11KeyCharacteristic\x12\x97\x01\n" +
	"\x04type\x18\x01 \x01(\x0e2\x82\x01.yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.KeyCharacteristic.TypeR\x04type\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value\"K\n" +
	"\x04Type\x12\x14\n" +
	"\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n" +
	"\n" +
	"COOKIE_KEY\x10\x01\x12\x0e\n" +
	"\n" +
	"HEADER_KEY\x10\x02\x12\r\n" +
	"\tQUERY_KEY\x10\x03B \n" +
	"\x18characteristic_specifier\x12\x04\xc0\xc11\x01J\x04\b\x03\x10\n" +
	"\"*\n" +
	"\x06Action\x12\x16\n" +
	"\x12ACTION_UNSPECIFIED\x10\x00\x12\b\n" +
	"\x04DENY\x10\x01B\x16\n" +
	"\x0erule_specifier\x12\x04\xc0\xc11\x01B\xa9\x01\n" +
	":yandex.cloud.api.smartwebsecurity.v1.advanced_rate_limiterZkgithub.com/yandex-cloud/go-genproto/yandex/cloud/smartwebsecurity/v1/advanced_rate_limiter;smartwebsecurityb\x06proto3"

var (
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescOnce sync.Once
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescData []byte
)

func file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescGZIP() []byte {
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescOnce.Do(func() {
		file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDesc), len(file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDesc)))
	})
	return file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDescData
}

var file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_goTypes = []any{
	(AdvancedRateLimiterRule_Action)(0),                                                // 0: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.Action
	(AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_Type)(0), // 1: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.SimpleCharacteristic.Type
	(AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_Type)(0),    // 2: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.KeyCharacteristic.Type
	(*AdvancedRateLimiterProfile)(nil),                                                 // 3: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterProfile
	(*AdvancedRateLimiterRule)(nil),                                                    // 4: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule
	nil,                                                                                // 5: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterProfile.LabelsEntry
	(*AdvancedRateLimiterRule_StaticQuota)(nil),                                        // 6: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.StaticQuota
	(*AdvancedRateLimiterRule_DynamicQuota)(nil),                                       // 7: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota
	(*AdvancedRateLimiterRule_DynamicQuota_Characteristic)(nil),                        // 8: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic
	(*AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic)(nil),   // 9: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.SimpleCharacteristic
	(*AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic)(nil),      // 10: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.KeyCharacteristic
	(*timestamppb.Timestamp)(nil),                                                      // 11: google.protobuf.Timestamp
	(*v1.Condition)(nil),                                                               // 12: yandex.cloud.smartwebsecurity.v1.Condition
}
var file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_depIdxs = []int32{
	5,  // 0: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterProfile.labels:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterProfile.LabelsEntry
	4,  // 1: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterProfile.advanced_rate_limiter_rules:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule
	11, // 2: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterProfile.created_at:type_name -> google.protobuf.Timestamp
	6,  // 3: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.static_quota:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.StaticQuota
	7,  // 4: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.dynamic_quota:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota
	0,  // 5: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.StaticQuota.action:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.Action
	12, // 6: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.StaticQuota.condition:type_name -> yandex.cloud.smartwebsecurity.v1.Condition
	0,  // 7: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.action:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.Action
	12, // 8: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.condition:type_name -> yandex.cloud.smartwebsecurity.v1.Condition
	8,  // 9: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.characteristics:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic
	9,  // 10: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.simple_characteristic:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.SimpleCharacteristic
	10, // 11: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.key_characteristic:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.KeyCharacteristic
	1,  // 12: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.SimpleCharacteristic.type:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.SimpleCharacteristic.Type
	2,  // 13: yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.KeyCharacteristic.type:type_name -> yandex.cloud.smartwebsecurity.v1.advanced_rate_limiter.AdvancedRateLimiterRule.DynamicQuota.Characteristic.KeyCharacteristic.Type
	14, // [14:14] is the sub-list for method output_type
	14, // [14:14] is the sub-list for method input_type
	14, // [14:14] is the sub-list for extension type_name
	14, // [14:14] is the sub-list for extension extendee
	0,  // [0:14] is the sub-list for field type_name
}

func init() {
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_init()
}
func file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_init() {
	if File_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto != nil {
		return
	}
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_msgTypes[1].OneofWrappers = []any{
		(*AdvancedRateLimiterRule_StaticQuota_)(nil),
		(*AdvancedRateLimiterRule_DynamicQuota_)(nil),
	}
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_msgTypes[5].OneofWrappers = []any{
		(*AdvancedRateLimiterRule_DynamicQuota_Characteristic_SimpleCharacteristic_)(nil),
		(*AdvancedRateLimiterRule_DynamicQuota_Characteristic_KeyCharacteristic_)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDesc), len(file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   8,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_goTypes,
		DependencyIndexes: file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_depIdxs,
		EnumInfos:         file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_enumTypes,
		MessageInfos:      file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_msgTypes,
	}.Build()
	File_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto = out.File
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_goTypes = nil
	file_yandex_cloud_smartwebsecurity_v1_advanced_rate_limiter_advanced_rate_limiter_profile_proto_depIdxs = nil
}
