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

package apploadbalancer

import (
	_ "github.com/yandex-cloud/go-genproto/yandex/cloud"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	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 RBAC_Action int32

const (
	RBAC_ACTION_UNSPECIFIED RBAC_Action = 0
	// Allows the request if and only if there is a principal that matches the request.
	RBAC_ALLOW RBAC_Action = 1
	// Allows the request if and only if there are no principal that match the request.
	RBAC_DENY RBAC_Action = 2
)

// Enum value maps for RBAC_Action.
var (
	RBAC_Action_name = map[int32]string{
		0: "ACTION_UNSPECIFIED",
		1: "ALLOW",
		2: "DENY",
	}
	RBAC_Action_value = map[string]int32{
		"ACTION_UNSPECIFIED": 0,
		"ALLOW":              1,
		"DENY":               2,
	}
)

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

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

func (RBAC_Action) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[0].Descriptor()
}

func (RBAC_Action) Type() protoreflect.EnumType {
	return &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[0]
}

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

// Deprecated: Use RBAC_Action.Descriptor instead.
func (RBAC_Action) EnumDescriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{2, 0}
}

// HTTP status codes supported for use in redirect responses.
type RedirectAction_RedirectResponseCode int32

const (
	// `301 Moved Permanently` status code.
	RedirectAction_MOVED_PERMANENTLY RedirectAction_RedirectResponseCode = 0
	// `302 Found` status code.
	RedirectAction_FOUND RedirectAction_RedirectResponseCode = 1
	// `303 See Other` status code.
	RedirectAction_SEE_OTHER RedirectAction_RedirectResponseCode = 2
	// `307 Temporary Redirect` status code.
	RedirectAction_TEMPORARY_REDIRECT RedirectAction_RedirectResponseCode = 3
	// `308 Permanent Redirect` status code.
	RedirectAction_PERMANENT_REDIRECT RedirectAction_RedirectResponseCode = 4
)

// Enum value maps for RedirectAction_RedirectResponseCode.
var (
	RedirectAction_RedirectResponseCode_name = map[int32]string{
		0: "MOVED_PERMANENTLY",
		1: "FOUND",
		2: "SEE_OTHER",
		3: "TEMPORARY_REDIRECT",
		4: "PERMANENT_REDIRECT",
	}
	RedirectAction_RedirectResponseCode_value = map[string]int32{
		"MOVED_PERMANENTLY":  0,
		"FOUND":              1,
		"SEE_OTHER":          2,
		"TEMPORARY_REDIRECT": 3,
		"PERMANENT_REDIRECT": 4,
	}
)

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

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

func (RedirectAction_RedirectResponseCode) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[1].Descriptor()
}

func (RedirectAction_RedirectResponseCode) Type() protoreflect.EnumType {
	return &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[1]
}

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

// Deprecated: Use RedirectAction_RedirectResponseCode.Descriptor instead.
func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{15, 0}
}

// gRPC status code supported for use in responses.
type GrpcStatusResponseAction_Status int32

const (
	// `OK` (0) status code.
	GrpcStatusResponseAction_OK GrpcStatusResponseAction_Status = 0
	// `INVALID_ARGUMENT` (3) status code.
	GrpcStatusResponseAction_INVALID_ARGUMENT GrpcStatusResponseAction_Status = 1
	// `NOT_FOUND` (5) status code.
	GrpcStatusResponseAction_NOT_FOUND GrpcStatusResponseAction_Status = 2
	// `PERMISSION_DENIED` (7) status code.
	GrpcStatusResponseAction_PERMISSION_DENIED GrpcStatusResponseAction_Status = 3
	// `UNAUTHENTICATED` (16) status code.
	GrpcStatusResponseAction_UNAUTHENTICATED GrpcStatusResponseAction_Status = 4
	// `UNIMPLEMENTED` (12) status code.
	GrpcStatusResponseAction_UNIMPLEMENTED GrpcStatusResponseAction_Status = 5
	// `INTERNAL` (13) status code.
	GrpcStatusResponseAction_INTERNAL GrpcStatusResponseAction_Status = 6
	// `UNAVAILABLE` (14) status code.
	GrpcStatusResponseAction_UNAVAILABLE GrpcStatusResponseAction_Status = 7
)

// Enum value maps for GrpcStatusResponseAction_Status.
var (
	GrpcStatusResponseAction_Status_name = map[int32]string{
		0: "OK",
		1: "INVALID_ARGUMENT",
		2: "NOT_FOUND",
		3: "PERMISSION_DENIED",
		4: "UNAUTHENTICATED",
		5: "UNIMPLEMENTED",
		6: "INTERNAL",
		7: "UNAVAILABLE",
	}
	GrpcStatusResponseAction_Status_value = map[string]int32{
		"OK":                0,
		"INVALID_ARGUMENT":  1,
		"NOT_FOUND":         2,
		"PERMISSION_DENIED": 3,
		"UNAUTHENTICATED":   4,
		"UNIMPLEMENTED":     5,
		"INTERNAL":          6,
		"UNAVAILABLE":       7,
	}
)

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

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

func (GrpcStatusResponseAction_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[2].Descriptor()
}

func (GrpcStatusResponseAction_Status) Type() protoreflect.EnumType {
	return &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[2]
}

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

// Deprecated: Use GrpcStatusResponseAction_Status.Descriptor instead.
func (GrpcStatusResponseAction_Status) EnumDescriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{17, 0}
}

// A virtual host resource.
// For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#virtual-host).
type VirtualHost struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Name of the virtual host. The name is unique within the HTTP router.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// List of domains that are attributed to the virtual host.
	//
	// The host is selected to process the request received by the load balancer
	// if the domain specified in the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header matches a domain
	// specified in the host.
	//
	// A wildcard asterisk character (`*`) matches 0 or more characters.
	//
	// If not specified, all domains are attributed to the host, which is the same as specifying a `*` value.
	// An HTTP router must not contain more than one virtual host to which all domains are attributed.
	Authority []string `protobuf:"bytes,2,rep,name=authority,proto3" json:"authority,omitempty"`
	// Routes of the virtual host.
	//
	// A route contains a set of conditions (predicates) that are used by the load balancer to select the route
	// for the request and an action on the request.
	// For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes).
	//
	// The order of routes matters: the first route whose predicate matches the request is selected.
	// The most specific routes should be at the top of the list, so that they are not overridden.
	// For example, if the first HTTP route is configured, via [HttpRoute.match], to match paths prefixed with just `/`,
	// other routes are never matched.
	Routes []*Route `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"`
	// Deprecated, use route_options.modify_request_headers.
	ModifyRequestHeaders []*HeaderModification `protobuf:"bytes,4,rep,name=modify_request_headers,json=modifyRequestHeaders,proto3" json:"modify_request_headers,omitempty"`
	// Deprecated, use route_options.modify_response_headers.
	ModifyResponseHeaders []*HeaderModification `protobuf:"bytes,5,rep,name=modify_response_headers,json=modifyResponseHeaders,proto3" json:"modify_response_headers,omitempty"`
	RouteOptions          *RouteOptions         `protobuf:"bytes,6,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"`
	// RateLimit is a rate limit configuration applied for a whole virtual host.
	RateLimit     *RateLimit `protobuf:"bytes,7,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*VirtualHost) ProtoMessage() {}

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

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

func (x *VirtualHost) GetAuthority() []string {
	if x != nil {
		return x.Authority
	}
	return nil
}

func (x *VirtualHost) GetRoutes() []*Route {
	if x != nil {
		return x.Routes
	}
	return nil
}

func (x *VirtualHost) GetModifyRequestHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyRequestHeaders
	}
	return nil
}

func (x *VirtualHost) GetModifyResponseHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyResponseHeaders
	}
	return nil
}

func (x *VirtualHost) GetRouteOptions() *RouteOptions {
	if x != nil {
		return x.RouteOptions
	}
	return nil
}

func (x *VirtualHost) GetRateLimit() *RateLimit {
	if x != nil {
		return x.RateLimit
	}
	return nil
}

type RouteOptions struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Apply the following modifications to the request headers.
	ModifyRequestHeaders []*HeaderModification `protobuf:"bytes,1,rep,name=modify_request_headers,json=modifyRequestHeaders,proto3" json:"modify_request_headers,omitempty"`
	// Apply the following modifications to the response headers.
	ModifyResponseHeaders []*HeaderModification `protobuf:"bytes,2,rep,name=modify_response_headers,json=modifyResponseHeaders,proto3" json:"modify_response_headers,omitempty"`
	Rbac                  *RBAC                 `protobuf:"bytes,3,opt,name=rbac,proto3" json:"rbac,omitempty"`
	// Security profile that will take effect to all requests routed via particular virtual host.
	SecurityProfileId string `protobuf:"bytes,4,opt,name=security_profile_id,json=securityProfileId,proto3" json:"security_profile_id,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*RouteOptions) ProtoMessage() {}

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

func (x *RouteOptions) GetModifyRequestHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyRequestHeaders
	}
	return nil
}

