// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v7.35.1
// source: envoy/extensions/filters/http/grpc_json_transcoder/v3/transcoder.proto

package grpc_json_transcoderv3

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	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 GrpcJsonTranscoder_UrlUnescapeSpec int32

const (
	// URL path parameters will not decode RFC 6570 reserved characters.
	// For example, segment “%2f%23/%20%2523“ is unescaped to “%2f%23/ %23“.
	GrpcJsonTranscoder_ALL_CHARACTERS_EXCEPT_RESERVED GrpcJsonTranscoder_UrlUnescapeSpec = 0
	// URL path parameters will be fully URI-decoded except in
	// cases of single segment matches in reserved expansion, where “%2F“ will be
	// left encoded.
	// For example, segment “%2f%23/%20%2523“ is unescaped to “%2f#/ %23“.
	GrpcJsonTranscoder_ALL_CHARACTERS_EXCEPT_SLASH GrpcJsonTranscoder_UrlUnescapeSpec = 1
	// URL path parameters will be fully URI-decoded.
	// For example, segment “%2f%23/%20%2523“ is unescaped to “/#/ %23“.
	GrpcJsonTranscoder_ALL_CHARACTERS GrpcJsonTranscoder_UrlUnescapeSpec = 2
)

// Enum value maps for GrpcJsonTranscoder_UrlUnescapeSpec.
var (
	GrpcJsonTranscoder_UrlUnescapeSpec_name = map[int32]string{
		0: "ALL_CHARACTERS_EXCEPT_RESERVED",
		1: "ALL_CHARACTERS_EXCEPT_SLASH",
		2: "ALL_CHARACTERS",
	}
	GrpcJsonTranscoder_UrlUnescapeSpec_value = map[string]int32{
		"ALL_CHARACTERS_EXCEPT_RESERVED": 0,
		"ALL_CHARACTERS_EXCEPT_SLASH":    1,
		"ALL_CHARACTERS":                 2,
	}
)

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

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

func (GrpcJsonTranscoder_UrlUnescapeSpec) Descriptor() protoreflect.EnumDescriptor {
	return file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_enumTypes[0].Descriptor()
}

func (GrpcJsonTranscoder_UrlUnescapeSpec) Type() protoreflect.EnumType {
	return &file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_enumTypes[0]
}

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

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