func (x *RouteOptions) GetModifyResponseHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyResponseHeaders
	}
	return nil
}

func (x *RouteOptions) GetRbac() *RBAC {
	if x != nil {
		return x.Rbac
	}
	return nil
}

func (x *RouteOptions) GetSecurityProfileId() string {
	if x != nil {
		return x.SecurityProfileId
	}
	return ""
}

// Role Based Access Control (RBAC) provides router, virtual host, and route access control for the ALB
// service. Requests are allowed or denied based on the `action` and whether a matching principal is
// found. For instance, if the action is ALLOW and a matching principal is found the request should be
// allowed.
type RBAC struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The action to take if a principal matches. Every action either allows or denies a request.
	Action RBAC_Action `protobuf:"varint,1,opt,name=action,proto3,enum=yandex.cloud.apploadbalancer.v1.RBAC_Action" json:"action,omitempty"`
	// Required. A match occurs when at least one matches the request.
	Principals    []*Principals `protobuf:"bytes,2,rep,name=principals,proto3" json:"principals,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RBAC) ProtoMessage() {}

func (x *RBAC) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 RBAC.ProtoReflect.Descriptor instead.
func (*RBAC) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{2}
}

func (x *RBAC) GetAction() RBAC_Action {
	if x != nil {
		return x.Action
	}
	return RBAC_ACTION_UNSPECIFIED
}

func (x *RBAC) GetPrincipals() []*Principals {
	if x != nil {
		return x.Principals
	}
	return nil
}

// Principals define a group of identities for a request.
type Principals struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. A match occurs when all principals match the request.
	AndPrincipals []*Principal `protobuf:"bytes,1,rep,name=and_principals,json=andPrincipals,proto3" json:"and_principals,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Principals) ProtoMessage() {}

func (x *Principals) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 Principals.ProtoReflect.Descriptor instead.
func (*Principals) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{3}
}

func (x *Principals) GetAndPrincipals() []*Principal {
	if x != nil {
		return x.AndPrincipals
	}
	return nil
}

// Principal defines an identity for a request.
type Principal struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Identifier:
	//
	//	*Principal_Header
	//	*Principal_RemoteIp
	//	*Principal_Any
	Identifier    isPrincipal_Identifier `protobuf_oneof:"identifier"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Principal) ProtoMessage() {}

func (x *Principal) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 Principal.ProtoReflect.Descriptor instead.
func (*Principal) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{4}
}

func (x *Principal) GetIdentifier() isPrincipal_Identifier {
	if x != nil {
		return x.Identifier
	}
	return nil
}

func (x *Principal) GetHeader() *Principal_HeaderMatcher {
	if x != nil {
		if x, ok := x.Identifier.(*Principal_Header); ok {
			return x.Header
		}
	}
	return nil
}

func (x *Principal) GetRemoteIp() string {
	if x != nil {
		if x, ok := x.Identifier.(*Principal_RemoteIp); ok {
			return x.RemoteIp
		}
	}
	return ""
}

func (x *Principal) GetAny() bool {
	if x != nil {
		if x, ok := x.Identifier.(*Principal_Any); ok {
			return x.Any
		}
	}
	return false
}

type isPrincipal_Identifier interface {
	isPrincipal_Identifier()
}

type Principal_Header struct {
	// A header (or pseudo-header such as :path or :method) of the incoming HTTP request.
	Header *Principal_HeaderMatcher `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type Principal_RemoteIp struct {
	// A CIDR block or IP that describes the request remote/origin address, e.g. “192.0.0.0/24“ or“192.0.0.4“ .
	RemoteIp string `protobuf:"bytes,2,opt,name=remote_ip,json=remoteIp,proto3,oneof"`
}

type Principal_Any struct {
	// When any is set, it matches any request.
	Any bool `protobuf:"varint,3,opt,name=any,proto3,oneof"`
}

func (*Principal_Header) isPrincipal_Identifier() {}

func (*Principal_RemoteIp) isPrincipal_Identifier() {}

func (*Principal_Any) isPrincipal_Identifier() {}

// A header modification resource.
type HeaderModification struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Name of the header.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Operation to perform on the header.
	//
	// Types that are valid to be assigned to Operation:
	//
	//	*HeaderModification_Append
	//	*HeaderModification_Replace
	//	*HeaderModification_Remove
	//	*HeaderModification_Rename
	Operation     isHeaderModification_Operation `protobuf_oneof:"operation"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HeaderModification) ProtoMessage() {}

func (x *HeaderModification) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 HeaderModification.ProtoReflect.Descriptor instead.
func (*HeaderModification) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{5}
}

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

func (x *HeaderModification) GetOperation() isHeaderModification_Operation {
	if x != nil {
		return x.Operation
	}
	return nil
}

func (x *HeaderModification) GetAppend() string {
	if x != nil {
		if x, ok := x.Operation.(*HeaderModification_Append); ok {
			return x.Append
		}
	}
	return ""
}

func (x *HeaderModification) GetReplace() string {
	if x != nil {
		if x, ok := x.Operation.(*HeaderModification_Replace); ok {
			return x.Replace
		}
	}
	return ""
}

func (x *HeaderModification) GetRemove() bool {
	if x != nil {
		if x, ok := x.Operation.(*HeaderModification_Remove); ok {
			return x.Remove
		}
	}
	return false
}

func (x *HeaderModification) GetRename() string {
	if x != nil {
		if x, ok := x.Operation.(*HeaderModification_Rename); ok {
			return x.Rename
		}
	}
	return ""
}

type isHeaderModification_Operation interface {
	isHeaderModification_Operation()
}

type HeaderModification_Append struct {
	// Appends the specified string to the header value.
	//
	// Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers)
	// are supported.
	Append string `protobuf:"bytes,2,opt,name=append,proto3,oneof"`
}

type HeaderModification_Replace struct {
	// Replaces the value of the header with the specified string.
	//
	// Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers)
	// are supported.
	Replace string `protobuf:"bytes,3,opt,name=replace,proto3,oneof"`
}

type HeaderModification_Remove struct {
	// Removes the header.
	Remove bool `protobuf:"varint,4,opt,name=remove,proto3,oneof"`
}

type HeaderModification_Rename struct {
	// Replaces the name of the header with the specified string.
	// This operation is only supported for ALB Virtual Hosts.
	Rename string `protobuf:"bytes,5,opt,name=rename,proto3,oneof"`
}

func (*HeaderModification_Append) isHeaderModification_Operation() {}

func (*HeaderModification_Replace) isHeaderModification_Operation() {}

func (*HeaderModification_Remove) isHeaderModification_Operation() {}

func (*HeaderModification_Rename) isHeaderModification_Operation() {}

// A route resource.
// For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes).
type Route struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Name of the route.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Route configuration.
	//
	// Types that are valid to be assigned to Route:
	//
	//	*Route_Http
	//	*Route_Grpc
	Route        isRoute_Route `protobuf_oneof:"route"`
	RouteOptions *RouteOptions `protobuf:"bytes,4,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"`
	// Whether set to 'true' disables security profile for the route.
	DisableSecurityProfile bool `protobuf:"varint,5,opt,name=disable_security_profile,json=disableSecurityProfile,proto3" json:"disable_security_profile,omitempty"`
	// Client certificates forwarding settings.
	ClientCertificateForward *ClientCertificateForward `protobuf:"bytes,6,opt,name=client_certificate_forward,json=clientCertificateForward,proto3" json:"client_certificate_forward,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

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

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

func (*Route) ProtoMessage() {}

func (x *Route) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 Route.ProtoReflect.Descriptor instead.
func (*Route) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{6}
}

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

func (x *Route) GetRoute() isRoute_Route {
	if x != nil {
		return x.Route
	}
	return nil
}

func (x *Route) GetHttp() *HttpRoute {
	if x != nil {
		if x, ok := x.Route.(*Route_Http); ok {
			return x.Http
		}
	}
	return nil
}

func (x *Route) GetGrpc() *GrpcRoute {
	if x != nil {
		if x, ok := x.Route.(*Route_Grpc); ok {
			return x.Grpc
		}
	}
	return nil
}

func (x *Route) GetRouteOptions() *RouteOptions {
	if x != nil {
		return x.RouteOptions
	}
	return nil
}

func (x *Route) GetDisableSecurityProfile() bool {
	if x != nil {
		return x.DisableSecurityProfile
	}
	return false
}

func (x *Route) GetClientCertificateForward() *ClientCertificateForward {
	if x != nil {
		return x.ClientCertificateForward
	}
	return nil
}

type isRoute_Route interface {
	isRoute_Route()
}

type Route_Http struct {
	// HTTP route configuration.
	Http *HttpRoute `protobuf:"bytes,2,opt,name=http,proto3,oneof"`
}

type Route_Grpc struct {
	// gRPC route configuration.
	Grpc *GrpcRoute `protobuf:"bytes,3,opt,name=grpc,proto3,oneof"`
}

func (*Route_Http) isRoute_Route() {}

func (*Route_Grpc) isRoute_Route() {}

type ClientCertificateForward struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If specified, ALB will set specified header with the provided client certificate (if it is validated by trusted CA).
	HttpHeader string `protobuf:"bytes,1,opt,name=http_header,json=httpHeader,proto3" json:"http_header,omitempty"`
	// If specified, ALB will set specified header with the provided client certificate's Issuer (if it is validated by trusted CA).
	IssuerHeaderName string `protobuf:"bytes,2,opt,name=issuer_header_name,json=issuerHeaderName,proto3" json:"issuer_header_name,omitempty"`
	// If specified, ALB will set specified header with the provided client certificate's Subject (if it is validated by trusted CA).
	SubjectHeaderName string `protobuf:"bytes,3,opt,name=subject_header_name,json=subjectHeaderName,proto3" json:"subject_header_name,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*ClientCertificateForward) ProtoMessage() {}

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

func (x *ClientCertificateForward) GetHttpHeader() string {
	if x != nil {
		return x.HttpHeader
	}
	return ""
}

func (x *ClientCertificateForward) GetIssuerHeaderName() string {
	if x != nil {
		return x.IssuerHeaderName
	}
	return ""
}

func (x *ClientCertificateForward) GetSubjectHeaderName() string {
	if x != nil {
		return x.SubjectHeaderName
	}
	return ""
}

// An HTTP route configuration resource.
type HttpRoute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Condition (predicate) used to select the route.
	Match *HttpRouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
	// Action performed on the request if the route is selected.
	//
	// Types that are valid to be assigned to Action:
	//
	//	*HttpRoute_Route
	//	*HttpRoute_Redirect
	//	*HttpRoute_DirectResponse
	Action        isHttpRoute_Action `protobuf_oneof:"action"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HttpRoute) ProtoMessage() {}

func (x *HttpRoute) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 HttpRoute.ProtoReflect.Descriptor instead.
func (*HttpRoute) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{8}
}

func (x *HttpRoute) GetMatch() *HttpRouteMatch {
	if x != nil {
		return x.Match
	}
	return nil
}

func (x *HttpRoute) GetAction() isHttpRoute_Action {
	if x != nil {
		return x.Action
	}
	return nil
}

func (x *HttpRoute) GetRoute() *HttpRouteAction {
	if x != nil {
		if x, ok := x.Action.(*HttpRoute_Route); ok {
			return x.Route
		}
	}
	return nil
}

func (x *HttpRoute) GetRedirect() *RedirectAction {
	if x != nil {
		if x, ok := x.Action.(*HttpRoute_Redirect); ok {
			return x.Redirect
		}
	}
	return nil
}

func (x *HttpRoute) GetDirectResponse() *DirectResponseAction {
	if x != nil {
		if x, ok := x.Action.(*HttpRoute_DirectResponse); ok {
			return x.DirectResponse
		}
	}
	return nil
}

type isHttpRoute_Action interface {
	isHttpRoute_Action()
}

type HttpRoute_Route struct {
	// Forwards the request to a backend group for processing as configured.
	Route *HttpRouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"`
}

type HttpRoute_Redirect struct {
	// Redirects the request as configured.
	Redirect *RedirectAction `protobuf:"bytes,3,opt,name=redirect,proto3,oneof"`
}

type HttpRoute_DirectResponse struct {
	// Instructs the load balancer to respond directly as configured.
	DirectResponse *DirectResponseAction `protobuf:"bytes,4,opt,name=direct_response,json=directResponse,proto3,oneof"`
}

func (*HttpRoute_Route) isHttpRoute_Action() {}

func (*HttpRoute_Redirect) isHttpRoute_Action() {}

func (*HttpRoute_DirectResponse) isHttpRoute_Action() {}

// A gRPC route configuration resource.
type GrpcRoute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Condition (predicate) used to select the route.
	Match *GrpcRouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
	// Action performed on the request if the route is selected.
	//
	// Types that are valid to be assigned to Action:
	//
	//	*GrpcRoute_Route
	//	*GrpcRoute_StatusResponse
	Action        isGrpcRoute_Action `protobuf_oneof:"action"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GrpcRoute) ProtoMessage() {}

func (x *GrpcRoute) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 GrpcRoute.ProtoReflect.Descriptor instead.
func (*GrpcRoute) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{9}
}

func (x *GrpcRoute) GetMatch() *GrpcRouteMatch {
	if x != nil {
		return x.Match
	}
	return nil
}

func (x *GrpcRoute) GetAction() isGrpcRoute_Action {
	if x != nil {
		return x.Action
	}
	return nil
}

func (x *GrpcRoute) GetRoute() *GrpcRouteAction {
	if x != nil {
		if x, ok := x.Action.(*GrpcRoute_Route); ok {
			return x.Route
		}
	}
	return nil
}

func (x *GrpcRoute) GetStatusResponse() *GrpcStatusResponseAction {
	if x != nil {
		if x, ok := x.Action.(*GrpcRoute_StatusResponse); ok {
			return x.StatusResponse
		}
	}
	return nil
}

type isGrpcRoute_Action interface {
	isGrpcRoute_Action()
}

type GrpcRoute_Route struct {
	// Forwards the request to a backend group for processing as configured.
	Route *GrpcRouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"`
}

type GrpcRoute_StatusResponse struct {
	// Instructs the load balancer to respond directly with a specified status.
	StatusResponse *GrpcStatusResponseAction `protobuf:"bytes,3,opt,name=status_response,json=statusResponse,proto3,oneof"`
}

func (*GrpcRoute_Route) isGrpcRoute_Action() {}

func (*GrpcRoute_StatusResponse) isGrpcRoute_Action() {}

type HttpRouteHeaderMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Name of the HTTP Header to be matched.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Value of HTTP Header to be matched.
	Value         *StringMatch `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HttpRouteHeaderMatch) ProtoMessage() {}

func (x *HttpRouteHeaderMatch) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 HttpRouteHeaderMatch.ProtoReflect.Descriptor instead.
func (*HttpRouteHeaderMatch) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{10}
}

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

func (x *HttpRouteHeaderMatch) GetValue() *StringMatch {
	if x != nil {
		return x.Value
	}
	return nil
}

type HttpRouteQueryParamMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Name of the HTTP query parameter to be matched.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Value of HTTP query parameter to be matched.
	Value         *StringMatch `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HttpRouteQueryParamMatch) ProtoMessage() {}

func (x *HttpRouteQueryParamMatch) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 HttpRouteQueryParamMatch.ProtoReflect.Descriptor instead.
func (*HttpRouteQueryParamMatch) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{11}
}

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

func (x *HttpRouteQueryParamMatch) GetValue() *StringMatch {
	if x != nil {
		return x.Value
	}
	return nil
}

// An HTTP route condition (predicate) resource.
type HttpRouteMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// HTTP method specified in the request.
	HttpMethod []string `protobuf:"bytes,1,rep,name=http_method,json=httpMethod,proto3" json:"http_method,omitempty"`
	// Match settings for the path specified in the request.
	//
	// If not specified, the route matches all paths.
	Path *StringMatch `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	// Headers specify HTTP request header matchers. Multiple match values are
	// ANDed together, meaning, a request must match all the specified headers
	// to select the route. Headers must be unique.
	Headers []*HttpRouteHeaderMatch `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"`
	// Query Parameters specify HTTP query parameter matchers. Multiple match
	// values are ANDed together, meaning, a request must match all the
	// specified query parameters to select the route. Query parameters must be unique.
	QueryParameters []*HttpRouteQueryParamMatch `protobuf:"bytes,4,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*HttpRouteMatch) ProtoMessage() {}

func (x *HttpRouteMatch) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 HttpRouteMatch.ProtoReflect.Descriptor instead.
func (*HttpRouteMatch) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{12}
}

func (x *HttpRouteMatch) GetHttpMethod() []string {
	if x != nil {
		return x.HttpMethod
	}
	return nil
}

func (x *HttpRouteMatch) GetPath() *StringMatch {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *HttpRouteMatch) GetHeaders() []*HttpRouteHeaderMatch {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *HttpRouteMatch) GetQueryParameters() []*HttpRouteQueryParamMatch {
	if x != nil {
		return x.QueryParameters
	}
	return nil
}

// A gRPC route condition (predicate) resource.
type GrpcRouteMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Match settings for gRPC service method called in the request.
	//
	// A match string must be a fully qualified method name, e.g. `foo.bar.v1.BazService/Get`, or a prefix of such.
	//
	// If not specified, the route matches all methods.
	Fqmn          *StringMatch `protobuf:"bytes,1,opt,name=fqmn,proto3" json:"fqmn,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GrpcRouteMatch) ProtoMessage() {}

func (x *GrpcRouteMatch) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 GrpcRouteMatch.ProtoReflect.Descriptor instead.
func (*GrpcRouteMatch) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{13}
}

func (x *GrpcRouteMatch) GetFqmn() *StringMatch {
	if x != nil {
		return x.Fqmn
	}
	return nil
}