// [#next-free-field: 18]
// GrpcJsonTranscoder filter configuration.
// The filter itself can be used per route / per virtual host or on the general level. The most
// specific one is being used for a given route. If the list of services is empty - filter
// is considered to be disabled.
// Note that if specifying the filter per route, first the route is matched, and then transcoding
// filter is applied. It matters when specifying the route configuration and paths to match the
// request - for per-route grpc transcoder configs, the original path should be matched, while
// in other cases, the grpc-like path is expected (the one AFTER the filter is applied).
type GrpcJsonTranscoder struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to DescriptorSet:
	//
	//	*GrpcJsonTranscoder_ProtoDescriptor
	//	*GrpcJsonTranscoder_ProtoDescriptorBin
	DescriptorSet isGrpcJsonTranscoder_DescriptorSet `protobuf_oneof:"descriptor_set"`
	// A list of strings that
	// supplies the fully qualified service names (i.e. "package_name.service_name") that
	// the transcoder will translate. If the service name doesn't exist in “proto_descriptor“,
	// Envoy will fail at startup. The “proto_descriptor“ may contain more services than
	// the service names specified here, but they won't be translated.
	//
	// By default, the filter will pass through requests that do not map to any specified services.
	// If the list of services is empty, filter is considered disabled.
	// However, this behavior changes if
	// :ref:`reject_unknown_method <envoy_v3_api_field_extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.RequestValidationOptions.reject_unknown_method>`
	// is enabled.
	Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty"`
	// Control options for response JSON. These options are passed directly to
	// `JsonPrintOptions <https://developers.google.com/protocol-buffers/docs/reference/cpp/
	// google.protobuf.util.json_util#JsonPrintOptions>`_.
	PrintOptions *GrpcJsonTranscoder_PrintOptions `protobuf:"bytes,3,opt,name=print_options,json=printOptions,proto3" json:"print_options,omitempty"`
	// Whether to keep the incoming request route after the outgoing headers have been transformed to
	// the match the upstream gRPC service. Note: This means that routes for gRPC services that are
	// not transcoded cannot be used in combination with “match_incoming_request_route“.
	MatchIncomingRequestRoute bool `protobuf:"varint,5,opt,name=match_incoming_request_route,json=matchIncomingRequestRoute,proto3" json:"match_incoming_request_route,omitempty"`
	// A list of query parameters to be ignored for transcoding method mapping.
	// By default, the transcoder filter will not transcode a request if there are any
	// unknown/invalid query parameters.
	//
	// Example :
	//
	// .. code-block:: proto
	//
	//	service Bookstore {
	//	  rpc GetShelf(GetShelfRequest) returns (Shelf) {
	//	    option (google.api.http) = {
	//	      get: "/shelves/{shelf}"
	//	    };
	//	  }
	//	}
	//
	//	message GetShelfRequest {
	//	  int64 shelf = 1;
	//	}
	//
	//	message Shelf {}
	//
	// The request “/shelves/100?foo=bar“ will not be mapped to “GetShelf``` because variable
	// binding for “foo“ is not defined. Adding “foo“ to “ignored_query_parameters“ will allow
	// the same request to be mapped to “GetShelf“.
	IgnoredQueryParameters []string `protobuf:"bytes,6,rep,name=ignored_query_parameters,json=ignoredQueryParameters,proto3" json:"ignored_query_parameters,omitempty"`
	// Whether to route methods without the “google.api.http“ option.
	//
	// Example :
	//
	// .. code-block:: proto
	//
	//	package bookstore;
	//
	//	service Bookstore {
	//	  rpc GetShelf(GetShelfRequest) returns (Shelf) {}
	//	}
	//
	//	message GetShelfRequest {
	//	  int64 shelf = 1;
	//	}
	//
	//	message Shelf {}
	//
	// The client could “post“ a json body “{"shelf": 1234}“ with the path of
	// “/bookstore.Bookstore/GetShelfRequest“ to call “GetShelfRequest“.
	AutoMapping bool `protobuf:"varint,7,opt,name=auto_mapping,json=autoMapping,proto3" json:"auto_mapping,omitempty"`
	// Whether to ignore query parameters that cannot be mapped to a corresponding
	// protobuf field. Use this if you cannot control the query parameters and do
	// not know them beforehand. Otherwise use “ignored_query_parameters“.
	// Defaults to false.
	IgnoreUnknownQueryParameters bool `protobuf:"varint,8,opt,name=ignore_unknown_query_parameters,json=ignoreUnknownQueryParameters,proto3" json:"ignore_unknown_query_parameters,omitempty"`
	// Whether to convert gRPC status headers to JSON.
	// When trailer indicates a gRPC error and there was no HTTP body, take “google.rpc.Status“
	// from the “grpc-status-details-bin“ header and use it as JSON body.
	// If there was no such header, make “google.rpc.Status“ out of the “grpc-status“ and
	// “grpc-message“ headers.
	// The error details types must be present in the “proto_descriptor“.
	//
	// For example, if an upstream server replies with headers:
	//
	// .. code-block:: none
	//
	//	grpc-status: 5
	//	grpc-status-details-bin:
	//	    CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ
	//
	// The “grpc-status-details-bin“ header contains a base64-encoded protobuf message
	// “google.rpc.Status“. It will be transcoded into:
	//
	// .. code-block:: none
	//
	//	HTTP/1.1 404 Not Found
	//	content-type: application/json
	//
	//	{"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]}
	//
	// In order to transcode the message, the “google.rpc.RequestInfo“ type from
	// the “google/rpc/error_details.proto“ should be included in the configured
	// :ref:`proto descriptor set <config_grpc_json_generate_proto_descriptor_set>`.
	ConvertGrpcStatus bool `protobuf:"varint,9,opt,name=convert_grpc_status,json=convertGrpcStatus,proto3" json:"convert_grpc_status,omitempty"`
	// URL unescaping policy.
	// This spec is only applied when extracting variable with multiple segments in the URL path.
	// For example, in case of “/foo/{x=*}/bar/{y=prefix/*}/{z=**}“ “x“ variable is single segment and “y“ and “z“ are multiple segments.
	// For a path with “/foo/first/bar/prefix/second/third/fourth“, “x=first“, “y=prefix/second“, “z=third/fourth“.
	// If this setting is not specified, the value defaults to :ref:`ALL_CHARACTERS_EXCEPT_RESERVED<envoy_v3_api_enum_value_extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.UrlUnescapeSpec.ALL_CHARACTERS_EXCEPT_RESERVED>`.
	UrlUnescapeSpec GrpcJsonTranscoder_UrlUnescapeSpec `protobuf:"varint,10,opt,name=url_unescape_spec,json=urlUnescapeSpec,proto3,enum=envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder_UrlUnescapeSpec" json:"url_unescape_spec,omitempty"`
	// If true, unescape '+' to space when extracting variables in query parameters.
	// This is to support `HTML 2.0 <https://tools.ietf.org/html/rfc1866#section-8.2.1>`_
	QueryParamUnescapePlus bool `protobuf:"varint,12,opt,name=query_param_unescape_plus,json=queryParamUnescapePlus,proto3" json:"query_param_unescape_plus,omitempty"`
	// If true, try to match the custom verb even if it is unregistered. By
	// default, only match when it is registered.
	//
	// According to the http template `syntax <https://github.com/googleapis/googleapis/blob/master/google/api/http.proto#L226-L231>`_,
	// the custom verb is **":" LITERAL** at the end of http template.
	//
	// For a request with “/foo/bar:baz“ and “:baz“ is not registered in any url_template, here is the behavior change
	// - if the field is not set, “:baz“ will not be treated as custom verb, so it will match “/foo/{x=*}“.
	// - if the field is set, “:baz“ is treated as custom verb,  so it will NOT match “/foo/{x=*}“ since the template doesn't use any custom verb.
	MatchUnregisteredCustomVerb bool `protobuf:"varint,13,opt,name=match_unregistered_custom_verb,json=matchUnregisteredCustomVerb,proto3" json:"match_unregistered_custom_verb,omitempty"`
	// Configure the behavior when handling requests that cannot be transcoded.
	//
	// By default, the transcoder will silently pass through HTTP requests that are malformed.
	// This includes requests with unknown query parameters, unregister paths, etc.
	//
	// Set these options to enable strict HTTP request validation, resulting in the transcoder rejecting
	// such requests with a “HTTP 4xx“. See each individual option for more details on the validation.
	// gRPC requests will still silently pass through without transcoding.
	//
	// The benefit is a proper error message to the downstream.
	// If the upstream is a gRPC server, it cannot handle the passed-through HTTP requests and will reset
	// the TCP connection. The downstream will then
	// receive a “HTTP 503 Service Unavailable“ due to the upstream connection reset.
	// This incorrect error message may conflict with other Envoy components, such as retry policies.
	RequestValidationOptions *GrpcJsonTranscoder_RequestValidationOptions `protobuf:"bytes,11,opt,name=request_validation_options,json=requestValidationOptions,proto3" json:"request_validation_options,omitempty"`
	// Proto enum values are supposed to be in upper cases when used in JSON.
	// Set this to true if your JSON request uses non uppercase enum values.
	CaseInsensitiveEnumParsing bool `protobuf:"varint,14,opt,name=case_insensitive_enum_parsing,json=caseInsensitiveEnumParsing,proto3" json:"case_insensitive_enum_parsing,omitempty"`
	// The maximum size of a request body to be transcoded, in bytes. A body exceeding this size will
	// provoke a “HTTP 413 Request Entity Too Large“ response.
	//
	// Large values may cause envoy to use a lot of memory if there are many concurrent requests.
	//
	// If unset, the current stream buffer size is used.
	MaxRequestBodySize *wrapperspb.UInt32Value `protobuf:"bytes,15,opt,name=max_request_body_size,json=maxRequestBodySize,proto3" json:"max_request_body_size,omitempty"`
	// The maximum size of a response body to be transcoded, in bytes. A body exceeding this size will
	// provoke a “HTTP 500 Internal Server Error“ response.
	//
	// Large values may cause envoy to use a lot of memory if there are many concurrent requests.
	//
	// If unset, the current stream buffer size is used.
	MaxResponseBodySize *wrapperspb.UInt32Value `protobuf:"bytes,16,opt,name=max_response_body_size,json=maxResponseBodySize,proto3" json:"max_response_body_size,omitempty"`
	// If true, query parameters that cannot be mapped to a corresponding
	// protobuf field are captured in an HttpBody extension of UnknownQueryParams.
	CaptureUnknownQueryParameters bool `protobuf:"varint,17,opt,name=capture_unknown_query_parameters,json=captureUnknownQueryParameters,proto3" json:"capture_unknown_query_parameters,omitempty"`
	unknownFields                 protoimpl.UnknownFields
	sizeCache                     protoimpl.SizeCache
}

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

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