// A string matcher resource.
type StringMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Match string for either exact or prefix match.
	//
	// Types that are valid to be assigned to Match:
	//
	//	*StringMatch_ExactMatch
	//	*StringMatch_PrefixMatch
	//	*StringMatch_RegexMatch
	Match         isStringMatch_Match `protobuf_oneof:"match"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StringMatch) ProtoMessage() {}

func (x *StringMatch) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 StringMatch.ProtoReflect.Descriptor instead.
func (*StringMatch) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{14}
}

func (x *StringMatch) GetMatch() isStringMatch_Match {
	if x != nil {
		return x.Match
	}
	return nil
}

func (x *StringMatch) GetExactMatch() string {
	if x != nil {
		if x, ok := x.Match.(*StringMatch_ExactMatch); ok {
			return x.ExactMatch
		}
	}
	return ""
}

func (x *StringMatch) GetPrefixMatch() string {
	if x != nil {
		if x, ok := x.Match.(*StringMatch_PrefixMatch); ok {
			return x.PrefixMatch
		}
	}
	return ""
}

func (x *StringMatch) GetRegexMatch() string {
	if x != nil {
		if x, ok := x.Match.(*StringMatch_RegexMatch); ok {
			return x.RegexMatch
		}
	}
	return ""
}

type isStringMatch_Match interface {
	isStringMatch_Match()
}

type StringMatch_ExactMatch struct {
	// Exact match string.
	ExactMatch string `protobuf:"bytes,1,opt,name=exact_match,json=exactMatch,proto3,oneof"`
}

type StringMatch_PrefixMatch struct {
	// Prefix match string.
	PrefixMatch string `protobuf:"bytes,2,opt,name=prefix_match,json=prefixMatch,proto3,oneof"`
}

type StringMatch_RegexMatch struct {
	// Regular expression match string.
	RegexMatch string `protobuf:"bytes,3,opt,name=regex_match,json=regexMatch,proto3,oneof"`
}

func (*StringMatch_ExactMatch) isStringMatch_Match() {}

func (*StringMatch_PrefixMatch) isStringMatch_Match() {}

func (*StringMatch_RegexMatch) isStringMatch_Match() {}

// A redirect action resource.
type RedirectAction struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// URI scheme replacement.
	//
	// If `http` or `https` scheme is to be replaced and `80` or `443` port is specified in the original URI,
	// the port is also removed.
	//
	// If not specified, the original scheme and port are used.
	ReplaceScheme string `protobuf:"bytes,1,opt,name=replace_scheme,json=replaceScheme,proto3" json:"replace_scheme,omitempty"`
	// URI host replacement.
	//
	// If not specified, the original host is used.
	ReplaceHost string `protobuf:"bytes,2,opt,name=replace_host,json=replaceHost,proto3" json:"replace_host,omitempty"`
	// URI host replacement.
	//
	// If not specified, the original host is used.
	ReplacePort int64 `protobuf:"varint,3,opt,name=replace_port,json=replacePort,proto3" json:"replace_port,omitempty"`
	// URI path replacement.
	//
	// If not specified, the original path is used.
	//
	// Types that are valid to be assigned to Path:
	//
	//	*RedirectAction_ReplacePath
	//	*RedirectAction_ReplacePrefix
	Path isRedirectAction_Path `protobuf_oneof:"path"`
	// Removes URI query.
	RemoveQuery bool `protobuf:"varint,6,opt,name=remove_query,json=removeQuery,proto3" json:"remove_query,omitempty"`
	// HTTP status code to use in redirect responses.
	ResponseCode  RedirectAction_RedirectResponseCode `protobuf:"varint,7,opt,name=response_code,json=responseCode,proto3,enum=yandex.cloud.apploadbalancer.v1.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RedirectAction) ProtoMessage() {}

func (x *RedirectAction) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 RedirectAction.ProtoReflect.Descriptor instead.
func (*RedirectAction) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{15}
}

func (x *RedirectAction) GetReplaceScheme() string {
	if x != nil {
		return x.ReplaceScheme
	}
	return ""
}

func (x *RedirectAction) GetReplaceHost() string {
	if x != nil {
		return x.ReplaceHost
	}
	return ""
}

func (x *RedirectAction) GetReplacePort() int64 {
	if x != nil {
		return x.ReplacePort
	}
	return 0
}

func (x *RedirectAction) GetPath() isRedirectAction_Path {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *RedirectAction) GetReplacePath() string {
	if x != nil {
		if x, ok := x.Path.(*RedirectAction_ReplacePath); ok {
			return x.ReplacePath
		}
	}
	return ""
}

func (x *RedirectAction) GetReplacePrefix() string {
	if x != nil {
		if x, ok := x.Path.(*RedirectAction_ReplacePrefix); ok {
			return x.ReplacePrefix
		}
	}
	return ""
}

func (x *RedirectAction) GetRemoveQuery() bool {
	if x != nil {
		return x.RemoveQuery
	}
	return false
}

func (x *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode {
	if x != nil {
		return x.ResponseCode
	}
	return RedirectAction_MOVED_PERMANENTLY
}

type isRedirectAction_Path interface {
	isRedirectAction_Path()
}

type RedirectAction_ReplacePath struct {
	// Replacement for the whole path.
	ReplacePath string `protobuf:"bytes,4,opt,name=replace_path,json=replacePath,proto3,oneof"`
}

type RedirectAction_ReplacePrefix struct {
	// Replacement for the path prefix matched by [StringMatch].
	//
	// For instance, if [StringMatch.prefix_match] value is `/foo` and `replace_prefix` value is `/bar`,
	// a request with `https://example.com/foobaz` URI is redirected to `https://example.com/barbaz`.
	// For [StringMatch.exact_match], the whole path is replaced.
	ReplacePrefix string `protobuf:"bytes,5,opt,name=replace_prefix,json=replacePrefix,proto3,oneof"`
}

func (*RedirectAction_ReplacePath) isRedirectAction_Path() {}

func (*RedirectAction_ReplacePrefix) isRedirectAction_Path() {}

// A direct response action resource.
type DirectResponseAction struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// HTTP status code to use in responses.
	Status int64 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	// Response body.
	Body          *Payload `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DirectResponseAction) ProtoMessage() {}

func (x *DirectResponseAction) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 DirectResponseAction.ProtoReflect.Descriptor instead.
func (*DirectResponseAction) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{16}
}

func (x *DirectResponseAction) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *DirectResponseAction) GetBody() *Payload {
	if x != nil {
		return x.Body
	}
	return nil
}

// A gRPC status response action resource.
type GrpcStatusResponseAction struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// gRPC [status code](https://grpc.github.io/grpc/core/md_doc_statuscodes.html) to use in responses.
	Status        GrpcStatusResponseAction_Status `protobuf:"varint,1,opt,name=status,proto3,enum=yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction_Status" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GrpcStatusResponseAction) ProtoMessage() {}

func (x *GrpcStatusResponseAction) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 GrpcStatusResponseAction.ProtoReflect.Descriptor instead.
func (*GrpcStatusResponseAction) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{17}
}

func (x *GrpcStatusResponseAction) GetStatus() GrpcStatusResponseAction_Status {
	if x != nil {
		return x.Status
	}
	return GrpcStatusResponseAction_OK
}

// An HTTP route action resource.
type HttpRouteAction struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Backend group to forward requests to.
	//
	// Stream (TCP) backend groups are not supported.
	BackendGroupId string `protobuf:"bytes,1,opt,name=backend_group_id,json=backendGroupId,proto3" json:"backend_group_id,omitempty"`
	// Overall timeout for an HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is kept alive for, regardless of whether data is transferred over it.
	//
	// If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code.
	//
	// Default value: `60`.
	Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// Idle timeout for an HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is allowed to be idle, i.e. without any data transferred over it.
	//
	// Specifying meaningful values for both [timeout] and `idle_timeout` is useful for implementing
	// server-push mechanisms such as long polling, server-sent events (`EventSource` interface) etc.
	//
	// If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code.
	//
	// If not specified, no idle timeout is used, and an alive connection may be idle for any duration (see [timeout]).
	IdleTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
	// Value rewrite settings for HTTP/1.1 `Host` headers and HTTP/2 `:authority` pseudo-headers.
	//
	// If not specified, the host is not changed.
	//
	// Types that are valid to be assigned to HostRewriteSpecifier:
	//
	//	*HttpRouteAction_HostRewrite
	//	*HttpRouteAction_AutoHostRewrite
	HostRewriteSpecifier isHttpRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"`
	// Replacement for the path prefix matched by [StringMatch].
	//
	// For instance, if [StringMatch.prefix_match] value is `/foo` and `prefix_rewrite` value is `/bar`,
	// a request with `/foobaz` path is forwarded with `/barbaz` path.
	// For [StringMatch.exact_match], the whole path is replaced.
	//
	// If not specified, the path is not changed.
	//
	// Only one of regex_rewrite, or prefix_rewrite may be specified.
	PrefixRewrite string `protobuf:"bytes,6,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"`
	// Supported values for HTTP `Upgrade` header. E.g. `websocket`.
	UpgradeTypes []string `protobuf:"bytes,7,rep,name=upgrade_types,json=upgradeTypes,proto3" json:"upgrade_types,omitempty"`
	// RateLimit is a rate limit configuration applied for route.
	RateLimit *RateLimit `protobuf:"bytes,8,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"`
	// Replacement for portions of the path that match the pattern should be rewritten,
	// even allowing the substitution of capture groups from the pattern into the new path as specified
	// by the rewrite substitution string.
	//
	// Only one of regex_rewrite, or prefix_rewrite may be specified.
	//
	// Examples of using:
	//   - The path pattern ^/service/([^/]+)(/.*)$ paired with a substitution string of \2/instance/\1 would transform
	//     /service/foo/v1/api into /v1/api/instance/foo.
	//   - The pattern one paired with a substitution string of two would transform /xxx/one/yyy/one/zzz
	//     into /xxx/two/yyy/two/zzz.
	//   - The pattern ^(.*?)one(.*)$ paired with a substitution string of \1two\2 would replace only the first
	//     occurrence of one, transforming path /xxx/one/yyy/one/zzz into /xxx/two/yyy/one/zzz.
	//   - The pattern (?i)/xxx/ paired with a substitution string of /yyy/ would do a case-insensitive match and transform
	//     path /aaa/XxX/bbb to /aaa/yyy/bbb.
	RegexRewrite  *RegexMatchAndSubstitute `protobuf:"bytes,9,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HttpRouteAction) ProtoMessage() {}

func (x *HttpRouteAction) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 HttpRouteAction.ProtoReflect.Descriptor instead.
func (*HttpRouteAction) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{18}
}

func (x *HttpRouteAction) GetBackendGroupId() string {
	if x != nil {
		return x.BackendGroupId
	}
	return ""
}

func (x *HttpRouteAction) GetTimeout() *durationpb.Duration {
	if x != nil {
		return x.Timeout
	}
	return nil
}

func (x *HttpRouteAction) GetIdleTimeout() *durationpb.Duration {
	if x != nil {
		return x.IdleTimeout
	}
	return nil
}

func (x *HttpRouteAction) GetHostRewriteSpecifier() isHttpRouteAction_HostRewriteSpecifier {
	if x != nil {
		return x.HostRewriteSpecifier
	}
	return nil
}

func (x *HttpRouteAction) GetHostRewrite() string {
	if x != nil {
		if x, ok := x.HostRewriteSpecifier.(*HttpRouteAction_HostRewrite); ok {
			return x.HostRewrite
		}
	}
	return ""
}

func (x *HttpRouteAction) GetAutoHostRewrite() bool {
	if x != nil {
		if x, ok := x.HostRewriteSpecifier.(*HttpRouteAction_AutoHostRewrite); ok {
			return x.AutoHostRewrite
		}
	}
	return false
}

func (x *HttpRouteAction) GetPrefixRewrite() string {
	if x != nil {
		return x.PrefixRewrite
	}
	return ""
}

func (x *HttpRouteAction) GetUpgradeTypes() []string {
	if x != nil {
		return x.UpgradeTypes
	}
	return nil
}

func (x *HttpRouteAction) GetRateLimit() *RateLimit {
	if x != nil {
		return x.RateLimit
	}
	return nil
}

func (x *HttpRouteAction) GetRegexRewrite() *RegexMatchAndSubstitute {
	if x != nil {
		return x.RegexRewrite
	}
	return nil
}

type isHttpRouteAction_HostRewriteSpecifier interface {
	isHttpRouteAction_HostRewriteSpecifier()
}

type HttpRouteAction_HostRewrite struct {
	// Host replacement.
	HostRewrite string `protobuf:"bytes,4,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"`
}

type HttpRouteAction_AutoHostRewrite struct {
	// Automatically replaces the host with that of the target.
	AutoHostRewrite bool `protobuf:"varint,5,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"`
}

func (*HttpRouteAction_HostRewrite) isHttpRouteAction_HostRewriteSpecifier() {}

func (*HttpRouteAction_AutoHostRewrite) isHttpRouteAction_HostRewriteSpecifier() {}

type RegexMatchAndSubstitute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The regular expression used to find portions of a string that should be replaced.
	Regex string `protobuf:"bytes,1,opt,name=regex,proto3" json:"regex,omitempty"`
	// The string that should be substituted into matching portions of the subject string during a substitution operation
	// to produce a new string.
	Substitute    string `protobuf:"bytes,2,opt,name=substitute,proto3" json:"substitute,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RegexMatchAndSubstitute) ProtoMessage() {}

func (x *RegexMatchAndSubstitute) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 RegexMatchAndSubstitute.ProtoReflect.Descriptor instead.
func (*RegexMatchAndSubstitute) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{19}
}

func (x *RegexMatchAndSubstitute) GetRegex() string {
	if x != nil {
		return x.Regex
	}
	return ""
}

func (x *RegexMatchAndSubstitute) GetSubstitute() string {
	if x != nil {
		return x.Substitute
	}
	return ""
}

// A gRPC route action resource.
type GrpcRouteAction struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Backend group to forward requests to.
	BackendGroupId string `protobuf:"bytes,1,opt,name=backend_group_id,json=backendGroupId,proto3" json:"backend_group_id,omitempty"`
	// Overall timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is kept alive for, regardless of whether data is transferred over it.
	//
	// If a client specifies a lower timeout in HTTP `grpc-timeout` header, the `max_timeout` value is ignored.
	//
	// If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code.
	//
	// Default value: `60`.
	MaxTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=max_timeout,json=maxTimeout,proto3" json:"max_timeout,omitempty"`
	// Idle timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is allowed to be idle, i.e. without any data transferred over it.
	//
	// Specifying meaningful values for both [max_timeout] and `idle_timeout` is useful for implementing
	// server-push mechanisms such as long polling, server-sent events etc.
	//
	// If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code.
	//
	// If not specified, no idle timeout is used, and an alive connection may be idle for any duration
	// (see [max_timeout]).
	IdleTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
	// Value rewrite settings for HTTP/1.1 `Host` headers and HTTP/2 `:authority` pseudo-headers.
	//
	// If not specified, the host is not changed.
	//
	// Types that are valid to be assigned to HostRewriteSpecifier:
	//
	//	*GrpcRouteAction_HostRewrite
	//	*GrpcRouteAction_AutoHostRewrite
	HostRewriteSpecifier isGrpcRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"`
	// RateLimit is a rate limit configuration applied for route.
	RateLimit     *RateLimit `protobuf:"bytes,6,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GrpcRouteAction) ProtoMessage() {}

func (x *GrpcRouteAction) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_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 GrpcRouteAction.ProtoReflect.Descriptor instead.
func (*GrpcRouteAction) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP(), []int{20}
}

func (x *GrpcRouteAction) GetBackendGroupId() string {
	if x != nil {
		return x.BackendGroupId
	}
	return ""
}

func (x *GrpcRouteAction) GetMaxTimeout() *durationpb.Duration {
	if x != nil {
		return x.MaxTimeout
	}
	return nil
}

func (x *GrpcRouteAction) GetIdleTimeout() *durationpb.Duration {
	if x != nil {
		return x.IdleTimeout
	}
	return nil
}

func (x *GrpcRouteAction) GetHostRewriteSpecifier() isGrpcRouteAction_HostRewriteSpecifier {
	if x != nil {
		return x.HostRewriteSpecifier
	}
	return nil
}

func (x *GrpcRouteAction) GetHostRewrite() string {
	if x != nil {
		if x, ok := x.HostRewriteSpecifier.(*GrpcRouteAction_HostRewrite); ok {
			return x.HostRewrite
		}
	}
	return ""
}

func (x *GrpcRouteAction) GetAutoHostRewrite() bool {
	if x != nil {
		if x, ok := x.HostRewriteSpecifier.(*GrpcRouteAction_AutoHostRewrite); ok {
			return x.AutoHostRewrite
		}
	}
	return false
}

func (x *GrpcRouteAction) GetRateLimit() *RateLimit {
	if x != nil {
		return x.RateLimit
	}
	return nil
}

type isGrpcRouteAction_HostRewriteSpecifier interface {
	isGrpcRouteAction_HostRewriteSpecifier()
}

type GrpcRouteAction_HostRewrite struct {
	// Host replacement.
	HostRewrite string `protobuf:"bytes,4,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"`
}

type GrpcRouteAction_AutoHostRewrite struct {
	// Automatically replaces the host with that of the target.
	AutoHostRewrite bool `protobuf:"varint,5,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"`
}

func (*GrpcRouteAction_HostRewrite) isGrpcRouteAction_HostRewriteSpecifier() {}

func (*GrpcRouteAction_AutoHostRewrite) isGrpcRouteAction_HostRewriteSpecifier() {}

type Principal_HeaderMatcher struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Specifies the name of the header in the request.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Specifies how the header match will be performed to route the request.
	// In the absence of value a request that has specified header name will match,
	// regardless of the header's value.
	Value         *StringMatch `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Principal_HeaderMatcher) Reset() {
	*x = Principal_HeaderMatcher{}
	mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Principal_HeaderMatcher) ProtoMessage() {}

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

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