func (*GrpcJsonTranscoder) ProtoMessage() {}

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

func (x *GrpcJsonTranscoder) GetDescriptorSet() isGrpcJsonTranscoder_DescriptorSet {
	if x != nil {
		return x.DescriptorSet
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetProtoDescriptor() string {
	if x != nil {
		if x, ok := x.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptor); ok {
			return x.ProtoDescriptor
		}
	}
	return ""
}

func (x *GrpcJsonTranscoder) GetProtoDescriptorBin() []byte {
	if x != nil {
		if x, ok := x.DescriptorSet.(*GrpcJsonTranscoder_ProtoDescriptorBin); ok {
			return x.ProtoDescriptorBin
		}
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetServices() []string {
	if x != nil {
		return x.Services
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetPrintOptions() *GrpcJsonTranscoder_PrintOptions {
	if x != nil {
		return x.PrintOptions
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetMatchIncomingRequestRoute() bool {
	if x != nil {
		return x.MatchIncomingRequestRoute
	}
	return false
}

func (x *GrpcJsonTranscoder) GetIgnoredQueryParameters() []string {
	if x != nil {
		return x.IgnoredQueryParameters
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetAutoMapping() bool {
	if x != nil {
		return x.AutoMapping
	}
	return false
}

func (x *GrpcJsonTranscoder) GetIgnoreUnknownQueryParameters() bool {
	if x != nil {
		return x.IgnoreUnknownQueryParameters
	}
	return false
}

func (x *GrpcJsonTranscoder) GetConvertGrpcStatus() bool {
	if x != nil {
		return x.ConvertGrpcStatus
	}
	return false
}

func (x *GrpcJsonTranscoder) GetUrlUnescapeSpec() GrpcJsonTranscoder_UrlUnescapeSpec {
	if x != nil {
		return x.UrlUnescapeSpec
	}
	return GrpcJsonTranscoder_ALL_CHARACTERS_EXCEPT_RESERVED
}

func (x *GrpcJsonTranscoder) GetQueryParamUnescapePlus() bool {
	if x != nil {
		return x.QueryParamUnescapePlus
	}
	return false
}

func (x *GrpcJsonTranscoder) GetMatchUnregisteredCustomVerb() bool {
	if x != nil {
		return x.MatchUnregisteredCustomVerb
	}
	return false
}

func (x *GrpcJsonTranscoder) GetRequestValidationOptions() *GrpcJsonTranscoder_RequestValidationOptions {
	if x != nil {
		return x.RequestValidationOptions
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetCaseInsensitiveEnumParsing() bool {
	if x != nil {
		return x.CaseInsensitiveEnumParsing
	}
	return false
}

func (x *GrpcJsonTranscoder) GetMaxRequestBodySize() *wrapperspb.UInt32Value {
	if x != nil {
		return x.MaxRequestBodySize
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetMaxResponseBodySize() *wrapperspb.UInt32Value {
	if x != nil {
		return x.MaxResponseBodySize
	}
	return nil
}

func (x *GrpcJsonTranscoder) GetCaptureUnknownQueryParameters() bool {
	if x != nil {
		return x.CaptureUnknownQueryParameters
	}
	return false
}

type isGrpcJsonTranscoder_DescriptorSet interface {
	isGrpcJsonTranscoder_DescriptorSet()
}

type GrpcJsonTranscoder_ProtoDescriptor struct {
	// Supplies the filename of
	// :ref:`the proto descriptor set <config_grpc_json_generate_proto_descriptor_set>` for the gRPC
	// services.
	ProtoDescriptor string `protobuf:"bytes,1,opt,name=proto_descriptor,json=protoDescriptor,proto3,oneof"`
}

type GrpcJsonTranscoder_ProtoDescriptorBin struct {
	// Supplies the binary content of
	// :ref:`the proto descriptor set <config_grpc_json_generate_proto_descriptor_set>` for the gRPC
	// services.
	ProtoDescriptorBin []byte `protobuf:"bytes,4,opt,name=proto_descriptor_bin,json=protoDescriptorBin,proto3,oneof"`
}

func (*GrpcJsonTranscoder_ProtoDescriptor) isGrpcJsonTranscoder_DescriptorSet() {}

func (*GrpcJsonTranscoder_ProtoDescriptorBin) isGrpcJsonTranscoder_DescriptorSet() {}

// “UnknownQueryParams“ is added as an extension field in “HttpBody“ if
// “GrpcJsonTranscoder::capture_unknown_query_parameters“ is true and unknown query
// parameters were present in the request.
type UnknownQueryParams struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// A map from unrecognized query parameter keys, to the values associated with those keys.
	Key           map[string]*UnknownQueryParams_Values `protobuf:"bytes,1,rep,name=key,proto3" json:"key,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UnknownQueryParams) ProtoMessage() {}

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

func (x *UnknownQueryParams) GetKey() map[string]*UnknownQueryParams_Values {
	if x != nil {
		return x.Key
	}
	return nil
}

// [#next-free-field: 7]
type GrpcJsonTranscoder_PrintOptions struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Whether to add spaces, line breaks and indentation to make the JSON
	// output easy to read. Defaults to false.
	AddWhitespace bool `protobuf:"varint,1,opt,name=add_whitespace,json=addWhitespace,proto3" json:"add_whitespace,omitempty"`
	// Whether to always print primitive fields. By default primitive
	// fields with default values will be omitted in JSON output. For
	// example, an int32 field set to 0 will be omitted. Setting this flag to
	// true will override the default behavior and print primitive fields
	// regardless of their values. Defaults to false.
	AlwaysPrintPrimitiveFields bool `protobuf:"varint,2,opt,name=always_print_primitive_fields,json=alwaysPrintPrimitiveFields,proto3" json:"always_print_primitive_fields,omitempty"`
	// Whether to always print enums as ints. By default they are rendered
	// as strings. Defaults to false.
	AlwaysPrintEnumsAsInts bool `protobuf:"varint,3,opt,name=always_print_enums_as_ints,json=alwaysPrintEnumsAsInts,proto3" json:"always_print_enums_as_ints,omitempty"`
	// Whether to preserve proto field names. By default protobuf will
	// generate JSON field names using the “json_name“ option, or lower camel case,
	// in that order. Setting this flag will preserve the original field names. Defaults to false.
	PreserveProtoFieldNames bool `protobuf:"varint,4,opt,name=preserve_proto_field_names,json=preserveProtoFieldNames,proto3" json:"preserve_proto_field_names,omitempty"`
	// If true, return all streams as newline-delimited JSON messages instead of as a comma-separated array
	StreamNewlineDelimited bool `protobuf:"varint,5,opt,name=stream_newline_delimited,json=streamNewlineDelimited,proto3" json:"stream_newline_delimited,omitempty"`
	// If true, enforces Server-Sent Events (SSE) message framing (“data:
	// <message>\n\n“) and, “stream_newline_delimited“ is ignored. If false,
	// message framing is determined by “stream_newline_delimited“.
	StreamSseStyleDelimited bool `protobuf:"varint,6,opt,name=stream_sse_style_delimited,json=streamSseStyleDelimited,proto3" json:"stream_sse_style_delimited,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

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

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

func (*GrpcJsonTranscoder_PrintOptions) ProtoMessage() {}

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

func (x *GrpcJsonTranscoder_PrintOptions) GetAddWhitespace() bool {
	if x != nil {
		return x.AddWhitespace
	}
	return false
}

func (x *GrpcJsonTranscoder_PrintOptions) GetAlwaysPrintPrimitiveFields() bool {
	if x != nil {
		return x.AlwaysPrintPrimitiveFields
	}
	return false
}

func (x *GrpcJsonTranscoder_PrintOptions) GetAlwaysPrintEnumsAsInts() bool {
	if x != nil {
		return x.AlwaysPrintEnumsAsInts
	}
	return false
}

func (x *GrpcJsonTranscoder_PrintOptions) GetPreserveProtoFieldNames() bool {
	if x != nil {
		return x.PreserveProtoFieldNames
	}
	return false
}

func (x *GrpcJsonTranscoder_PrintOptions) GetStreamNewlineDelimited() bool {
	if x != nil {
		return x.StreamNewlineDelimited
	}
	return false
}

func (x *GrpcJsonTranscoder_PrintOptions) GetStreamSseStyleDelimited() bool {
	if x != nil {
		return x.StreamSseStyleDelimited
	}
	return false
}

type GrpcJsonTranscoder_RequestValidationOptions struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// By default, a request that cannot be mapped to any specified gRPC
	// :ref:`services <envoy_v3_api_field_extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.services>`
	// will pass-through this filter.
	// When set to true, the request will be rejected with a “HTTP 404 Not Found“.
	RejectUnknownMethod bool `protobuf:"varint,1,opt,name=reject_unknown_method,json=rejectUnknownMethod,proto3" json:"reject_unknown_method,omitempty"`
	// By default, a request with query parameters that cannot be mapped to the gRPC request message
	// will pass-through this filter.
	// When set to true, the request will be rejected with a “HTTP 400 Bad Request“.
	//
	// The fields
	// :ref:`ignore_unknown_query_parameters <envoy_v3_api_field_extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.ignore_unknown_query_parameters>`,
	// :ref:`capture_unknown_query_parameters <envoy_v3_api_field_extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.capture_unknown_query_parameters>`,
	// and
	// :ref:`ignored_query_parameters <envoy_v3_api_field_extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.ignored_query_parameters>`
	// have priority over this strict validation behavior.
	RejectUnknownQueryParameters bool `protobuf:"varint,2,opt,name=reject_unknown_query_parameters,json=rejectUnknownQueryParameters,proto3" json:"reject_unknown_query_parameters,omitempty"`
	// "id: 456" in the body will override "id=123" in the binding.
	//
	// If this field is set to true, the request will be rejected if the binding
	// value is different from the body value.
	RejectBindingBodyFieldCollisions bool `protobuf:"varint,3,opt,name=reject_binding_body_field_collisions,json=rejectBindingBodyFieldCollisions,proto3" json:"reject_binding_body_field_collisions,omitempty"`
	unknownFields                    protoimpl.UnknownFields
	sizeCache                        protoimpl.SizeCache
}

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

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

func (*GrpcJsonTranscoder_RequestValidationOptions) ProtoMessage() {}

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

func (x *GrpcJsonTranscoder_RequestValidationOptions) GetRejectUnknownMethod() bool {
	if x != nil {
		return x.RejectUnknownMethod
	}
	return false
}

func (x *GrpcJsonTranscoder_RequestValidationOptions) GetRejectUnknownQueryParameters() bool {
	if x != nil {
		return x.RejectUnknownQueryParameters
	}
	return false
}

func (x *GrpcJsonTranscoder_RequestValidationOptions) GetRejectBindingBodyFieldCollisions() bool {
	if x != nil {
		return x.RejectBindingBodyFieldCollisions
	}
	return false
}

type UnknownQueryParams_Values struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []string               `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UnknownQueryParams_Values) ProtoMessage() {}

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

func (x *UnknownQueryParams_Values) GetValues() []string {
	if x != nil {
		return x.Values
	}
	return nil
}

var File_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto protoreflect.FileDescriptor

const file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDesc = "" +
	"\n" +
	"Fenvoy/extensions/filters/http/grpc_json_transcoder/v3/transcoder.proto\x125envoy.extensions.filters.http.grpc_json_transcoder.v3\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\x81\x11\n" +
	"\x12GrpcJsonTranscoder\x12+\n" +
	"\x10proto_descriptor\x18\x01 \x01(\tH\x00R\x0fprotoDescriptor\x122\n" +
	"\x14proto_descriptor_bin\x18\x04 \x01(\fH\x00R\x12protoDescriptorBin\x12\x1a\n" +
	"\bservices\x18\x02 \x03(\tR\bservices\x12{\n" +
	"\rprint_options\x18\x03 \x01(\v2V.envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.PrintOptionsR\fprintOptions\x12?\n" +
	"\x1cmatch_incoming_request_route\x18\x05 \x01(\bR\x19matchIncomingRequestRoute\x128\n" +
	"\x18ignored_query_parameters\x18\x06 \x03(\tR\x16ignoredQueryParameters\x12!\n" +
	"\fauto_mapping\x18\a \x01(\bR\vautoMapping\x12E\n" +
	"\x1fignore_unknown_query_parameters\x18\b \x01(\bR\x1cignoreUnknownQueryParameters\x12.\n" +
	"\x13convert_grpc_status\x18\t \x01(\bR\x11convertGrpcStatus\x12\x8f\x01\n" +
	"\x11url_unescape_spec\x18\n" +
	" \x01(\x0e2Y.envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.UrlUnescapeSpecB\b\xfaB\x05\x82\x01\x02\x10\x01R\x0furlUnescapeSpec\x129\n" +
	"\x19query_param_unescape_plus\x18\f \x01(\bR\x16queryParamUnescapePlus\x12C\n" +
	"\x1ematch_unregistered_custom_verb\x18\r \x01(\bR\x1bmatchUnregisteredCustomVerb\x12\xa0\x01\n" +
	"\x1arequest_validation_options\x18\v \x01(\v2b.envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.RequestValidationOptionsR\x18requestValidationOptions\x12A\n" +
	"\x1dcase_insensitive_enum_parsing\x18\x0e \x01(\bR\x1acaseInsensitiveEnumParsing\x12X\n" +
	"\x15max_request_body_size\x18\x0f \x01(\v2\x1c.google.protobuf.UInt32ValueB\a\xfaB\x04*\x02 \x00R\x12maxRequestBodySize\x12Z\n" +
	"\x16max_response_body_size\x18\x10 \x01(\v2\x1c.google.protobuf.UInt32ValueB\a\xfaB\x04*\x02 \x00R\x13maxResponseBodySize\x12G\n" +
	" capture_unknown_query_parameters\x18\x11 \x01(\bR\x1dcaptureUnknownQueryParameters\x1a\xb7\x03\n" +
	"\fPrintOptions\x12%\n" +
	"\x0eadd_whitespace\x18\x01 \x01(\bR\raddWhitespace\x12A\n" +
	"\x1dalways_print_primitive_fields\x18\x02 \x01(\bR\x1aalwaysPrintPrimitiveFields\x12:\n" +
	"\x1aalways_print_enums_as_ints\x18\x03 \x01(\bR\x16alwaysPrintEnumsAsInts\x12;\n" +
	"\x1apreserve_proto_field_names\x18\x04 \x01(\bR\x17preserveProtoFieldNames\x128\n" +
	"\x18stream_newline_delimited\x18\x05 \x01(\bR\x16streamNewlineDelimited\x12;\n" +
	"\x1astream_sse_style_delimited\x18\x06 \x01(\bR\x17streamSseStyleDelimited:M\x9aň\x1eH\n" +
	"Fenvoy.config.filter.http.transcoder.v2.GrpcJsonTranscoder.PrintOptions\x1a\xe5\x01\n" +
	"\x18RequestValidationOptions\x122\n" +
	"\x15reject_unknown_method\x18\x01 \x01(\bR\x13rejectUnknownMethod\x12E\n" +
	"\x1freject_unknown_query_parameters\x18\x02 \x01(\bR\x1crejectUnknownQueryParameters\x12N\n" +
	"$reject_binding_body_field_collisions\x18\x03 \x01(\bR rejectBindingBodyFieldCollisions\"j\n" +
	"\x0fUrlUnescapeSpec\x12\"\n" +
	"\x1eALL_CHARACTERS_EXCEPT_RESERVED\x10\x00\x12\x1f\n" +
	"\x1bALL_CHARACTERS_EXCEPT_SLASH\x10\x01\x12\x12\n" +
	"\x0eALL_CHARACTERS\x10\x02:@\x9aň\x1e;\n" +
	"9envoy.config.filter.http.transcoder.v2.GrpcJsonTranscoderB\x15\n" +
	"\x0edescriptor_set\x12\x03\xf8B\x01\"\xa7\x02\n" +
	"\x12UnknownQueryParams\x12d\n" +
	"\x03key\x18\x01 \x03(\v2R.envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.KeyEntryR\x03key\x1a \n" +
	"\x06Values\x12\x16\n" +
	"\x06values\x18\x01 \x03(\tR\x06values\x1a\x88\x01\n" +
	"\bKeyEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12f\n" +
	"\x05value\x18\x02 \x01(\v2P.envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.ValuesR\x05value:\x028\x01B\xd5\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\n" +
	"Cio.envoyproxy.envoy.extensions.filters.http.grpc_json_transcoder.v3B\x0fTranscoderProtoP\x01Zsgithub.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_json_transcoder/v3;grpc_json_transcoderv3b\x06proto3"

var (
	file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDescOnce sync.Once
	file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDescData []byte
)

func file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDescGZIP() []byte {
	file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDescOnce.Do(func() {
		file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDesc), len(file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDesc)))
	})
	return file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDescData
}

var file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_goTypes = []any{
	(GrpcJsonTranscoder_UrlUnescapeSpec)(0),             // 0: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.UrlUnescapeSpec
	(*GrpcJsonTranscoder)(nil),                          // 1: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder
	(*UnknownQueryParams)(nil),                          // 2: envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams
	(*GrpcJsonTranscoder_PrintOptions)(nil),             // 3: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.PrintOptions
	(*GrpcJsonTranscoder_RequestValidationOptions)(nil), // 4: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.RequestValidationOptions
	(*UnknownQueryParams_Values)(nil),                   // 5: envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.Values
	nil,                                                 // 6: envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.KeyEntry
	(*wrapperspb.UInt32Value)(nil),                      // 7: google.protobuf.UInt32Value
}
var file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_depIdxs = []int32{
	3, // 0: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.print_options:type_name -> envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.PrintOptions
	0, // 1: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.url_unescape_spec:type_name -> envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.UrlUnescapeSpec
	4, // 2: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.request_validation_options:type_name -> envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.RequestValidationOptions
	7, // 3: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.max_request_body_size:type_name -> google.protobuf.UInt32Value
	7, // 4: envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder.max_response_body_size:type_name -> google.protobuf.UInt32Value
	6, // 5: envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.key:type_name -> envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.KeyEntry
	5, // 6: envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.KeyEntry.value:type_name -> envoy.extensions.filters.http.grpc_json_transcoder.v3.UnknownQueryParams.Values
	7, // [7:7] is the sub-list for method output_type
	7, // [7:7] is the sub-list for method input_type
	7, // [7:7] is the sub-list for extension type_name
	7, // [7:7] is the sub-list for extension extendee
	0, // [0:7] is the sub-list for field type_name
}

func init() { file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_init() }
func file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_init() {
	if File_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto != nil {
		return
	}
	file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_msgTypes[0].OneofWrappers = []any{
		(*GrpcJsonTranscoder_ProtoDescriptor)(nil),
		(*GrpcJsonTranscoder_ProtoDescriptorBin)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDesc), len(file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   6,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_goTypes,
		DependencyIndexes: file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_depIdxs,
		EnumInfos:         file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_enumTypes,
		MessageInfos:      file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_msgTypes,
	}.Build()
	File_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto = out.File
	file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_goTypes = nil
	file_envoy_extensions_filters_http_grpc_json_transcoder_v3_transcoder_proto_depIdxs = nil
}