func (x *Principal_HeaderMatcher) GetValue() *StringMatch {
	if x != nil {
		return x.Value
	}
	return nil
}

var File_yandex_cloud_apploadbalancer_v1_virtual_host_proto protoreflect.FileDescriptor

const file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc = "" +
	"\n" +
	"2yandex/cloud/apploadbalancer/v1/virtual_host.proto\x12\x1fyandex.cloud.apploadbalancer.v1\x1a\x1egoogle/protobuf/duration.proto\x1a-yandex/cloud/apploadbalancer/v1/payload.proto\x1a0yandex/cloud/apploadbalancer/v1/rate_limit.proto\x1a\x1dyandex/cloud/validation.proto\"\xfc\x03\n" +
	"\vVirtualHost\x12\x18\n" +
	"\x04name\x18\x01 \x01(\tB\x04\xe8\xc71\x01R\x04name\x12\x1c\n" +
	"\tauthority\x18\x02 \x03(\tR\tauthority\x12>\n" +
	"\x06routes\x18\x03 \x03(\v2&.yandex.cloud.apploadbalancer.v1.RouteR\x06routes\x12i\n" +
	"\x16modify_request_headers\x18\x04 \x03(\v23.yandex.cloud.apploadbalancer.v1.HeaderModificationR\x14modifyRequestHeaders\x12k\n" +
	"\x17modify_response_headers\x18\x05 \x03(\v23.yandex.cloud.apploadbalancer.v1.HeaderModificationR\x15modifyResponseHeaders\x12R\n" +
	"\rroute_options\x18\x06 \x01(\v2-.yandex.cloud.apploadbalancer.v1.RouteOptionsR\frouteOptions\x12I\n" +
	"\n" +
	"rate_limit\x18\a \x01(\v2*.yandex.cloud.apploadbalancer.v1.RateLimitR\trateLimit\"\xd1\x02\n" +
	"\fRouteOptions\x12i\n" +
	"\x16modify_request_headers\x18\x01 \x03(\v23.yandex.cloud.apploadbalancer.v1.HeaderModificationR\x14modifyRequestHeaders\x12k\n" +
	"\x17modify_response_headers\x18\x02 \x03(\v23.yandex.cloud.apploadbalancer.v1.HeaderModificationR\x15modifyResponseHeaders\x129\n" +
	"\x04rbac\x18\x03 \x01(\v2%.yandex.cloud.apploadbalancer.v1.RBACR\x04rbac\x12.\n" +
	"\x13security_profile_id\x18\x04 \x01(\tR\x11securityProfileId\"\xdf\x01\n" +
	"\x04RBAC\x12J\n" +
	"\x06action\x18\x01 \x01(\x0e2,.yandex.cloud.apploadbalancer.v1.RBAC.ActionB\x04\xe8\xc71\x01R\x06action\x12T\n" +
	"\n" +
	"principals\x18\x02 \x03(\v2+.yandex.cloud.apploadbalancer.v1.PrincipalsB\a\x82\xc81\x03>=1R\n" +
	"principals\"5\n" +
	"\x06Action\x12\x16\n" +
	"\x12ACTION_UNSPECIFIED\x10\x00\x12\t\n" +
	"\x05ALLOW\x10\x01\x12\b\n" +
	"\x04DENY\x10\x02\"h\n" +
	"\n" +
	"Principals\x12Z\n" +
	"\x0eand_principals\x18\x01 \x03(\v2*.yandex.cloud.apploadbalancer.v1.PrincipalB\a\x82\xc81\x03>=1R\randPrincipals\"\x95\x02\n" +
	"\tPrincipal\x12R\n" +
	"\x06header\x18\x01 \x01(\v28.yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcherH\x00R\x06header\x12\x1d\n" +
	"\tremote_ip\x18\x02 \x01(\tH\x00R\bremoteIp\x12\x12\n" +
	"\x03any\x18\x03 \x01(\bH\x00R\x03any\x1am\n" +
	"\rHeaderMatcher\x12\x18\n" +
	"\x04name\x18\x01 \x01(\tB\x04\xe8\xc71\x01R\x04name\x12B\n" +
	"\x05value\x18\x02 \x01(\v2,.yandex.cloud.apploadbalancer.v1.StringMatchR\x05valueB\x12\n" +
	"\n" +
	"identifier\x12\x04\xc0\xc11\x01\"\x9f\x01\n" +
	"\x12HeaderModification\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
	"\x06append\x18\x02 \x01(\tH\x00R\x06append\x12\x1a\n" +
	"\areplace\x18\x03 \x01(\tH\x00R\areplace\x12\x18\n" +
	"\x06remove\x18\x04 \x01(\bH\x00R\x06remove\x12\x18\n" +
	"\x06rename\x18\x05 \x01(\tH\x00R\x06renameB\v\n" +
	"\toperation\"\xbb\x03\n" +
	"\x05Route\x12\x18\n" +
	"\x04name\x18\x01 \x01(\tB\x04\xe8\xc71\x01R\x04name\x12@\n" +
	"\x04http\x18\x02 \x01(\v2*.yandex.cloud.apploadbalancer.v1.HttpRouteH\x00R\x04http\x12@\n" +
	"\x04grpc\x18\x03 \x01(\v2*.yandex.cloud.apploadbalancer.v1.GrpcRouteH\x00R\x04grpc\x12R\n" +
	"\rroute_options\x18\x04 \x01(\v2-.yandex.cloud.apploadbalancer.v1.RouteOptionsR\frouteOptions\x128\n" +
	"\x18disable_security_profile\x18\x05 \x01(\bR\x16disableSecurityProfile\x12w\n" +
	"\x1aclient_certificate_forward\x18\x06 \x01(\v29.yandex.cloud.apploadbalancer.v1.ClientCertificateForwardR\x18clientCertificateForwardB\r\n" +
	"\x05route\x12\x04\xc0\xc11\x01\"\xe9\x02\n" +
	"\x18ClientCertificateForward\x12X\n" +
	"\vhttp_header\x18\x01 \x01(\tB7\xf2\xc713(?i:ssl-client-cert|client-cert|x-ssl-client-cert|)R\n" +
	"httpHeader\x12v\n" +
	"\x12issuer_header_name\x18\x02 \x01(\tBH\xf2\xc71D(?i:ssl-client-issuer-dn|client-cert-issuer|x-ssl-client-issuer-dn|)R\x10issuerHeaderName\x12{\n" +
	"\x13subject_header_name\x18\x03 \x01(\tBK\xf2\xc71G(?i:ssl-client-subject-dn|client-cert-subject|x-ssl-client-subject-dn|)R\x11subjectHeaderName\"\xdd\x02\n" +
	"\tHttpRoute\x12E\n" +
	"\x05match\x18\x01 \x01(\v2/.yandex.cloud.apploadbalancer.v1.HttpRouteMatchR\x05match\x12H\n" +
	"\x05route\x18\x02 \x01(\v20.yandex.cloud.apploadbalancer.v1.HttpRouteActionH\x00R\x05route\x12M\n" +
	"\bredirect\x18\x03 \x01(\v2/.yandex.cloud.apploadbalancer.v1.RedirectActionH\x00R\bredirect\x12`\n" +
	"\x0fdirect_response\x18\x04 \x01(\v25.yandex.cloud.apploadbalancer.v1.DirectResponseActionH\x00R\x0edirectResponseB\x0e\n" +
	"\x06action\x12\x04\xc0\xc11\x01\"\x92\x02\n" +
	"\tGrpcRoute\x12E\n" +
	"\x05match\x18\x01 \x01(\v2/.yandex.cloud.apploadbalancer.v1.GrpcRouteMatchR\x05match\x12H\n" +
	"\x05route\x18\x02 \x01(\v20.yandex.cloud.apploadbalancer.v1.GrpcRouteActionH\x00R\x05route\x12d\n" +
	"\x0fstatus_response\x18\x03 \x01(\v29.yandex.cloud.apploadbalancer.v1.GrpcStatusResponseActionH\x00R\x0estatusResponseB\x0e\n" +
	"\x06action\x12\x04\xc0\xc11\x01\"\x8a\x01\n" +
	"\x14HttpRouteHeaderMatch\x12.\n" +
	"\x04name\x18\x01 \x01(\tB\x1a\xf2\xc71\r[-0-9a-zA-Z]+\x8a\xc81\x051-256R\x04name\x12B\n" +
	"\x05value\x18\x02 \x01(\v2,.yandex.cloud.apploadbalancer.v1.StringMatchR\x05value\"\x8f\x01\n" +
	"\x18HttpRouteQueryParamMatch\x12/\n" +
	"\x04name\x18\x01 \x01(\tB\x1b\xf2\xc71\x0e[-_0-9a-zA-Z]+\x8a\xc81\x051-256R\x04name\x12B\n" +
	"\x05value\x18\x02 \x01(\v2,.yandex.cloud.apploadbalancer.v1.StringMatchR\x05value\"\xbe\x02\n" +
	"\x0eHttpRouteMatch\x12\x1f\n" +
	"\vhttp_method\x18\x01 \x03(\tR\n" +
	"httpMethod\x12@\n" +
	"\x04path\x18\x02 \x01(\v2,.yandex.cloud.apploadbalancer.v1.StringMatchR\x04path\x12Y\n" +
	"\aheaders\x18\x03 \x03(\v25.yandex.cloud.apploadbalancer.v1.HttpRouteHeaderMatchB\b\x82\xc81\x04<=32R\aheaders\x12n\n" +
	"\x10query_parameters\x18\x04 \x03(\v29.yandex.cloud.apploadbalancer.v1.HttpRouteQueryParamMatchB\b\x82\xc81\x04<=32R\x0fqueryParameters\"R\n" +
	"\x0eGrpcRouteMatch\x12@\n" +
	"\x04fqmn\x18\x01 \x01(\v2,.yandex.cloud.apploadbalancer.v1.StringMatchR\x04fqmn\"\x87\x01\n" +
	"\vStringMatch\x12!\n" +
	"\vexact_match\x18\x01 \x01(\tH\x00R\n" +
	"exactMatch\x12#\n" +
	"\fprefix_match\x18\x02 \x01(\tH\x00R\vprefixMatch\x12!\n" +
	"\vregex_match\x18\x03 \x01(\tH\x00R\n" +
	"regexMatchB\r\n" +
	"\x05match\x12\x04\xc0\xc11\x01\"\xda\x03\n" +
	"\x0eRedirectAction\x12%\n" +
	"\x0ereplace_scheme\x18\x01 \x01(\tR\rreplaceScheme\x12!\n" +
	"\freplace_host\x18\x02 \x01(\tR\vreplaceHost\x12!\n" +
	"\freplace_port\x18\x03 \x01(\x03R\vreplacePort\x12#\n" +
	"\freplace_path\x18\x04 \x01(\tH\x00R\vreplacePath\x12'\n" +
	"\x0ereplace_prefix\x18\x05 \x01(\tH\x00R\rreplacePrefix\x12!\n" +
	"\fremove_query\x18\x06 \x01(\bR\vremoveQuery\x12i\n" +
	"\rresponse_code\x18\a \x01(\x0e2D.yandex.cloud.apploadbalancer.v1.RedirectAction.RedirectResponseCodeR\fresponseCode\"w\n" +
	"\x14RedirectResponseCode\x12\x15\n" +
	"\x11MOVED_PERMANENTLY\x10\x00\x12\t\n" +
	"\x05FOUND\x10\x01\x12\r\n" +
	"\tSEE_OTHER\x10\x02\x12\x16\n" +
	"\x12TEMPORARY_REDIRECT\x10\x03\x12\x16\n" +
	"\x12PERMANENT_REDIRECT\x10\x04B\x06\n" +
	"\x04path\"y\n" +
	"\x14DirectResponseAction\x12#\n" +
	"\x06status\x18\x01 \x01(\x03B\v\xfa\xc71\a100-599R\x06status\x12<\n" +
	"\x04body\x18\x02 \x01(\v2(.yandex.cloud.apploadbalancer.v1.PayloadR\x04body\"\x8a\x02\n" +
	"\x18GrpcStatusResponseAction\x12X\n" +
	"\x06status\x18\x01 \x01(\x0e2@.yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction.StatusR\x06status\"\x93\x01\n" +
	"\x06Status\x12\x06\n" +
	"\x02OK\x10\x00\x12\x14\n" +
	"\x10INVALID_ARGUMENT\x10\x01\x12\r\n" +
	"\tNOT_FOUND\x10\x02\x12\x15\n" +
	"\x11PERMISSION_DENIED\x10\x03\x12\x13\n" +
	"\x0fUNAUTHENTICATED\x10\x04\x12\x11\n" +
	"\rUNIMPLEMENTED\x10\x05\x12\f\n" +
	"\bINTERNAL\x10\x06\x12\x0f\n" +
	"\vUNAVAILABLE\x10\a\"\x97\x04\n" +
	"\x0fHttpRouteAction\x12.\n" +
	"\x10backend_group_id\x18\x01 \x01(\tB\x04\xe8\xc71\x01R\x0ebackendGroupId\x123\n" +
	"\atimeout\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\atimeout\x12<\n" +
	"\fidle_timeout\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\vidleTimeout\x12#\n" +
	"\fhost_rewrite\x18\x04 \x01(\tH\x00R\vhostRewrite\x12,\n" +
	"\x11auto_host_rewrite\x18\x05 \x01(\bH\x00R\x0fautoHostRewrite\x12%\n" +
	"\x0eprefix_rewrite\x18\x06 \x01(\tR\rprefixRewrite\x12#\n" +
	"\rupgrade_types\x18\a \x03(\tR\fupgradeTypes\x12I\n" +
	"\n" +
	"rate_limit\x18\b \x01(\v2*.yandex.cloud.apploadbalancer.v1.RateLimitR\trateLimit\x12]\n" +
	"\rregex_rewrite\x18\t \x01(\v28.yandex.cloud.apploadbalancer.v1.RegexMatchAndSubstituteR\fregexRewriteB\x18\n" +
	"\x16host_rewrite_specifier\"O\n" +
	"\x17RegexMatchAndSubstitute\x12\x14\n" +
	"\x05regex\x18\x01 \x01(\tR\x05regex\x12\x1e\n" +
	"\n" +
	"substitute\x18\x02 \x01(\tR\n" +
	"substitute\"\xf3\x02\n" +
	"\x0fGrpcRouteAction\x12.\n" +
	"\x10backend_group_id\x18\x01 \x01(\tB\x04\xe8\xc71\x01R\x0ebackendGroupId\x12:\n" +
	"\vmax_timeout\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\n" +
	"maxTimeout\x12<\n" +
	"\fidle_timeout\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\vidleTimeout\x12#\n" +
	"\fhost_rewrite\x18\x04 \x01(\tH\x00R\vhostRewrite\x12,\n" +
	"\x11auto_host_rewrite\x18\x05 \x01(\bH\x00R\x0fautoHostRewrite\x12I\n" +
	"\n" +
	"rate_limit\x18\x06 \x01(\v2*.yandex.cloud.apploadbalancer.v1.RateLimitR\trateLimitB\x18\n" +
	"\x16host_rewrite_specifierBz\n" +
	"#yandex.cloud.api.apploadbalancer.v1ZSgithub.com/yandex-cloud/go-genproto/yandex/cloud/apploadbalancer/v1;apploadbalancerb\x06proto3"

var (
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescOnce sync.Once
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescData []byte
)

func file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP() []byte {
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescOnce.Do(func() {
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc), len(file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc)))
	})
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescData
}

var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_goTypes = []any{
	(RBAC_Action)(0),                         // 0: yandex.cloud.apploadbalancer.v1.RBAC.Action
	(RedirectAction_RedirectResponseCode)(0), // 1: yandex.cloud.apploadbalancer.v1.RedirectAction.RedirectResponseCode
	(GrpcStatusResponseAction_Status)(0),     // 2: yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction.Status
	(*VirtualHost)(nil),                      // 3: yandex.cloud.apploadbalancer.v1.VirtualHost
	(*RouteOptions)(nil),                     // 4: yandex.cloud.apploadbalancer.v1.RouteOptions
	(*RBAC)(nil),                             // 5: yandex.cloud.apploadbalancer.v1.RBAC
	(*Principals)(nil),                       // 6: yandex.cloud.apploadbalancer.v1.Principals
	(*Principal)(nil),                        // 7: yandex.cloud.apploadbalancer.v1.Principal
	(*HeaderModification)(nil),               // 8: yandex.cloud.apploadbalancer.v1.HeaderModification
	(*Route)(nil),                            // 9: yandex.cloud.apploadbalancer.v1.Route
	(*ClientCertificateForward)(nil),         // 10: yandex.cloud.apploadbalancer.v1.ClientCertificateForward
	(*HttpRoute)(nil),                        // 11: yandex.cloud.apploadbalancer.v1.HttpRoute
	(*GrpcRoute)(nil),                        // 12: yandex.cloud.apploadbalancer.v1.GrpcRoute
	(*HttpRouteHeaderMatch)(nil),             // 13: yandex.cloud.apploadbalancer.v1.HttpRouteHeaderMatch
	(*HttpRouteQueryParamMatch)(nil),         // 14: yandex.cloud.apploadbalancer.v1.HttpRouteQueryParamMatch
	(*HttpRouteMatch)(nil),                   // 15: yandex.cloud.apploadbalancer.v1.HttpRouteMatch
	(*GrpcRouteMatch)(nil),                   // 16: yandex.cloud.apploadbalancer.v1.GrpcRouteMatch
	(*StringMatch)(nil),                      // 17: yandex.cloud.apploadbalancer.v1.StringMatch
	(*RedirectAction)(nil),                   // 18: yandex.cloud.apploadbalancer.v1.RedirectAction
	(*DirectResponseAction)(nil),             // 19: yandex.cloud.apploadbalancer.v1.DirectResponseAction
	(*GrpcStatusResponseAction)(nil),         // 20: yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction
	(*HttpRouteAction)(nil),                  // 21: yandex.cloud.apploadbalancer.v1.HttpRouteAction
	(*RegexMatchAndSubstitute)(nil),          // 22: yandex.cloud.apploadbalancer.v1.RegexMatchAndSubstitute
	(*GrpcRouteAction)(nil),                  // 23: yandex.cloud.apploadbalancer.v1.GrpcRouteAction
	(*Principal_HeaderMatcher)(nil),          // 24: yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcher
	(*RateLimit)(nil),                        // 25: yandex.cloud.apploadbalancer.v1.RateLimit
	(*Payload)(nil),                          // 26: yandex.cloud.apploadbalancer.v1.Payload
	(*durationpb.Duration)(nil),              // 27: google.protobuf.Duration
}
var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_depIdxs = []int32{
	9,  // 0: yandex.cloud.apploadbalancer.v1.VirtualHost.routes:type_name -> yandex.cloud.apploadbalancer.v1.Route
	8,  // 1: yandex.cloud.apploadbalancer.v1.VirtualHost.modify_request_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	8,  // 2: yandex.cloud.apploadbalancer.v1.VirtualHost.modify_response_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	4,  // 3: yandex.cloud.apploadbalancer.v1.VirtualHost.route_options:type_name -> yandex.cloud.apploadbalancer.v1.RouteOptions
	25, // 4: yandex.cloud.apploadbalancer.v1.VirtualHost.rate_limit:type_name -> yandex.cloud.apploadbalancer.v1.RateLimit
	8,  // 5: yandex.cloud.apploadbalancer.v1.RouteOptions.modify_request_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	8,  // 6: yandex.cloud.apploadbalancer.v1.RouteOptions.modify_response_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	5,  // 7: yandex.cloud.apploadbalancer.v1.RouteOptions.rbac:type_name -> yandex.cloud.apploadbalancer.v1.RBAC
	0,  // 8: yandex.cloud.apploadbalancer.v1.RBAC.action:type_name -> yandex.cloud.apploadbalancer.v1.RBAC.Action
	6,  // 9: yandex.cloud.apploadbalancer.v1.RBAC.principals:type_name -> yandex.cloud.apploadbalancer.v1.Principals
	7,  // 10: yandex.cloud.apploadbalancer.v1.Principals.and_principals:type_name -> yandex.cloud.apploadbalancer.v1.Principal
	24, // 11: yandex.cloud.apploadbalancer.v1.Principal.header:type_name -> yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcher
	11, // 12: yandex.cloud.apploadbalancer.v1.Route.http:type_name -> yandex.cloud.apploadbalancer.v1.HttpRoute
	12, // 13: yandex.cloud.apploadbalancer.v1.Route.grpc:type_name -> yandex.cloud.apploadbalancer.v1.GrpcRoute
	4,  // 14: yandex.cloud.apploadbalancer.v1.Route.route_options:type_name -> yandex.cloud.apploadbalancer.v1.RouteOptions
	10, // 15: yandex.cloud.apploadbalancer.v1.Route.client_certificate_forward:type_name -> yandex.cloud.apploadbalancer.v1.ClientCertificateForward
	15, // 16: yandex.cloud.apploadbalancer.v1.HttpRoute.match:type_name -> yandex.cloud.apploadbalancer.v1.HttpRouteMatch
	21, // 17: yandex.cloud.apploadbalancer.v1.HttpRoute.route:type_name -> yandex.cloud.apploadbalancer.v1.HttpRouteAction
	18, // 18: yandex.cloud.apploadbalancer.v1.HttpRoute.redirect:type_name -> yandex.cloud.apploadbalancer.v1.RedirectAction
	19, // 19: yandex.cloud.apploadbalancer.v1.HttpRoute.direct_response:type_name -> yandex.cloud.apploadbalancer.v1.DirectResponseAction
	16, // 20: yandex.cloud.apploadbalancer.v1.GrpcRoute.match:type_name -> yandex.cloud.apploadbalancer.v1.GrpcRouteMatch
	23, // 21: yandex.cloud.apploadbalancer.v1.GrpcRoute.route:type_name -> yandex.cloud.apploadbalancer.v1.GrpcRouteAction
	20, // 22: yandex.cloud.apploadbalancer.v1.GrpcRoute.status_response:type_name -> yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction
	17, // 23: yandex.cloud.apploadbalancer.v1.HttpRouteHeaderMatch.value:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	17, // 24: yandex.cloud.apploadbalancer.v1.HttpRouteQueryParamMatch.value:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	17, // 25: yandex.cloud.apploadbalancer.v1.HttpRouteMatch.path:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	13, // 26: yandex.cloud.apploadbalancer.v1.HttpRouteMatch.headers:type_name -> yandex.cloud.apploadbalancer.v1.HttpRouteHeaderMatch
	14, // 27: yandex.cloud.apploadbalancer.v1.HttpRouteMatch.query_parameters:type_name -> yandex.cloud.apploadbalancer.v1.HttpRouteQueryParamMatch
	17, // 28: yandex.cloud.apploadbalancer.v1.GrpcRouteMatch.fqmn:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	1,  // 29: yandex.cloud.apploadbalancer.v1.RedirectAction.response_code:type_name -> yandex.cloud.apploadbalancer.v1.RedirectAction.RedirectResponseCode
	26, // 30: yandex.cloud.apploadbalancer.v1.DirectResponseAction.body:type_name -> yandex.cloud.apploadbalancer.v1.Payload
	2,  // 31: yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction.status:type_name -> yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction.Status
	27, // 32: yandex.cloud.apploadbalancer.v1.HttpRouteAction.timeout:type_name -> google.protobuf.Duration
	27, // 33: yandex.cloud.apploadbalancer.v1.HttpRouteAction.idle_timeout:type_name -> google.protobuf.Duration
	25, // 34: yandex.cloud.apploadbalancer.v1.HttpRouteAction.rate_limit:type_name -> yandex.cloud.apploadbalancer.v1.RateLimit
	22, // 35: yandex.cloud.apploadbalancer.v1.HttpRouteAction.regex_rewrite:type_name -> yandex.cloud.apploadbalancer.v1.RegexMatchAndSubstitute
	27, // 36: yandex.cloud.apploadbalancer.v1.GrpcRouteAction.max_timeout:type_name -> google.protobuf.Duration
	27, // 37: yandex.cloud.apploadbalancer.v1.GrpcRouteAction.idle_timeout:type_name -> google.protobuf.Duration
	25, // 38: yandex.cloud.apploadbalancer.v1.GrpcRouteAction.rate_limit:type_name -> yandex.cloud.apploadbalancer.v1.RateLimit
	17, // 39: yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcher.value:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	40, // [40:40] is the sub-list for method output_type
	40, // [40:40] is the sub-list for method input_type
	40, // [40:40] is the sub-list for extension type_name
	40, // [40:40] is the sub-list for extension extendee
	0,  // [0:40] is the sub-list for field type_name
}

func init() { file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_init() }
func file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_init() {
	if File_yandex_cloud_apploadbalancer_v1_virtual_host_proto != nil {
		return
	}
	file_yandex_cloud_apploadbalancer_v1_payload_proto_init()
	file_yandex_cloud_apploadbalancer_v1_rate_limit_proto_init()
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[4].OneofWrappers = []any{
		(*Principal_Header)(nil),
		(*Principal_RemoteIp)(nil),
		(*Principal_Any)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[5].OneofWrappers = []any{
		(*HeaderModification_Append)(nil),
		(*HeaderModification_Replace)(nil),
		(*HeaderModification_Remove)(nil),
		(*HeaderModification_Rename)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[6].OneofWrappers = []any{
		(*Route_Http)(nil),
		(*Route_Grpc)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[8].OneofWrappers = []any{
		(*HttpRoute_Route)(nil),
		(*HttpRoute_Redirect)(nil),
		(*HttpRoute_DirectResponse)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[9].OneofWrappers = []any{
		(*GrpcRoute_Route)(nil),
		(*GrpcRoute_StatusResponse)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[14].OneofWrappers = []any{
		(*StringMatch_ExactMatch)(nil),
		(*StringMatch_PrefixMatch)(nil),
		(*StringMatch_RegexMatch)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[15].OneofWrappers = []any{
		(*RedirectAction_ReplacePath)(nil),
		(*RedirectAction_ReplacePrefix)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[18].OneofWrappers = []any{
		(*HttpRouteAction_HostRewrite)(nil),
		(*HttpRouteAction_AutoHostRewrite)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[20].OneofWrappers = []any{
		(*GrpcRouteAction_HostRewrite)(nil),
		(*GrpcRouteAction_AutoHostRewrite)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc), len(file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   22,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_goTypes,
		DependencyIndexes: file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_depIdxs,
		EnumInfos:         file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes,
		MessageInfos:      file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes,
	}.Build()
	File_yandex_cloud_apploadbalancer_v1_virtual_host_proto = out.File
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_goTypes = nil
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_depIdxs = nil
}
