// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.12
// 	protoc        (unknown)
// source: openapi/v1beta2/changefeed.proto

package v1beta2

import (
	_ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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

// The downstream type for a changefeed.
type DownstreamType int32

const (
	// Default value. Should not be used.
	DownstreamType_DOWNSTREAM_TYPE_UNSPECIFIED DownstreamType = 0
	// Apache Kafka.
	DownstreamType_KAFKA DownstreamType = 1
	// MySQL-compatible database.
	DownstreamType_MYSQL DownstreamType = 3
	// Amazon S3 or S3-compatible storage.
	DownstreamType_S3 DownstreamType = 5
	// Google Cloud Storage.
	DownstreamType_GCS DownstreamType = 6
	// Apache Pulsar.
	DownstreamType_PULSAR DownstreamType = 7
)

// Enum value maps for DownstreamType.
var (
	DownstreamType_name = map[int32]string{
		0: "DOWNSTREAM_TYPE_UNSPECIFIED",
		1: "KAFKA",
		3: "MYSQL",
		5: "S3",
		6: "GCS",
		7: "PULSAR",
	}
	DownstreamType_value = map[string]int32{
		"DOWNSTREAM_TYPE_UNSPECIFIED": 0,
		"KAFKA":                       1,
		"MYSQL":                       3,
		"S3":                          5,
		"GCS":                         6,
		"PULSAR":                      7,
	}
)

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

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

func (DownstreamType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[0].Descriptor()
}

func (DownstreamType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[0]
}

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

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

// State defines the possible states of a changefeed.
type Changefeed_State int32

const (
	// Default value. Should not be used.
	Changefeed_STATE_UNSPECIFIED Changefeed_State = 0
	// Changefeed is actively replicating data.
	Changefeed_RUNNING Changefeed_State = 1
	// Changefeed encountered a fatal error and stopped.
	Changefeed_FAILED Changefeed_State = 2
	// Changefeed encountered an error but may recover.
	Changefeed_ERROR Changefeed_State = 3
	// Changefeed is being created.
	Changefeed_CREATING Changefeed_State = 4
	// Changefeed is in the process of pausing.
	Changefeed_PAUSING Changefeed_State = 5
	// Changefeed is paused.
	Changefeed_PAUSED Changefeed_State = 6
	// Changefeed is being deleted.
	Changefeed_DELETING Changefeed_State = 7
	// Changefeed has been deleted.
	Changefeed_DELETED Changefeed_State = 8
	// Changefeed configuration is being updated.
	Changefeed_EDITING Changefeed_State = 9
	// Changefeed is running but has warnings.
	Changefeed_WARNING Changefeed_State = 10
	// Changefeed is being scaled.
	Changefeed_SCALING Changefeed_State = 11
	// Changefeed is being resumed.
	Changefeed_RESUMING Changefeed_State = 12
)

// Enum value maps for Changefeed_State.
var (
	Changefeed_State_name = map[int32]string{
		0:  "STATE_UNSPECIFIED",
		1:  "RUNNING",
		2:  "FAILED",
		3:  "ERROR",
		4:  "CREATING",
		5:  "PAUSING",
		6:  "PAUSED",
		7:  "DELETING",
		8:  "DELETED",
		9:  "EDITING",
		10: "WARNING",
		11: "SCALING",
		12: "RESUMING",
	}
	Changefeed_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"RUNNING":           1,
		"FAILED":            2,
		"ERROR":             3,
		"CREATING":          4,
		"PAUSING":           5,
		"PAUSED":            6,
		"DELETING":          7,
		"DELETED":           8,
		"EDITING":           9,
		"WARNING":           10,
		"SCALING":           11,
		"RESUMING":          12,
	}
)

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

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

func (Changefeed_State) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[1].Descriptor()
}

func (Changefeed_State) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[1]
}

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

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

// Mode defines how to handle tables that are not supported by the changefeed.
type TableConfig_Mode int32

const (
	// Default value.
	TableConfig_MODE_UNSPECIFIED TableConfig_Mode = 0
	// Skip unsupported tables silently.
	TableConfig_IGNORE_NOT_SUPPORT_TABLE TableConfig_Mode = 1
	// Force sync all tables (may fail on unsupported tables).
	TableConfig_FORCE_SYNC TableConfig_Mode = 2
)

// Enum value maps for TableConfig_Mode.
var (
	TableConfig_Mode_name = map[int32]string{
		0: "MODE_UNSPECIFIED",
		1: "IGNORE_NOT_SUPPORT_TABLE",
		2: "FORCE_SYNC",
	}
	TableConfig_Mode_value = map[string]int32{
		"MODE_UNSPECIFIED":         0,
		"IGNORE_NOT_SUPPORT_TABLE": 1,
		"FORCE_SYNC":               2,
	}
)

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

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

func (TableConfig_Mode) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[2].Descriptor()
}

func (TableConfig_Mode) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[2]
}

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

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

// Mode defines the start position mode.
type StartPosition_Mode int32

const (
	// Default value.
	StartPosition_MODE_UNSPECIFIED StartPosition_Mode = 0
	// Start from the current time.
	StartPosition_FROM_NOW StartPosition_Mode = 1
	// Start from a specific TSO.
	StartPosition_FROM_TSO StartPosition_Mode = 2
	// Start from a specific UTC timestamp.
	StartPosition_FROM_UTC StartPosition_Mode = 3
)

// Enum value maps for StartPosition_Mode.
var (
	StartPosition_Mode_name = map[int32]string{
		0: "MODE_UNSPECIFIED",
		1: "FROM_NOW",
		2: "FROM_TSO",
		3: "FROM_UTC",
	}
	StartPosition_Mode_value = map[string]int32{
		"MODE_UNSPECIFIED": 0,
		"FROM_NOW":         1,
		"FROM_TSO":         2,
		"FROM_UTC":         3,
	}
)

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

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

func (StartPosition_Mode) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[3].Descriptor()
}

func (StartPosition_Mode) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[3]
}

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

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

// The network type for downstream connectivity.
type NetworkInfo_NetworkType int32

const (
	// Default value.
	NetworkInfo_NETWORK_TYPE_UNSPECIFIED NetworkInfo_NetworkType = 0
	// Public internet access.
	NetworkInfo_NETWORK_TYPE_PUBLIC NetworkInfo_NetworkType = 1
	// AWS VPC Peering.
	NetworkInfo_NETWORK_TYPE_VPC_PEERING NetworkInfo_NetworkType = 2
	// Private endpoint connectivity managed by TiDB Cloud.
	NetworkInfo_NETWORK_TYPE_PRIVATE_LINK NetworkInfo_NetworkType = 3
)

// Enum value maps for NetworkInfo_NetworkType.
var (
	NetworkInfo_NetworkType_name = map[int32]string{
		0: "NETWORK_TYPE_UNSPECIFIED",
		1: "NETWORK_TYPE_PUBLIC",
		2: "NETWORK_TYPE_VPC_PEERING",
		3: "NETWORK_TYPE_PRIVATE_LINK",
	}
	NetworkInfo_NetworkType_value = map[string]int32{
		"NETWORK_TYPE_UNSPECIFIED":  0,
		"NETWORK_TYPE_PUBLIC":       1,
		"NETWORK_TYPE_VPC_PEERING":  2,
		"NETWORK_TYPE_PRIVATE_LINK": 3,
	}
)

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

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

func (NetworkInfo_NetworkType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[4].Descriptor()
}

func (NetworkInfo_NetworkType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[4]
}

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

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

// KafkaVersion defines supported Kafka broker versions.
type KafkaDownstreamConfig_KafkaVersion int32

const (
	KafkaDownstreamConfig_KAFKA_VERSION_UNSPECIFIED KafkaDownstreamConfig_KafkaVersion = 0
	// Kafka 1.x
	KafkaDownstreamConfig_KAFKA_VERSION_1XX KafkaDownstreamConfig_KafkaVersion = 2
	// Kafka 2.x
	KafkaDownstreamConfig_KAFKA_VERSION_2XX KafkaDownstreamConfig_KafkaVersion = 3
	// Kafka 3.x
	KafkaDownstreamConfig_KAFKA_VERSION_3XX KafkaDownstreamConfig_KafkaVersion = 4
)

// Enum value maps for KafkaDownstreamConfig_KafkaVersion.
var (
	KafkaDownstreamConfig_KafkaVersion_name = map[int32]string{
		0: "KAFKA_VERSION_UNSPECIFIED",
		2: "KAFKA_VERSION_1XX",
		3: "KAFKA_VERSION_2XX",
		4: "KAFKA_VERSION_3XX",
	}
	KafkaDownstreamConfig_KafkaVersion_value = map[string]int32{
		"KAFKA_VERSION_UNSPECIFIED": 0,
		"KAFKA_VERSION_1XX":         2,
		"KAFKA_VERSION_2XX":         3,
		"KAFKA_VERSION_3XX":         4,
	}
)

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

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

func (KafkaDownstreamConfig_KafkaVersion) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[5].Descriptor()
}

func (KafkaDownstreamConfig_KafkaVersion) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[5]
}

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

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

// CompressionType defines the compression types for Kafka messages.
type KafkaDownstreamConfig_CompressionType int32

const (
	KafkaDownstreamConfig_COMPRESSION_TYPE_UNSPECIFIED KafkaDownstreamConfig_CompressionType = 0
	// No compression.
	KafkaDownstreamConfig_NONE KafkaDownstreamConfig_CompressionType = 1
	// GZIP compression.
	KafkaDownstreamConfig_GZIP KafkaDownstreamConfig_CompressionType = 2
	// Snappy compression.
	KafkaDownstreamConfig_SNAPPY KafkaDownstreamConfig_CompressionType = 3
	// LZ4 compression.
	KafkaDownstreamConfig_LZ4 KafkaDownstreamConfig_CompressionType = 4
	// ZSTD compression.
	KafkaDownstreamConfig_ZSTD KafkaDownstreamConfig_CompressionType = 5
)

// Enum value maps for KafkaDownstreamConfig_CompressionType.
var (
	KafkaDownstreamConfig_CompressionType_name = map[int32]string{
		0: "COMPRESSION_TYPE_UNSPECIFIED",
		1: "NONE",
		2: "GZIP",
		3: "SNAPPY",
		4: "LZ4",
		5: "ZSTD",
	}
	KafkaDownstreamConfig_CompressionType_value = map[string]int32{
		"COMPRESSION_TYPE_UNSPECIFIED": 0,
		"NONE":                         1,
		"GZIP":                         2,
		"SNAPPY":                       3,
		"LZ4":                          4,
		"ZSTD":                         5,
	}
)

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

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

func (KafkaDownstreamConfig_CompressionType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[6].Descriptor()
}

func (KafkaDownstreamConfig_CompressionType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[6]
}

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

// Deprecated: Use KafkaDownstreamConfig_CompressionType.Descriptor instead.
func (KafkaDownstreamConfig_CompressionType) EnumDescriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 1}
}

// AuthType defines the supported Kafka authentication types.
type KafkaDownstreamConfig_Authentication_AuthType int32

const (
	KafkaDownstreamConfig_Authentication_AUTH_TYPE_UNSPECIFIED KafkaDownstreamConfig_Authentication_AuthType = 0
	// No authentication.
	KafkaDownstreamConfig_Authentication_DISABLE KafkaDownstreamConfig_Authentication_AuthType = 1
	// SASL/PLAIN authentication.
	KafkaDownstreamConfig_Authentication_SASL_PLAIN KafkaDownstreamConfig_Authentication_AuthType = 2
	// SASL/SCRAM-SHA-256 authentication.
	KafkaDownstreamConfig_Authentication_SASL_SCRAM_SHA_256 KafkaDownstreamConfig_Authentication_AuthType = 3
	// SASL/SCRAM-SHA-512 authentication.
	KafkaDownstreamConfig_Authentication_SASL_SCRAM_SHA_512 KafkaDownstreamConfig_Authentication_AuthType = 4
)

// Enum value maps for KafkaDownstreamConfig_Authentication_AuthType.
var (
	KafkaDownstreamConfig_Authentication_AuthType_name = map[int32]string{
		0: "AUTH_TYPE_UNSPECIFIED",
		1: "DISABLE",
		2: "SASL_PLAIN",
		3: "SASL_SCRAM_SHA_256",
		4: "SASL_SCRAM_SHA_512",
	}
	KafkaDownstreamConfig_Authentication_AuthType_value = map[string]int32{
		"AUTH_TYPE_UNSPECIFIED": 0,
		"DISABLE":               1,
		"SASL_PLAIN":            2,
		"SASL_SCRAM_SHA_256":    3,
		"SASL_SCRAM_SHA_512":    4,
	}
)

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

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

func (KafkaDownstreamConfig_Authentication_AuthType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[7].Descriptor()
}

func (KafkaDownstreamConfig_Authentication_AuthType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[7]
}

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

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

// Protocol defines the supported output protocols.
type KafkaDownstreamConfig_DataFormat_Protocol int32

const (
	KafkaDownstreamConfig_DataFormat_PROTOCOL_UNSPECIFIED KafkaDownstreamConfig_DataFormat_Protocol = 0
	// Canal JSON format. Recommended for most use cases.
	KafkaDownstreamConfig_DataFormat_PROTOCOL_CANAL_JSON KafkaDownstreamConfig_DataFormat_Protocol = 1
	// Open Protocol (TiDB native format). Encodes multiple events into one message.
	KafkaDownstreamConfig_DataFormat_PROTOCOL_OPEN_PROTOCOL KafkaDownstreamConfig_DataFormat_Protocol = 2
	// Apache Avro format. Supports Confluent Schema Registry and AWS Glue Schema Registry.
	KafkaDownstreamConfig_DataFormat_PROTOCOL_AVRO KafkaDownstreamConfig_DataFormat_Protocol = 3
	// Debezium format.
	KafkaDownstreamConfig_DataFormat_PROTOCOL_DEBEZIUM KafkaDownstreamConfig_DataFormat_Protocol = 5
	// Debezium events encoded with Avro.
	KafkaDownstreamConfig_DataFormat_PROTOCOL_DEBEZIUM_AVRO KafkaDownstreamConfig_DataFormat_Protocol = 6
)

// Enum value maps for KafkaDownstreamConfig_DataFormat_Protocol.
var (
	KafkaDownstreamConfig_DataFormat_Protocol_name = map[int32]string{
		0: "PROTOCOL_UNSPECIFIED",
		1: "PROTOCOL_CANAL_JSON",
		2: "PROTOCOL_OPEN_PROTOCOL",
		3: "PROTOCOL_AVRO",
		5: "PROTOCOL_DEBEZIUM",
		6: "PROTOCOL_DEBEZIUM_AVRO",
	}
	KafkaDownstreamConfig_DataFormat_Protocol_value = map[string]int32{
		"PROTOCOL_UNSPECIFIED":   0,
		"PROTOCOL_CANAL_JSON":    1,
		"PROTOCOL_OPEN_PROTOCOL": 2,
		"PROTOCOL_AVRO":          3,
		"PROTOCOL_DEBEZIUM":      5,
		"PROTOCOL_DEBEZIUM_AVRO": 6,
	}
)

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

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

func (KafkaDownstreamConfig_DataFormat_Protocol) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[8].Descriptor()
}

func (KafkaDownstreamConfig_DataFormat_Protocol) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[8]
}

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

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

// DecimalHandlingMode defines how decimal values are serialized.
type KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode int32

const (
	KafkaDownstreamConfig_DataFormat_AvroConfig_DECIMAL_HANDLING_MODE_UNSPECIFIED KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode = 0
	// Use precise decimal representation.
	KafkaDownstreamConfig_DataFormat_AvroConfig_DECIMAL_HANDLING_MODE_PRECISE KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode = 1
	// Use string representation.
	KafkaDownstreamConfig_DataFormat_AvroConfig_DECIMAL_HANDLING_MODE_STRING KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode = 2
)

// Enum value maps for KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode.
var (
	KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode_name = map[int32]string{
		0: "DECIMAL_HANDLING_MODE_UNSPECIFIED",
		1: "DECIMAL_HANDLING_MODE_PRECISE",
		2: "DECIMAL_HANDLING_MODE_STRING",
	}
	KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode_value = map[string]int32{
		"DECIMAL_HANDLING_MODE_UNSPECIFIED": 0,
		"DECIMAL_HANDLING_MODE_PRECISE":     1,
		"DECIMAL_HANDLING_MODE_STRING":      2,
	}
)

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

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

func (KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[9].Descriptor()
}

func (KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[9]
}

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

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

// BigintUnsignedHandlingMode defines how BIGINT UNSIGNED values are handled.
type KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode int32

const (
	// Use 64-bit integer (may overflow for very large values).
	KafkaDownstreamConfig_DataFormat_AvroConfig_BIGINT_UNSIGNED_HANDLING_MODE_LONG KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode = 0
	// Use string representation (safe for all values).
	KafkaDownstreamConfig_DataFormat_AvroConfig_BIGINT_UNSIGNED_HANDLING_MODE_STRING KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode = 1
)

// Enum value maps for KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode.
var (
	KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode_name = map[int32]string{
		0: "BIGINT_UNSIGNED_HANDLING_MODE_LONG",
		1: "BIGINT_UNSIGNED_HANDLING_MODE_STRING",
	}
	KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode_value = map[string]int32{
		"BIGINT_UNSIGNED_HANDLING_MODE_LONG":   0,
		"BIGINT_UNSIGNED_HANDLING_MODE_STRING": 1,
	}
)

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

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

func (KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[10].Descriptor()
}

func (KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[10]
}

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

// Deprecated: Use KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode.Descriptor instead.
func (KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode) EnumDescriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 2, 0, 1}
}

// DispatchType defines how messages are dispatched to topics.
type KafkaDownstreamConfig_TopicPartitionConfig_DispatchType int32

const (
	KafkaDownstreamConfig_TopicPartitionConfig_DISPATCH_TYPE_UNSPECIFIED KafkaDownstreamConfig_TopicPartitionConfig_DispatchType = 0
	// All messages go to a single topic.
	KafkaDownstreamConfig_TopicPartitionConfig_DISPATCH_TYPE_ONE_TOPIC KafkaDownstreamConfig_TopicPartitionConfig_DispatchType = 1
	// Each table gets its own topic.
	KafkaDownstreamConfig_TopicPartitionConfig_DISPATCH_TYPE_BY_TABLE KafkaDownstreamConfig_TopicPartitionConfig_DispatchType = 2
	// Each database gets its own topic.
	KafkaDownstreamConfig_TopicPartitionConfig_DISPATCH_TYPE_BY_DATABASE KafkaDownstreamConfig_TopicPartitionConfig_DispatchType = 3
)

// Enum value maps for KafkaDownstreamConfig_TopicPartitionConfig_DispatchType.
var (
	KafkaDownstreamConfig_TopicPartitionConfig_DispatchType_name = map[int32]string{
		0: "DISPATCH_TYPE_UNSPECIFIED",
		1: "DISPATCH_TYPE_ONE_TOPIC",
		2: "DISPATCH_TYPE_BY_TABLE",
		3: "DISPATCH_TYPE_BY_DATABASE",
	}
	KafkaDownstreamConfig_TopicPartitionConfig_DispatchType_value = map[string]int32{
		"DISPATCH_TYPE_UNSPECIFIED": 0,
		"DISPATCH_TYPE_ONE_TOPIC":   1,
		"DISPATCH_TYPE_BY_TABLE":    2,
		"DISPATCH_TYPE_BY_DATABASE": 3,
	}
)

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

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

func (KafkaDownstreamConfig_TopicPartitionConfig_DispatchType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[11].Descriptor()
}

func (KafkaDownstreamConfig_TopicPartitionConfig_DispatchType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[11]
}

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

// Deprecated: Use KafkaDownstreamConfig_TopicPartitionConfig_DispatchType.Descriptor instead.
func (KafkaDownstreamConfig_TopicPartitionConfig_DispatchType) EnumDescriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 3, 0}
}

// PartitionDispatcher defines the partition dispatch strategies.
type KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher int32

const (
	KafkaDownstreamConfig_TopicPartitionConfig_PARTITION_DISPATCHER_UNSPECIFIED KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher = 0
	// Dispatch by table name.
	KafkaDownstreamConfig_TopicPartitionConfig_TABLE KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher = 1
	// Dispatch by index value.
	KafkaDownstreamConfig_TopicPartitionConfig_INDEX_VALUE KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher = 2
	// Dispatch by timestamp.
	KafkaDownstreamConfig_TopicPartitionConfig_TIMESTAMP KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher = 3
	// Dispatch by column values.
	KafkaDownstreamConfig_TopicPartitionConfig_COLUMNS KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher = 4
)

// Enum value maps for KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher.
var (
	KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher_name = map[int32]string{
		0: "PARTITION_DISPATCHER_UNSPECIFIED",
		1: "TABLE",
		2: "INDEX_VALUE",
		3: "TIMESTAMP",
		4: "COLUMNS",
	}
	KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher_value = map[string]int32{
		"PARTITION_DISPATCHER_UNSPECIFIED": 0,
		"TABLE":                            1,
		"INDEX_VALUE":                      2,
		"TIMESTAMP":                        3,
		"COLUMNS":                          4,
	}
)

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

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

func (KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[12].Descriptor()
}

func (KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[12]
}

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

// Deprecated: Use KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher.Descriptor instead.
func (KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher) EnumDescriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 3, 1}
}

// DateSeparator defines the date separator options for directory structure.
type S3DataFormat_DateSeparator int32

const (
	S3DataFormat_DATE_SEPARATOR_UNSPECIFIED S3DataFormat_DateSeparator = 0
	// No date separator.
	S3DataFormat_NONE S3DataFormat_DateSeparator = 1
	// Separate by year.
	S3DataFormat_YEAR S3DataFormat_DateSeparator = 2
	// Separate by month.
	S3DataFormat_MONTH S3DataFormat_DateSeparator = 3
	// Separate by day.
	S3DataFormat_DAY S3DataFormat_DateSeparator = 4
)

// Enum value maps for S3DataFormat_DateSeparator.
var (
	S3DataFormat_DateSeparator_name = map[int32]string{
		0: "DATE_SEPARATOR_UNSPECIFIED",
		1: "NONE",
		2: "YEAR",
		3: "MONTH",
		4: "DAY",
	}
	S3DataFormat_DateSeparator_value = map[string]int32{
		"DATE_SEPARATOR_UNSPECIFIED": 0,
		"NONE":                       1,
		"YEAR":                       2,
		"MONTH":                      3,
		"DAY":                        4,
	}
)

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

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

func (S3DataFormat_DateSeparator) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[13].Descriptor()
}

func (S3DataFormat_DateSeparator) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[13]
}

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

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

// Protocol defines the supported output protocols for cloud storage sinks.
type S3DataFormat_Protocol int32

const (
	S3DataFormat_PROTOCOL_UNSPECIFIED S3DataFormat_Protocol = 0
	// CSV format.
	S3DataFormat_PROTOCOL_CSV S3DataFormat_Protocol = 1
	// Canal JSON format.
	S3DataFormat_PROTOCOL_CANAL_JSON S3DataFormat_Protocol = 2
)

// Enum value maps for S3DataFormat_Protocol.
var (
	S3DataFormat_Protocol_name = map[int32]string{
		0: "PROTOCOL_UNSPECIFIED",
		1: "PROTOCOL_CSV",
		2: "PROTOCOL_CANAL_JSON",
	}
	S3DataFormat_Protocol_value = map[string]int32{
		"PROTOCOL_UNSPECIFIED": 0,
		"PROTOCOL_CSV":         1,
		"PROTOCOL_CANAL_JSON":  2,
	}
)

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

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

func (S3DataFormat_Protocol) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[14].Descriptor()
}

func (S3DataFormat_Protocol) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[14]
}

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

// Deprecated: Use S3DataFormat_Protocol.Descriptor instead.
func (S3DataFormat_Protocol) EnumDescriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{27, 1}
}

// BinaryEncodingMethod defines how binary values are encoded.
type S3DataFormat_BinaryEncodingMethod int32

const (
	S3DataFormat_BINARY_ENCODING_METHOD_UNSPECIFIED S3DataFormat_BinaryEncodingMethod = 0
	// Base64 encoding.
	S3DataFormat_BASE64 S3DataFormat_BinaryEncodingMethod = 1
	// Hexadecimal encoding.
	S3DataFormat_HEX S3DataFormat_BinaryEncodingMethod = 2
)

// Enum value maps for S3DataFormat_BinaryEncodingMethod.
var (
	S3DataFormat_BinaryEncodingMethod_name = map[int32]string{
		0: "BINARY_ENCODING_METHOD_UNSPECIFIED",
		1: "BASE64",
		2: "HEX",
	}
	S3DataFormat_BinaryEncodingMethod_value = map[string]int32{
		"BINARY_ENCODING_METHOD_UNSPECIFIED": 0,
		"BASE64":                             1,
		"HEX":                                2,
	}
)

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

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

func (S3DataFormat_BinaryEncodingMethod) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[15].Descriptor()
}

func (S3DataFormat_BinaryEncodingMethod) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[15]
}

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

// Deprecated: Use S3DataFormat_BinaryEncodingMethod.Descriptor instead.
func (S3DataFormat_BinaryEncodingMethod) EnumDescriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{27, 2}
}

// S3AuthType defines the supported S3 authentication types.
type S3DownstreamConfig_Endpoint_S3AuthType int32

const (
	S3DownstreamConfig_Endpoint_S3_AUTH_TYPE_UNSPECIFIED S3DownstreamConfig_Endpoint_S3AuthType = 0
	// Access Key / Secret Key authentication.
	S3DownstreamConfig_Endpoint_S3_AUTH_TYPE_AK_SK S3DownstreamConfig_Endpoint_S3AuthType = 1
	// IAM Assume Role authentication.
	S3DownstreamConfig_Endpoint_S3_AUTH_TYPE_ASSUME_ROLE S3DownstreamConfig_Endpoint_S3AuthType = 2
)

// Enum value maps for S3DownstreamConfig_Endpoint_S3AuthType.
var (
	S3DownstreamConfig_Endpoint_S3AuthType_name = map[int32]string{
		0: "S3_AUTH_TYPE_UNSPECIFIED",
		1: "S3_AUTH_TYPE_AK_SK",
		2: "S3_AUTH_TYPE_ASSUME_ROLE",
	}
	S3DownstreamConfig_Endpoint_S3AuthType_value = map[string]int32{
		"S3_AUTH_TYPE_UNSPECIFIED": 0,
		"S3_AUTH_TYPE_AK_SK":       1,
		"S3_AUTH_TYPE_ASSUME_ROLE": 2,
	}
)

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

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

func (S3DownstreamConfig_Endpoint_S3AuthType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[16].Descriptor()
}

func (S3DownstreamConfig_Endpoint_S3AuthType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[16]
}

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

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

// Provider defines the S3-compatible object storage provider.
type S3DownstreamConfig_Endpoint_Provider int32

const (
	// Default value. Uses AWS S3 behavior.
	S3DownstreamConfig_Endpoint_PROVIDER_UNSPECIFIED S3DownstreamConfig_Endpoint_Provider = 0
	// Amazon S3.
	S3DownstreamConfig_Endpoint_AWS S3DownstreamConfig_Endpoint_Provider = 1
	// Alibaba Cloud OSS through its S3-compatible endpoint.
	S3DownstreamConfig_Endpoint_ALIBABA_OSS S3DownstreamConfig_Endpoint_Provider = 2
)

// Enum value maps for S3DownstreamConfig_Endpoint_Provider.
var (
	S3DownstreamConfig_Endpoint_Provider_name = map[int32]string{
		0: "PROVIDER_UNSPECIFIED",
		1: "AWS",
		2: "ALIBABA_OSS",
	}
	S3DownstreamConfig_Endpoint_Provider_value = map[string]int32{
		"PROVIDER_UNSPECIFIED": 0,
		"AWS":                  1,
		"ALIBABA_OSS":          2,
	}
)

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

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

func (S3DownstreamConfig_Endpoint_Provider) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[17].Descriptor()
}

func (S3DownstreamConfig_Endpoint_Provider) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[17]
}

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

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

// DestinationProtocol defines the supported Pulsar endpoint transports.
type PulsarDownstreamConfig_DestinationProtocol int32

const (
	PulsarDownstreamConfig_DESTINATION_PROTOCOL_UNSPECIFIED PulsarDownstreamConfig_DestinationProtocol = 0
	PulsarDownstreamConfig_PULSAR                           PulsarDownstreamConfig_DestinationProtocol = 1
	PulsarDownstreamConfig_PULSAR_SSL                       PulsarDownstreamConfig_DestinationProtocol = 2
)

// Enum value maps for PulsarDownstreamConfig_DestinationProtocol.
var (
	PulsarDownstreamConfig_DestinationProtocol_name = map[int32]string{
		0: "DESTINATION_PROTOCOL_UNSPECIFIED",
		1: "PULSAR",
		2: "PULSAR_SSL",
	}
	PulsarDownstreamConfig_DestinationProtocol_value = map[string]int32{
		"DESTINATION_PROTOCOL_UNSPECIFIED": 0,
		"PULSAR":                           1,
		"PULSAR_SSL":                       2,
	}
)

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

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

func (PulsarDownstreamConfig_DestinationProtocol) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[18].Descriptor()
}

func (PulsarDownstreamConfig_DestinationProtocol) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[18]
}

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

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

// CompressionType defines supported Pulsar compression algorithms.
type PulsarDownstreamConfig_CompressionType int32

const (
	PulsarDownstreamConfig_COMPRESSION_TYPE_UNSPECIFIED PulsarDownstreamConfig_CompressionType = 0
	PulsarDownstreamConfig_NONE                         PulsarDownstreamConfig_CompressionType = 1
	PulsarDownstreamConfig_LZ4                          PulsarDownstreamConfig_CompressionType = 2
	PulsarDownstreamConfig_ZLIB                         PulsarDownstreamConfig_CompressionType = 3
	PulsarDownstreamConfig_ZSTD                         PulsarDownstreamConfig_CompressionType = 4
)

// Enum value maps for PulsarDownstreamConfig_CompressionType.
var (
	PulsarDownstreamConfig_CompressionType_name = map[int32]string{
		0: "COMPRESSION_TYPE_UNSPECIFIED",
		1: "NONE",
		2: "LZ4",
		3: "ZLIB",
		4: "ZSTD",
	}
	PulsarDownstreamConfig_CompressionType_value = map[string]int32{
		"COMPRESSION_TYPE_UNSPECIFIED": 0,
		"NONE":                         1,
		"LZ4":                          2,
		"ZLIB":                         3,
		"ZSTD":                         4,
	}
)

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

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

func (PulsarDownstreamConfig_CompressionType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[19].Descriptor()
}

func (PulsarDownstreamConfig_CompressionType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[19]
}

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

// Deprecated: Use PulsarDownstreamConfig_CompressionType.Descriptor instead.
func (PulsarDownstreamConfig_CompressionType) EnumDescriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{31, 1}
}

type PulsarDownstreamConfig_Authentication_AuthType int32

const (
	PulsarDownstreamConfig_Authentication_AUTH_TYPE_UNSPECIFIED PulsarDownstreamConfig_Authentication_AuthType = 0
	PulsarDownstreamConfig_Authentication_BASIC                 PulsarDownstreamConfig_Authentication_AuthType = 1
	PulsarDownstreamConfig_Authentication_TOKEN                 PulsarDownstreamConfig_Authentication_AuthType = 2
)

// Enum value maps for PulsarDownstreamConfig_Authentication_AuthType.
var (
	PulsarDownstreamConfig_Authentication_AuthType_name = map[int32]string{
		0: "AUTH_TYPE_UNSPECIFIED",
		1: "BASIC",
		2: "TOKEN",
	}
	PulsarDownstreamConfig_Authentication_AuthType_value = map[string]int32{
		"AUTH_TYPE_UNSPECIFIED": 0,
		"BASIC":                 1,
		"TOKEN":                 2,
	}
)

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

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

func (PulsarDownstreamConfig_Authentication_AuthType) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[20].Descriptor()
}

func (PulsarDownstreamConfig_Authentication_AuthType) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[20]
}

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

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

type PulsarDownstreamConfig_DataFormat_Protocol int32

const (
	PulsarDownstreamConfig_DataFormat_PROTOCOL_UNSPECIFIED PulsarDownstreamConfig_DataFormat_Protocol = 0
	PulsarDownstreamConfig_DataFormat_CANAL_JSON           PulsarDownstreamConfig_DataFormat_Protocol = 1
)

// Enum value maps for PulsarDownstreamConfig_DataFormat_Protocol.
var (
	PulsarDownstreamConfig_DataFormat_Protocol_name = map[int32]string{
		0: "PROTOCOL_UNSPECIFIED",
		1: "CANAL_JSON",
	}
	PulsarDownstreamConfig_DataFormat_Protocol_value = map[string]int32{
		"PROTOCOL_UNSPECIFIED": 0,
		"CANAL_JSON":           1,
	}
)

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

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

func (PulsarDownstreamConfig_DataFormat_Protocol) Descriptor() protoreflect.EnumDescriptor {
	return file_openapi_v1beta2_changefeed_proto_enumTypes[21].Descriptor()
}

func (PulsarDownstreamConfig_DataFormat_Protocol) Type() protoreflect.EnumType {
	return &file_openapi_v1beta2_changefeed_proto_enumTypes[21]
}

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

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

// The request for listing changefeeds.
// (-- api-linter: core::0158::request-page-size-field=disabled --)
// (-- api-linter: core::0158::request-page-token-field=disabled --)
type ListChangefeedsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	TidbId string `protobuf:"bytes,1,opt,name=tidb_id,json=tidbId,proto3" json:"tidb_id,omitempty"`
	// Filter by downstream type. If not specified, returns all types.
	// Example: KAFKA
	DownstreamType *DownstreamType `protobuf:"varint,2,opt,name=downstream_type,json=downstreamType,proto3,enum=openapi.v1beta2.DownstreamType,oneof" json:"downstream_type,omitempty"`
	// The maximum number of items to return.
	// Defaults to 20. Valid values are in the range [1, 100].
	PageSize int32 `protobuf:"varint,100,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// The page token from a previous ListChangefeeds response, used to retrieve the next page.
	PageToken     string `protobuf:"bytes,101,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListChangefeedsRequest) ProtoMessage() {}

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

func (x *ListChangefeedsRequest) GetTidbId() string {
	if x != nil {
		return x.TidbId
	}
	return ""
}

func (x *ListChangefeedsRequest) GetDownstreamType() DownstreamType {
	if x != nil && x.DownstreamType != nil {
		return *x.DownstreamType
	}
	return DownstreamType_DOWNSTREAM_TYPE_UNSPECIFIED
}

func (x *ListChangefeedsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListChangefeedsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// The response for listing changefeeds.
// (-- api-linter: core::0158::response-page-size-field=disabled --)
// (-- api-linter: core::0158::response-next-page-token-field=disabled --)
type ListChangefeedsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The list of changefeeds matching the query.
	Changefeeds []*Changefeed `protobuf:"bytes,1,rep,name=changefeeds,proto3" json:"changefeeds,omitempty"`
	// The total number of changefeeds across all pages.
	// Example: 42
	TotalSize int32 `protobuf:"varint,2,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
	// The page token for the next page. This field is empty when there are no more pages.
	// Example: "eyJpZCI6Njc4OTB9"
	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListChangefeedsResponse) ProtoMessage() {}

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

func (x *ListChangefeedsResponse) GetChangefeeds() []*Changefeed {
	if x != nil {
		return x.Changefeeds
	}
	return nil
}

func (x *ListChangefeedsResponse) GetTotalSize() int32 {
	if x != nil {
		return x.TotalSize
	}
	return 0
}

func (x *ListChangefeedsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// The changefeed configuration.
type Changefeed struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Unique identifier of the changefeed (generated by the system).
	// Example: "67890"
	// (-- api-linter: core::0203::resource-name-identifier=disabled)
	// (-- api-linter: core::0148::use-uid=disabled --)
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	Id     string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	TidbId string `protobuf:"bytes,2,opt,name=tidb_id,json=tidbId,proto3" json:"tidb_id,omitempty"`
	// The user-defined name for the changefeed.
	// Example: "my-kafka-changefeed"
	// (-- api-linter: core::0203::resource-name-identifier=disabled)
	Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	// Network configuration for connecting to the downstream.
	// Required for Kafka, MySQL, and Pulsar downstream types.
	NetworkInfo *NetworkInfo           `protobuf:"bytes,4,opt,name=network_info,json=networkInfo,proto3,oneof" json:"network_info,omitempty"`
	State       Changefeed_State       `protobuf:"varint,5,opt,name=state,proto3,enum=openapi.v1beta2.Changefeed_State" json:"state,omitempty"`
	CreateTime  *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// The TSO (Timestamp Oracle) of the changefeed's current checkpoint.
	// Represents the last successfully replicated timestamp.
	// Example: 452348901234567890
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	CheckpointTso uint64 `protobuf:"varint,7,opt,name=checkpoint_tso,json=checkpointTso,proto3" json:"checkpoint_tso,omitempty"`
	// Human-readable timestamp of the changefeed's current checkpoint.
	// Example: "2026-06-08T10:35:00Z"
	CheckpointTs *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=checkpoint_ts,json=checkpointTs,proto3" json:"checkpoint_ts,omitempty"`
	// The changefeed capacity (CCU size) for the changefeed.
	// Example: "4ccu"
	ChangefeedCapacity string `protobuf:"bytes,9,opt,name=changefeed_capacity,json=changefeedCapacity,proto3" json:"changefeed_capacity,omitempty"`
	// The downstream type. Cannot be changed after creation.
	// Example: KAFKA
	DownstreamType DownstreamType `protobuf:"varint,10,opt,name=downstream_type,json=downstreamType,proto3,enum=openapi.v1beta2.DownstreamType" json:"downstream_type,omitempty"`
	// Table filtering and event filter configuration.
	// This field is editable only when the changefeed is in PAUSED state.
	TableConfig *TableConfig `protobuf:"bytes,17,opt,name=table_config,json=tableConfig,proto3" json:"table_config,omitempty"`
	// Start position configuration.
	// This field can only be set during creation and cannot be modified afterward.
	StartPosition *StartPosition `protobuf:"bytes,18,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"`
	// Downstream configuration. Exactly one must be set based on downstream_type.
	//
	// Types that are valid to be assigned to DownstreamConfig:
	//
	//	*Changefeed_Kafka
	//	*Changefeed_Mysql
	//	*Changefeed_S3
	//	*Changefeed_Gcs
	//	*Changefeed_Pulsar
	DownstreamConfig isChangefeed_DownstreamConfig `protobuf_oneof:"downstream_config"`
	// Error message if state is FAILED or ERROR. Empty otherwise.
	// Example: "kafka: broker not available"
	Error         string `protobuf:"bytes,16,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Changefeed) ProtoMessage() {}

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

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

func (x *Changefeed) GetTidbId() string {
	if x != nil {
		return x.TidbId
	}
	return ""
}

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

func (x *Changefeed) GetNetworkInfo() *NetworkInfo {
	if x != nil {
		return x.NetworkInfo
	}
	return nil
}

func (x *Changefeed) GetState() Changefeed_State {
	if x != nil {
		return x.State
	}
	return Changefeed_STATE_UNSPECIFIED
}

func (x *Changefeed) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Changefeed) GetCheckpointTso() uint64 {
	if x != nil {
		return x.CheckpointTso
	}
	return 0
}

func (x *Changefeed) GetCheckpointTs() *timestamppb.Timestamp {
	if x != nil {
		return x.CheckpointTs
	}
	return nil
}

func (x *Changefeed) GetChangefeedCapacity() string {
	if x != nil {
		return x.ChangefeedCapacity
	}
	return ""
}

func (x *Changefeed) GetDownstreamType() DownstreamType {
	if x != nil {
		return x.DownstreamType
	}
	return DownstreamType_DOWNSTREAM_TYPE_UNSPECIFIED
}

func (x *Changefeed) GetTableConfig() *TableConfig {
	if x != nil {
		return x.TableConfig
	}
	return nil
}

func (x *Changefeed) GetStartPosition() *StartPosition {
	if x != nil {
		return x.StartPosition
	}
	return nil
}

func (x *Changefeed) GetDownstreamConfig() isChangefeed_DownstreamConfig {
	if x != nil {
		return x.DownstreamConfig
	}
	return nil
}

func (x *Changefeed) GetKafka() *KafkaDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*Changefeed_Kafka); ok {
			return x.Kafka
		}
	}
	return nil
}

func (x *Changefeed) GetMysql() *MySQLDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*Changefeed_Mysql); ok {
			return x.Mysql
		}
	}
	return nil
}

func (x *Changefeed) GetS3() *S3DownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*Changefeed_S3); ok {
			return x.S3
		}
	}
	return nil
}

func (x *Changefeed) GetGcs() *GcsDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*Changefeed_Gcs); ok {
			return x.Gcs
		}
	}
	return nil
}

func (x *Changefeed) GetPulsar() *PulsarDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*Changefeed_Pulsar); ok {
			return x.Pulsar
		}
	}
	return nil
}

func (x *Changefeed) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

type isChangefeed_DownstreamConfig interface {
	isChangefeed_DownstreamConfig()
}

type Changefeed_Kafka struct {
	// Kafka downstream configuration.
	Kafka *KafkaDownstreamConfig `protobuf:"bytes,11,opt,name=kafka,proto3,oneof"`
}

type Changefeed_Mysql struct {
	// MySQL downstream configuration.
	Mysql *MySQLDownstreamConfig `protobuf:"bytes,12,opt,name=mysql,proto3,oneof"`
}

type Changefeed_S3 struct {
	// S3 downstream configuration.
	S3 *S3DownstreamConfig `protobuf:"bytes,13,opt,name=s3,proto3,oneof"`
}

type Changefeed_Gcs struct {
	// GCS downstream configuration.
	Gcs *GcsDownstreamConfig `protobuf:"bytes,14,opt,name=gcs,proto3,oneof"`
}

type Changefeed_Pulsar struct {
	// Apache Pulsar downstream configuration.
	Pulsar *PulsarDownstreamConfig `protobuf:"bytes,20,opt,name=pulsar,proto3,oneof"`
}

func (*Changefeed_Kafka) isChangefeed_DownstreamConfig() {}

func (*Changefeed_Mysql) isChangefeed_DownstreamConfig() {}

func (*Changefeed_S3) isChangefeed_DownstreamConfig() {}

func (*Changefeed_Gcs) isChangefeed_DownstreamConfig() {}

func (*Changefeed_Pulsar) isChangefeed_DownstreamConfig() {}

// The request for getting a changefeed.
type GetChangefeedRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to retrieve.
	// Example: "67890"
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	ChangefeedId    string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	InvalidateCache bool   `protobuf:"varint,2,opt,name=invalidate_cache,json=invalidateCache,proto3" json:"invalidate_cache,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*GetChangefeedRequest) ProtoMessage() {}

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

func (x *GetChangefeedRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

func (x *GetChangefeedRequest) GetInvalidateCache() bool {
	if x != nil {
		return x.InvalidateCache
	}
	return false
}

// The request for pausing a changefeed.
type PauseChangefeedRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to pause.
	// Example: "67890"
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	ChangefeedId  string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PauseChangefeedRequest) ProtoMessage() {}

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

func (x *PauseChangefeedRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

// The request for resuming a changefeed.
type ResumeChangefeedRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to resume.
	// Example: "67890"
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	ChangefeedId  string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ResumeChangefeedRequest) ProtoMessage() {}

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

func (x *ResumeChangefeedRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

// The request for getting event filters.
type GetEventFiltersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to get event filters for.
	// Example: "67890"
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	ChangefeedId  string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetEventFiltersRequest) ProtoMessage() {}

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

func (x *GetEventFiltersRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

// The list of event filters.
type EventFilters struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// List of event filters.
	EventFilters  []*EventFilter `protobuf:"bytes,1,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EventFilters) ProtoMessage() {}

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

func (x *EventFilters) GetEventFilters() []*EventFilter {
	if x != nil {
		return x.EventFilters
	}
	return nil
}

// The response for setting event filters.
type SetEventFiltersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The updated list of event filters.
	EventFilters  []*EventFilter `protobuf:"bytes,1,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SetEventFiltersResponse) ProtoMessage() {}

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

func (x *SetEventFiltersResponse) GetEventFilters() []*EventFilter {
	if x != nil {
		return x.EventFilters
	}
	return nil
}

// The event filter configuration for fine-grained control.
type EventFilter struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Table name patterns to match. Uses the same syntax as TiCDC table filter.
	// Supports wildcards. Matches database name, so be careful with database-level DDLs.
	// Example: ["mydb.orders", "mydb.user_*", "test.*"]
	TableMatchers []string `protobuf:"bytes,1,rep,name=table_matchers,json=tableMatchers,proto3" json:"table_matchers,omitempty"`
	// Event types to ignore.
	//
	// DML events: "insert", "update", "delete", "all dml"
	// DDL events: "create schema", "drop schema", "create table", "drop table",
	//
	//	"rename table", "truncate table", "alter table", "add table partition",
	//	"drop table partition", "truncate table partition", "create view",
	//	"drop view", "modify schema charset and collate", "recover table",
	//	"rebase auto id", "modify table comment", "modify table charset and collate",
	//	"exchange table partition", "reorganize table partition", "alter table partitioning",
	//	"remove table partitioning", "add column", "drop column", "modify column",
	//	"set default value", "add primary key", "drop primary key", "rename index",
	//	"alter index visibility", "alter ttl info", "alter ttl remove", "multi schema change"
	//
	// Example: ["insert", "delete", "alter table"]
	IgnoredEvents []string `protobuf:"bytes,2,rep,name=ignored_events,json=ignoredEvents,proto3" json:"ignored_events,omitempty"`
	// SQL statement patterns to ignore (DDL only). Supports regular expressions.
	// Example: ["^drop", "add column"]
	IgnoredSqlStatements []string `protobuf:"bytes,3,rep,name=ignored_sql_statements,json=ignoredSqlStatements,proto3" json:"ignored_sql_statements,omitempty"`
	// Expression to filter INSERT events by column value.
	// Uses SQL expressions in default SQL mode.
	// All tables matched by `table_matchers` must contain all columns referenced.
	// Example: "status = 'deleted'"
	IgnoredInsertValueExpression string `protobuf:"bytes,4,opt,name=ignored_insert_value_expression,json=ignoredInsertValueExpression,proto3" json:"ignored_insert_value_expression,omitempty"`
	// Expression to filter UPDATE events by old column value (before update).
	// Uses SQL expressions in default SQL mode.
	// All tables matched by `table_matchers` must contain all columns referenced.
	// Example: "status = 'archived'"
	IgnoredUpdateOldValueExpression string `protobuf:"bytes,5,opt,name=ignored_update_old_value_expression,json=ignoredUpdateOldValueExpression,proto3" json:"ignored_update_old_value_expression,omitempty"`
	// Expression to filter UPDATE events by new column value (after update).
	// Uses SQL expressions in default SQL mode.
	// All tables matched by `table_matchers` must contain all columns referenced.
	// Example: "status = 'deleted'"
	IgnoredUpdateNewValueExpression string `protobuf:"bytes,6,opt,name=ignored_update_new_value_expression,json=ignoredUpdateNewValueExpression,proto3" json:"ignored_update_new_value_expression,omitempty"`
	// Expression to filter DELETE events by column value.
	// Uses SQL expressions in default SQL mode.
	// All tables matched by `table_matchers` must contain all columns referenced.
	// Example: "soft_delete = true"
	IgnoredDeleteValueExpression string `protobuf:"bytes,7,opt,name=ignored_delete_value_expression,json=ignoredDeleteValueExpression,proto3" json:"ignored_delete_value_expression,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

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

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

func (*EventFilter) ProtoMessage() {}

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

func (x *EventFilter) GetTableMatchers() []string {
	if x != nil {
		return x.TableMatchers
	}
	return nil
}

func (x *EventFilter) GetIgnoredEvents() []string {
	if x != nil {
		return x.IgnoredEvents
	}
	return nil
}

func (x *EventFilter) GetIgnoredSqlStatements() []string {
	if x != nil {
		return x.IgnoredSqlStatements
	}
	return nil
}

func (x *EventFilter) GetIgnoredInsertValueExpression() string {
	if x != nil {
		return x.IgnoredInsertValueExpression
	}
	return ""
}

func (x *EventFilter) GetIgnoredUpdateOldValueExpression() string {
	if x != nil {
		return x.IgnoredUpdateOldValueExpression
	}
	return ""
}

func (x *EventFilter) GetIgnoredUpdateNewValueExpression() string {
	if x != nil {
		return x.IgnoredUpdateNewValueExpression
	}
	return ""
}

func (x *EventFilter) GetIgnoredDeleteValueExpression() string {
	if x != nil {
		return x.IgnoredDeleteValueExpression
	}
	return ""
}

// The request for setting event filters.
type SetEventFiltersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to set event filters for.
	// Example: "67890"
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	ChangefeedId string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	// The event filters to apply. Replaces existing filters entirely.
	EventFilters  []*EventFilter `protobuf:"bytes,2,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SetEventFiltersRequest) ProtoMessage() {}

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

func (x *SetEventFiltersRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

func (x *SetEventFiltersRequest) GetEventFilters() []*EventFilter {
	if x != nil {
		return x.EventFilters
	}
	return nil
}

// The request for creating a changefeed.
type CreateChangefeedRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The changefeed to create. All required fields must be set.
	Changefeed *Changefeed `protobuf:"bytes,1,opt,name=changefeed,proto3" json:"changefeed,omitempty"`
	// Indicates whether to run dry-run validation only without creating the changefeed.
	// Example: true
	DryRun        bool `protobuf:"varint,2,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateChangefeedRequest) ProtoMessage() {}

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

func (x *CreateChangefeedRequest) GetChangefeed() *Changefeed {
	if x != nil {
		return x.Changefeed
	}
	return nil
}

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

// The request for updating a changefeed downstream configuration.
type EditChangefeedDownstreamConfigRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to update.
	// Example: "67890"
	ChangefeedId string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	// Whether to validate the update without applying it.
	// Example: true
	DryRun bool `protobuf:"varint,2,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
	// Table filtering and event filter configuration.
	// This field is editable only when the changefeed is in PAUSED state.
	TableConfig *TableConfig `protobuf:"bytes,3,opt,name=table_config,json=tableConfig,proto3" json:"table_config,omitempty"`
	// The downstream type. Must match the existing downstream type (cannot be changed).
	// Example: KAFKA
	DownstreamType DownstreamType `protobuf:"varint,4,opt,name=downstream_type,json=downstreamType,proto3,enum=openapi.v1beta2.DownstreamType" json:"downstream_type,omitempty"`
	// Downstream configuration to update. Exactly one must be set based on downstream_type.
	//
	// Types that are valid to be assigned to DownstreamConfig:
	//
	//	*EditChangefeedDownstreamConfigRequest_Kafka
	//	*EditChangefeedDownstreamConfigRequest_Mysql
	//	*EditChangefeedDownstreamConfigRequest_S3
	//	*EditChangefeedDownstreamConfigRequest_Gcs
	//	*EditChangefeedDownstreamConfigRequest_Pulsar
	DownstreamConfig isEditChangefeedDownstreamConfigRequest_DownstreamConfig `protobuf_oneof:"downstream_config"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

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

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

func (*EditChangefeedDownstreamConfigRequest) ProtoMessage() {}

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

func (x *EditChangefeedDownstreamConfigRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

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

func (x *EditChangefeedDownstreamConfigRequest) GetTableConfig() *TableConfig {
	if x != nil {
		return x.TableConfig
	}
	return nil
}

func (x *EditChangefeedDownstreamConfigRequest) GetDownstreamType() DownstreamType {
	if x != nil {
		return x.DownstreamType
	}
	return DownstreamType_DOWNSTREAM_TYPE_UNSPECIFIED
}

func (x *EditChangefeedDownstreamConfigRequest) GetDownstreamConfig() isEditChangefeedDownstreamConfigRequest_DownstreamConfig {
	if x != nil {
		return x.DownstreamConfig
	}
	return nil
}

func (x *EditChangefeedDownstreamConfigRequest) GetKafka() *KafkaDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*EditChangefeedDownstreamConfigRequest_Kafka); ok {
			return x.Kafka
		}
	}
	return nil
}

func (x *EditChangefeedDownstreamConfigRequest) GetMysql() *MySQLDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*EditChangefeedDownstreamConfigRequest_Mysql); ok {
			return x.Mysql
		}
	}
	return nil
}

func (x *EditChangefeedDownstreamConfigRequest) GetS3() *S3DownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*EditChangefeedDownstreamConfigRequest_S3); ok {
			return x.S3
		}
	}
	return nil
}

func (x *EditChangefeedDownstreamConfigRequest) GetGcs() *GcsDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*EditChangefeedDownstreamConfigRequest_Gcs); ok {
			return x.Gcs
		}
	}
	return nil
}

func (x *EditChangefeedDownstreamConfigRequest) GetPulsar() *PulsarDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*EditChangefeedDownstreamConfigRequest_Pulsar); ok {
			return x.Pulsar
		}
	}
	return nil
}

type isEditChangefeedDownstreamConfigRequest_DownstreamConfig interface {
	isEditChangefeedDownstreamConfigRequest_DownstreamConfig()
}

type EditChangefeedDownstreamConfigRequest_Kafka struct {
	// Updated Kafka configuration.
	Kafka *KafkaDownstreamConfig `protobuf:"bytes,11,opt,name=kafka,proto3,oneof"`
}

type EditChangefeedDownstreamConfigRequest_Mysql struct {
	// Updated MySQL configuration.
	Mysql *MySQLDownstreamConfig `protobuf:"bytes,12,opt,name=mysql,proto3,oneof"`
}

type EditChangefeedDownstreamConfigRequest_S3 struct {
	// Updated S3 configuration.
	S3 *S3DownstreamConfig `protobuf:"bytes,13,opt,name=s3,proto3,oneof"`
}

type EditChangefeedDownstreamConfigRequest_Gcs struct {
	// Updated GCS configuration.
	Gcs *GcsDownstreamConfig `protobuf:"bytes,14,opt,name=gcs,proto3,oneof"`
}

type EditChangefeedDownstreamConfigRequest_Pulsar struct {
	// Updated Apache Pulsar configuration.
	Pulsar *PulsarDownstreamConfig `protobuf:"bytes,20,opt,name=pulsar,proto3,oneof"`
}

func (*EditChangefeedDownstreamConfigRequest_Kafka) isEditChangefeedDownstreamConfigRequest_DownstreamConfig() {
}

func (*EditChangefeedDownstreamConfigRequest_Mysql) isEditChangefeedDownstreamConfigRequest_DownstreamConfig() {
}

func (*EditChangefeedDownstreamConfigRequest_S3) isEditChangefeedDownstreamConfigRequest_DownstreamConfig() {
}

func (*EditChangefeedDownstreamConfigRequest_Gcs) isEditChangefeedDownstreamConfigRequest_DownstreamConfig() {
}

func (*EditChangefeedDownstreamConfigRequest_Pulsar) isEditChangefeedDownstreamConfigRequest_DownstreamConfig() {
}

// The request for deleting a changefeed.
type DeleteChangefeedRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to delete.
	// Example: "67890"
	ChangefeedId  string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DeleteChangefeedRequest) ProtoMessage() {}

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

func (x *DeleteChangefeedRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

// The request for scaling a changefeed.
type ScaleChangefeedRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The ID of the changefeed to scale.
	// Example: "67890"
	ChangefeedId string `protobuf:"bytes,1,opt,name=changefeed_id,json=changefeedId,proto3" json:"changefeed_id,omitempty"`
	// The target changefeed capacity to scale to.
	// Example: "8ccu"
	ChangefeedCapacity string `protobuf:"bytes,2,opt,name=changefeed_capacity,json=changefeedCapacity,proto3" json:"changefeed_capacity,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*ScaleChangefeedRequest) ProtoMessage() {}

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

func (x *ScaleChangefeedRequest) GetChangefeedId() string {
	if x != nil {
		return x.ChangefeedId
	}
	return ""
}

func (x *ScaleChangefeedRequest) GetChangefeedCapacity() string {
	if x != nil {
		return x.ChangefeedCapacity
	}
	return ""
}

// The request for testing a downstream connection.
type TestConnectionRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The source TiDB instance ID to test connection from.
	// Example: "1234567890123"
	TidbId string `protobuf:"bytes,1,opt,name=tidb_id,json=tidbId,proto3" json:"tidb_id,omitempty"`
	// Network configuration for connecting to the downstream.
	// Required for Kafka, MySQL, and Pulsar downstream types.
	NetworkInfo *NetworkInfo `protobuf:"bytes,2,opt,name=network_info,json=networkInfo,proto3,oneof" json:"network_info,omitempty"`
	// The downstream type to test.
	// Example: KAFKA
	DownstreamType DownstreamType `protobuf:"varint,3,opt,name=downstream_type,json=downstreamType,proto3,enum=openapi.v1beta2.DownstreamType" json:"downstream_type,omitempty"`
	// Downstream configuration to test. Exactly one must be set based on downstream_type.
	//
	// Types that are valid to be assigned to DownstreamConfig:
	//
	//	*TestConnectionRequest_Kafka
	//	*TestConnectionRequest_Mysql
	//	*TestConnectionRequest_S3
	//	*TestConnectionRequest_Gcs
	//	*TestConnectionRequest_Pulsar
	DownstreamConfig isTestConnectionRequest_DownstreamConfig `protobuf_oneof:"downstream_config"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

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

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

func (*TestConnectionRequest) ProtoMessage() {}

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

func (x *TestConnectionRequest) GetTidbId() string {
	if x != nil {
		return x.TidbId
	}
	return ""
}

func (x *TestConnectionRequest) GetNetworkInfo() *NetworkInfo {
	if x != nil {
		return x.NetworkInfo
	}
	return nil
}

func (x *TestConnectionRequest) GetDownstreamType() DownstreamType {
	if x != nil {
		return x.DownstreamType
	}
	return DownstreamType_DOWNSTREAM_TYPE_UNSPECIFIED
}

func (x *TestConnectionRequest) GetDownstreamConfig() isTestConnectionRequest_DownstreamConfig {
	if x != nil {
		return x.DownstreamConfig
	}
	return nil
}

func (x *TestConnectionRequest) GetKafka() *KafkaDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*TestConnectionRequest_Kafka); ok {
			return x.Kafka
		}
	}
	return nil
}

func (x *TestConnectionRequest) GetMysql() *MySQLDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*TestConnectionRequest_Mysql); ok {
			return x.Mysql
		}
	}
	return nil
}

func (x *TestConnectionRequest) GetS3() *S3DownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*TestConnectionRequest_S3); ok {
			return x.S3
		}
	}
	return nil
}

func (x *TestConnectionRequest) GetGcs() *GcsDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*TestConnectionRequest_Gcs); ok {
			return x.Gcs
		}
	}
	return nil
}

func (x *TestConnectionRequest) GetPulsar() *PulsarDownstreamConfig {
	if x != nil {
		if x, ok := x.DownstreamConfig.(*TestConnectionRequest_Pulsar); ok {
			return x.Pulsar
		}
	}
	return nil
}

type isTestConnectionRequest_DownstreamConfig interface {
	isTestConnectionRequest_DownstreamConfig()
}

type TestConnectionRequest_Kafka struct {
	// Kafka configuration to test.
	Kafka *KafkaDownstreamConfig `protobuf:"bytes,10,opt,name=kafka,proto3,oneof"`
}

type TestConnectionRequest_Mysql struct {
	// MySQL configuration to test.
	Mysql *MySQLDownstreamConfig `protobuf:"bytes,11,opt,name=mysql,proto3,oneof"`
}

type TestConnectionRequest_S3 struct {
	// S3 configuration to test.
	S3 *S3DownstreamConfig `protobuf:"bytes,12,opt,name=s3,proto3,oneof"`
}

type TestConnectionRequest_Gcs struct {
	// GCS configuration to test.
	Gcs *GcsDownstreamConfig `protobuf:"bytes,13,opt,name=gcs,proto3,oneof"`
}

type TestConnectionRequest_Pulsar struct {
	// Apache Pulsar configuration to test.
	Pulsar *PulsarDownstreamConfig `protobuf:"bytes,16,opt,name=pulsar,proto3,oneof"`
}

func (*TestConnectionRequest_Kafka) isTestConnectionRequest_DownstreamConfig() {}

func (*TestConnectionRequest_Mysql) isTestConnectionRequest_DownstreamConfig() {}

func (*TestConnectionRequest_S3) isTestConnectionRequest_DownstreamConfig() {}

func (*TestConnectionRequest_Gcs) isTestConnectionRequest_DownstreamConfig() {}

func (*TestConnectionRequest_Pulsar) isTestConnectionRequest_DownstreamConfig() {}

// The request for describing schema/table information.
type DescribeSchemaTableRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The source TiDB instance ID to describe schemas/tables from.
	// Example: "1234567890123"
	TidbId string `protobuf:"bytes,1,opt,name=tidb_id,json=tidbId,proto3" json:"tidb_id,omitempty"`
	// Filter rules for schemas/tables (supports wildcards).
	// Example: ["mydb.*", "test.orders"]
	FilterRule []string `protobuf:"bytes,2,rep,name=filter_rule,json=filterRule,proto3" json:"filter_rule,omitempty"`
	// Whether to use case-sensitive matching for filter rules.
	// Default: false (case-insensitive).
	// Example: true
	CaseSensitive bool `protobuf:"varint,3,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DescribeSchemaTableRequest) ProtoMessage() {}

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

func (x *DescribeSchemaTableRequest) GetTidbId() string {
	if x != nil {
		return x.TidbId
	}
	return ""
}

func (x *DescribeSchemaTableRequest) GetFilterRule() []string {
	if x != nil {
		return x.FilterRule
	}
	return nil
}

func (x *DescribeSchemaTableRequest) GetCaseSensitive() bool {
	if x != nil {
		return x.CaseSensitive
	}
	return false
}

// The response for describing schema/table information.
type DescribeSchemaTableResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The TiDB instance ID.
	// Example: "1234567890123"
	TidbId string `protobuf:"bytes,1,opt,name=tidb_id,json=tidbId,proto3" json:"tidb_id,omitempty"`
	// List of schemas and their tables.
	Schemas []*DescribeSchemaTableResponse_SchemaInfo `protobuf:"bytes,2,rep,name=schemas,proto3" json:"schemas,omitempty"`
	// GC (Garbage Collection) safe point timestamp.
	// Data before this timestamp may not be available for replication.
	// Example: "2026-06-08T09:00:00Z"
	GcSafePoint   *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=gc_safe_point,json=gcSafePoint,proto3" json:"gc_safe_point,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DescribeSchemaTableResponse) ProtoMessage() {}

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

func (x *DescribeSchemaTableResponse) GetTidbId() string {
	if x != nil {
		return x.TidbId
	}
	return ""
}

func (x *DescribeSchemaTableResponse) GetSchemas() []*DescribeSchemaTableResponse_SchemaInfo {
	if x != nil {
		return x.Schemas
	}
	return nil
}

func (x *DescribeSchemaTableResponse) GetGcSafePoint() *timestamppb.Timestamp {
	if x != nil {
		return x.GcSafePoint
	}
	return nil
}

// The request for listing changefeed CCU options.
type ListCCUsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListCCUsRequest) ProtoMessage() {}

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

// The response for listing changefeed CCU options.
type ListCCUsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The list of available CCU options.
	Ccus          []*ChangefeedCCU `protobuf:"bytes,1,rep,name=ccus,proto3" json:"ccus,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListCCUsResponse) ProtoMessage() {}

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

func (x *ListCCUsResponse) GetCcus() []*ChangefeedCCU {
	if x != nil {
		return x.Ccus
	}
	return nil
}

// The changefeed CCU option.
type ChangefeedCCU struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The identifier of the CCU option.
	// Example: "4ccu"
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Human-readable display name.
	// Example: "4 CCU - Small"
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The number of CCU (Changefeed Capacity Units) allocated.
	// Example: 4
	CcuNum uint32 `protobuf:"varint,3,opt,name=ccu_num,json=ccuNum,proto3" json:"ccu_num,omitempty"`
	// The maximum rows per second this instance type can process.
	// Example: 5000
	RpsLimit      uint32 `protobuf:"varint,4,opt,name=rps_limit,json=rpsLimit,proto3" json:"rps_limit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ChangefeedCCU) ProtoMessage() {}

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

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

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

func (x *ChangefeedCCU) GetCcuNum() uint32 {
	if x != nil {
		return x.CcuNum
	}
	return 0
}

func (x *ChangefeedCCU) GetRpsLimit() uint32 {
	if x != nil {
		return x.RpsLimit
	}
	return 0
}

// The table filtering and event filter configuration.
type TableConfig struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	FilterRules []string               `protobuf:"bytes,1,rep,name=filter_rules,json=filterRules,proto3" json:"filter_rules,omitempty"`
	// Mode for handling unsupported tables.
	// Example: FORCE_SYNC
	Mode TableConfig_Mode `protobuf:"varint,2,opt,name=mode,proto3,enum=openapi.v1beta2.TableConfig_Mode" json:"mode,omitempty"`
	// Whether filter rules are case-sensitive.
	// Default: false.
	// Example: true
	CaseSensitive bool `protobuf:"varint,3,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"`
	// Event filter rules for fine-grained control.
	EventFilters []*EventFilter `protobuf:"bytes,4,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
	// Whether bidirectional replication mode is enabled.
	BdrMode       *bool `protobuf:"varint,5,opt,name=bdr_mode,json=bdrMode,proto3,oneof" json:"bdr_mode,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*TableConfig) ProtoMessage() {}

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

func (x *TableConfig) GetFilterRules() []string {
	if x != nil {
		return x.FilterRules
	}
	return nil
}

func (x *TableConfig) GetMode() TableConfig_Mode {
	if x != nil {
		return x.Mode
	}
	return TableConfig_MODE_UNSPECIFIED
}

func (x *TableConfig) GetCaseSensitive() bool {
	if x != nil {
		return x.CaseSensitive
	}
	return false
}

func (x *TableConfig) GetEventFilters() []*EventFilter {
	if x != nil {
		return x.EventFilters
	}
	return nil
}

func (x *TableConfig) GetBdrMode() bool {
	if x != nil && x.BdrMode != nil {
		return *x.BdrMode
	}
	return false
}

// The start position for the changefeed.
type StartPosition struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The start position mode.
	// Example: FROM_NOW
	Mode StartPosition_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=openapi.v1beta2.StartPosition_Mode" json:"mode,omitempty"`
	// Start position value. Exactly one must be set based on mode.
	//
	// Types that are valid to be assigned to Position:
	//
	//	*StartPosition_StartTso
	//	*StartPosition_StartTimestamp
	Position      isStartPosition_Position `protobuf_oneof:"position"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StartPosition) Reset() {
	*x = StartPosition{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StartPosition) ProtoMessage() {}

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

func (x *StartPosition) GetMode() StartPosition_Mode {
	if x != nil {
		return x.Mode
	}
	return StartPosition_MODE_UNSPECIFIED
}

func (x *StartPosition) GetPosition() isStartPosition_Position {
	if x != nil {
		return x.Position
	}
	return nil
}

func (x *StartPosition) GetStartTso() uint64 {
	if x != nil {
		if x, ok := x.Position.(*StartPosition_StartTso); ok {
			return x.StartTso
		}
	}
	return 0
}

func (x *StartPosition) GetStartTimestamp() string {
	if x != nil {
		if x, ok := x.Position.(*StartPosition_StartTimestamp); ok {
			return x.StartTimestamp
		}
	}
	return ""
}

type isStartPosition_Position interface {
	isStartPosition_Position()
}

type StartPosition_StartTso struct {
	// Start from a specific TSO. Used with FROM_TSO mode.
	// Example: 452348901234567890
	// (-- api-linter: core::0141::forbidden-types=disabled --)
	StartTso uint64 `protobuf:"varint,2,opt,name=start_tso,json=startTso,proto3,oneof"`
}

type StartPosition_StartTimestamp struct {
	// Start from a specific timestamp (RFC3339 format). Used with FROM_UTC mode.
	// Example: "2026-01-01T00:00:00Z"
	StartTimestamp string `protobuf:"bytes,3,opt,name=start_timestamp,json=startTimestamp,proto3,oneof"`
}

func (*StartPosition_StartTso) isStartPosition_Position() {}

func (*StartPosition_StartTimestamp) isStartPosition_Position() {}

// The MySQL connection configuration.
type Connection struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Endpoint address (host:port).
	// Required for PUBLIC/VPC_PEERING networks.
	// Optional for PRIVATE_LINK, where the endpoint can be assembled server-side
	// from sink endpoint and ports.
	// Example: "mysql.example.com:3306"
	Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	// Username for authentication.
	// Example: "cdc_user"
	Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
	// Password for authentication.
	// Example: "********"
	// For edit requests, empty string means keeping the existing password.
	Password      string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Connection) Reset() {
	*x = Connection{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Connection) ProtoMessage() {}

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

func (x *Connection) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *Connection) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *Connection) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

// The network configuration for downstream connectivity.
type NetworkInfo struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The network type for downstream connectivity.
	// Example: NETWORK_TYPE_PUBLIC
	NetworkType    NetworkInfo_NetworkType `protobuf:"varint,1,opt,name=network_type,json=networkType,proto3,enum=openapi.v1beta2.NetworkInfo_NetworkType" json:"network_type,omitempty"`
	SinkEndpointId *uint64                 `protobuf:"varint,2,opt,name=sink_endpoint_id,json=sinkEndpointId,proto3,oneof" json:"sink_endpoint_id,omitempty"`
	Ports          []uint32                `protobuf:"varint,4,rep,packed,name=ports,proto3" json:"ports,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*NetworkInfo) ProtoMessage() {}

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

// Deprecated: Use NetworkInfo.ProtoReflect.Descriptor instead.
func (*NetworkInfo) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{24}
}

func (x *NetworkInfo) GetNetworkType() NetworkInfo_NetworkType {
	if x != nil {
		return x.NetworkType
	}
	return NetworkInfo_NETWORK_TYPE_UNSPECIFIED
}

func (x *NetworkInfo) GetSinkEndpointId() uint64 {
	if x != nil && x.SinkEndpointId != nil {
		return *x.SinkEndpointId
	}
	return 0
}

func (x *NetworkInfo) GetPorts() []uint32 {
	if x != nil {
		return x.Ports
	}
	return nil
}

// The Kafka downstream configuration.
type KafkaDownstreamConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Broker connection configuration.
	Broker *KafkaDownstreamConfig_Broker `protobuf:"bytes,1,opt,name=broker,proto3" json:"broker,omitempty"`
	// Authentication configuration.
	Authentication *KafkaDownstreamConfig_Authentication `protobuf:"bytes,2,opt,name=authentication,proto3" json:"authentication,omitempty"`
	// Data format and serialization configuration.
	DataFormat *KafkaDownstreamConfig_DataFormat `protobuf:"bytes,3,opt,name=data_format,json=dataFormat,proto3" json:"data_format,omitempty"`
	// Topic and partition configuration.
	TopicPartitionConfig *KafkaDownstreamConfig_TopicPartitionConfig `protobuf:"bytes,4,opt,name=topic_partition_config,json=topicPartitionConfig,proto3" json:"topic_partition_config,omitempty"`
	// Column selector for filtering specific columns.
	ColumnSelectors []*KafkaDownstreamConfig_ColumnSelector `protobuf:"bytes,5,rep,name=column_selectors,json=columnSelectors,proto3" json:"column_selectors,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*KafkaDownstreamConfig) ProtoMessage() {}

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

// Deprecated: Use KafkaDownstreamConfig.ProtoReflect.Descriptor instead.
func (*KafkaDownstreamConfig) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25}
}

func (x *KafkaDownstreamConfig) GetBroker() *KafkaDownstreamConfig_Broker {
	if x != nil {
		return x.Broker
	}
	return nil
}

func (x *KafkaDownstreamConfig) GetAuthentication() *KafkaDownstreamConfig_Authentication {
	if x != nil {
		return x.Authentication
	}
	return nil
}

func (x *KafkaDownstreamConfig) GetDataFormat() *KafkaDownstreamConfig_DataFormat {
	if x != nil {
		return x.DataFormat
	}
	return nil
}

func (x *KafkaDownstreamConfig) GetTopicPartitionConfig() *KafkaDownstreamConfig_TopicPartitionConfig {
	if x != nil {
		return x.TopicPartitionConfig
	}
	return nil
}

func (x *KafkaDownstreamConfig) GetColumnSelectors() []*KafkaDownstreamConfig_ColumnSelector {
	if x != nil {
		return x.ColumnSelectors
	}
	return nil
}

// The MySQL downstream configuration.
type MySQLDownstreamConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Connection configuration.
	Connection    *Connection `protobuf:"bytes,1,opt,name=connection,proto3" json:"connection,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*MySQLDownstreamConfig) ProtoMessage() {}

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

// Deprecated: Use MySQLDownstreamConfig.ProtoReflect.Descriptor instead.
func (*MySQLDownstreamConfig) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{26}
}

func (x *MySQLDownstreamConfig) GetConnection() *Connection {
	if x != nil {
		return x.Connection
	}
	return nil
}

// The S3 data format configuration.
type S3DataFormat struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Output protocol.
	// Example: PROTOCOL_CANAL_JSON
	Protocol   S3DataFormat_Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=openapi.v1beta2.S3DataFormat_Protocol" json:"protocol,omitempty"`
	Terminator string                `protobuf:"bytes,2,opt,name=terminator,proto3" json:"terminator,omitempty"`
	// Date separator for directory structure.
	// - DATE_SEPARATOR_UNSPECIFIED: Uses NONE.
	// - NONE: No date separator. This is the default behavior.
	// - YEAR: Separate by year.
	// - MONTH: Separate by month.
	// - DAY: Separate by day.
	// Example: DAY
	DateSeparator S3DataFormat_DateSeparator `protobuf:"varint,3,opt,name=date_separator,json=dateSeparator,proto3,enum=openapi.v1beta2.S3DataFormat_DateSeparator" json:"date_separator,omitempty"`
	// Indicates whether to enable TiDB extension fields in Canal-JSON messages. The default value is false.
	// Example: true
	EnableTidbExtension bool `protobuf:"varint,4,opt,name=enable_tidb_extension,json=enableTidbExtension,proto3" json:"enable_tidb_extension,omitempty"`
	// The field delimiter for CSV files. Required when protocol is PROTOCOL_CSV.
	// The value must be an ASCII character.
	// Example: ","
	Delimiter string `protobuf:"bytes,5,opt,name=delimiter,proto3" json:"delimiter,omitempty"`
	Quote     string `protobuf:"bytes,6,opt,name=quote,proto3" json:"quote,omitempty"`
	// The null representation for CSV columns. The default value is `\N`.
	// Example: "NULL"
	Null string `protobuf:"bytes,7,opt,name=null,proto3" json:"null,omitempty"`
	// Indicates whether to include the commit timestamp in CSV rows. The default value is false.
	// Example: true
	IncludeCommitTs bool `protobuf:"varint,8,opt,name=include_commit_ts,json=includeCommitTs,proto3" json:"include_commit_ts,omitempty"`
	// Binary encoding method.
	// Example: BASE64
	BinaryEncodingMethod S3DataFormat_BinaryEncodingMethod `protobuf:"varint,9,opt,name=binary_encoding_method,json=binaryEncodingMethod,proto3,enum=openapi.v1beta2.S3DataFormat_BinaryEncodingMethod" json:"binary_encoding_method,omitempty"`
	// Indicates whether to output raw change events. The default value is false.
	// Example: false
	OutputRawChangeEvent bool `protobuf:"varint,10,opt,name=output_raw_change_event,json=outputRawChangeEvent,proto3" json:"output_raw_change_event,omitempty"`
	// Indicates whether to include the CSV field header. The default value is false.
	// Example: true
	OutputFieldHeader bool `protobuf:"varint,11,opt,name=output_field_header,json=outputFieldHeader,proto3" json:"output_field_header,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*S3DataFormat) ProtoMessage() {}

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

// Deprecated: Use S3DataFormat.ProtoReflect.Descriptor instead.
func (*S3DataFormat) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{27}
}

func (x *S3DataFormat) GetProtocol() S3DataFormat_Protocol {
	if x != nil {
		return x.Protocol
	}
	return S3DataFormat_PROTOCOL_UNSPECIFIED
}

func (x *S3DataFormat) GetTerminator() string {
	if x != nil {
		return x.Terminator
	}
	return ""
}

func (x *S3DataFormat) GetDateSeparator() S3DataFormat_DateSeparator {
	if x != nil {
		return x.DateSeparator
	}
	return S3DataFormat_DATE_SEPARATOR_UNSPECIFIED
}

func (x *S3DataFormat) GetEnableTidbExtension() bool {
	if x != nil {
		return x.EnableTidbExtension
	}
	return false
}

func (x *S3DataFormat) GetDelimiter() string {
	if x != nil {
		return x.Delimiter
	}
	return ""
}

func (x *S3DataFormat) GetQuote() string {
	if x != nil {
		return x.Quote
	}
	return ""
}

func (x *S3DataFormat) GetNull() string {
	if x != nil {
		return x.Null
	}
	return ""
}

func (x *S3DataFormat) GetIncludeCommitTs() bool {
	if x != nil {
		return x.IncludeCommitTs
	}
	return false
}

func (x *S3DataFormat) GetBinaryEncodingMethod() S3DataFormat_BinaryEncodingMethod {
	if x != nil {
		return x.BinaryEncodingMethod
	}
	return S3DataFormat_BINARY_ENCODING_METHOD_UNSPECIFIED
}

func (x *S3DataFormat) GetOutputRawChangeEvent() bool {
	if x != nil {
		return x.OutputRawChangeEvent
	}
	return false
}

func (x *S3DataFormat) GetOutputFieldHeader() bool {
	if x != nil {
		return x.OutputFieldHeader
	}
	return false
}

// The storage flush configuration.
type StorageFlushConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Flush interval (duration string).
	// Range: 2s to 10m. Default: "1m".
	// Example: "1m"
	Interval string `protobuf:"bytes,1,opt,name=interval,proto3" json:"interval,omitempty"`
	// File size threshold in bytes. Data is flushed when this size is reached.
	// Range: 1048576 (1MB) to 536870912 (512MB). Default: 67108864 (64MB).
	// Example: 67108864
	FileSize      uint64 `protobuf:"varint,2,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StorageFlushConfig) Reset() {
	*x = StorageFlushConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StorageFlushConfig) ProtoMessage() {}

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

func (x *StorageFlushConfig) GetInterval() string {
	if x != nil {
		return x.Interval
	}
	return ""
}

func (x *StorageFlushConfig) GetFileSize() uint64 {
	if x != nil {
		return x.FileSize
	}
	return 0
}

// The S3 downstream configuration.
type S3DownstreamConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// S3 endpoint configuration.
	Endpoint *S3DownstreamConfig_Endpoint `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	// Data format configuration.
	DataFormat *S3DataFormat `protobuf:"bytes,2,opt,name=data_format,json=dataFormat,proto3" json:"data_format,omitempty"`
	// Storage flush configuration.
	StorageFlushConfig *StorageFlushConfig `protobuf:"bytes,3,opt,name=storage_flush_config,json=storageFlushConfig,proto3" json:"storage_flush_config,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *S3DownstreamConfig) Reset() {
	*x = S3DownstreamConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*S3DownstreamConfig) ProtoMessage() {}

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

func (x *S3DownstreamConfig) GetEndpoint() *S3DownstreamConfig_Endpoint {
	if x != nil {
		return x.Endpoint
	}
	return nil
}

func (x *S3DownstreamConfig) GetDataFormat() *S3DataFormat {
	if x != nil {
		return x.DataFormat
	}
	return nil
}

func (x *S3DownstreamConfig) GetStorageFlushConfig() *StorageFlushConfig {
	if x != nil {
		return x.StorageFlushConfig
	}
	return nil
}

// The GCS downstream configuration.
type GcsDownstreamConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// GCS endpoint configuration.
	Endpoint *GcsDownstreamConfig_Endpoint `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	// Data format configuration for the GCS downstream.
	DataFormat *S3DataFormat `protobuf:"bytes,2,opt,name=data_format,json=dataFormat,proto3" json:"data_format,omitempty"`
	// Storage flush configuration.
	StorageFlushConfig *StorageFlushConfig `protobuf:"bytes,3,opt,name=storage_flush_config,json=storageFlushConfig,proto3" json:"storage_flush_config,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *GcsDownstreamConfig) Reset() {
	*x = GcsDownstreamConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GcsDownstreamConfig) ProtoMessage() {}

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

func (x *GcsDownstreamConfig) GetEndpoint() *GcsDownstreamConfig_Endpoint {
	if x != nil {
		return x.Endpoint
	}
	return nil
}

func (x *GcsDownstreamConfig) GetDataFormat() *S3DataFormat {
	if x != nil {
		return x.DataFormat
	}
	return nil
}

func (x *GcsDownstreamConfig) GetStorageFlushConfig() *StorageFlushConfig {
	if x != nil {
		return x.StorageFlushConfig
	}
	return nil
}

// The Apache Pulsar downstream configuration.
type PulsarDownstreamConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Pulsar endpoint transport.
	DestinationProtocol PulsarDownstreamConfig_DestinationProtocol `protobuf:"varint,1,opt,name=destination_protocol,json=destinationProtocol,proto3,enum=openapi.v1beta2.PulsarDownstreamConfig_DestinationProtocol" json:"destination_protocol,omitempty"`
	// Pulsar service endpoint.
	// Example: "pulsar.example.com:6650"
	Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	// Pulsar authentication settings.
	Authentication *PulsarDownstreamConfig_Authentication `protobuf:"bytes,3,opt,name=authentication,proto3" json:"authentication,omitempty"`
	// Pulsar message compression.
	Compression PulsarDownstreamConfig_CompressionType `protobuf:"varint,4,opt,name=compression,proto3,enum=openapi.v1beta2.PulsarDownstreamConfig_CompressionType" json:"compression,omitempty"`
	// Pulsar message format.
	DataFormat *PulsarDownstreamConfig_DataFormat `protobuf:"bytes,5,opt,name=data_format,json=dataFormat,proto3" json:"data_format,omitempty"`
	// Pulsar topic distribution settings.
	TopicDistribution *PulsarDownstreamConfig_TopicDistribution `protobuf:"bytes,6,opt,name=topic_distribution,json=topicDistribution,proto3" json:"topic_distribution,omitempty"`
	// Custom partition dispatchers.
	PartitionDispatchers []*KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig `protobuf:"bytes,7,rep,name=partition_dispatchers,json=partitionDispatchers,proto3" json:"partition_dispatchers,omitempty"`
	// Pulsar client tuning.
	AdvancedSetting *PulsarDownstreamConfig_AdvancedSetting `protobuf:"bytes,8,opt,name=advanced_setting,json=advancedSetting,proto3" json:"advanced_setting,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *PulsarDownstreamConfig) Reset() {
	*x = PulsarDownstreamConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PulsarDownstreamConfig) ProtoMessage() {}

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

func (x *PulsarDownstreamConfig) GetDestinationProtocol() PulsarDownstreamConfig_DestinationProtocol {
	if x != nil {
		return x.DestinationProtocol
	}
	return PulsarDownstreamConfig_DESTINATION_PROTOCOL_UNSPECIFIED
}

func (x *PulsarDownstreamConfig) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *PulsarDownstreamConfig) GetAuthentication() *PulsarDownstreamConfig_Authentication {
	if x != nil {
		return x.Authentication
	}
	return nil
}

func (x *PulsarDownstreamConfig) GetCompression() PulsarDownstreamConfig_CompressionType {
	if x != nil {
		return x.Compression
	}
	return PulsarDownstreamConfig_COMPRESSION_TYPE_UNSPECIFIED
}

func (x *PulsarDownstreamConfig) GetDataFormat() *PulsarDownstreamConfig_DataFormat {
	if x != nil {
		return x.DataFormat
	}
	return nil
}

func (x *PulsarDownstreamConfig) GetTopicDistribution() *PulsarDownstreamConfig_TopicDistribution {
	if x != nil {
		return x.TopicDistribution
	}
	return nil
}

func (x *PulsarDownstreamConfig) GetPartitionDispatchers() []*KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig {
	if x != nil {
		return x.PartitionDispatchers
	}
	return nil
}

func (x *PulsarDownstreamConfig) GetAdvancedSetting() *PulsarDownstreamConfig_AdvancedSetting {
	if x != nil {
		return x.AdvancedSetting
	}
	return nil
}

// The schema and its tables.
type DescribeSchemaTableResponse_SchemaInfo struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The schema (database) name.
	// Example: "mydb"
	SchemaName string `protobuf:"bytes,1,opt,name=schema_name,json=schemaName,proto3" json:"schema_name,omitempty"`
	// List of table names in this schema.
	// Example: ["orders", "users", "products"]
	TableNames []string `protobuf:"bytes,2,rep,name=table_names,json=tableNames,proto3" json:"table_names,omitempty"`
	// Whether this schema/table matches the filter rules and is allowed for replication.
	// Example: true
	Allowed       bool `protobuf:"varint,3,opt,name=allowed,proto3" json:"allowed,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DescribeSchemaTableResponse_SchemaInfo) Reset() {
	*x = DescribeSchemaTableResponse_SchemaInfo{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DescribeSchemaTableResponse_SchemaInfo) ProtoMessage() {}

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

func (x *DescribeSchemaTableResponse_SchemaInfo) GetSchemaName() string {
	if x != nil {
		return x.SchemaName
	}
	return ""
}

func (x *DescribeSchemaTableResponse_SchemaInfo) GetTableNames() []string {
	if x != nil {
		return x.TableNames
	}
	return nil
}

func (x *DescribeSchemaTableResponse_SchemaInfo) GetAllowed() bool {
	if x != nil {
		return x.Allowed
	}
	return false
}

// The Kafka broker connection configuration.
type KafkaDownstreamConfig_Broker struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Kafka broker version.
	// Example: KAFKA_VERSION_3XX
	Version KafkaDownstreamConfig_KafkaVersion `protobuf:"varint,1,opt,name=version,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_KafkaVersion" json:"version,omitempty"`
	// Comma-separated list of broker addresses.
	// Required for PUBLIC and VPC_PEERING network types.
	// Not required for PRIVATE_LINK, where broker endpoints are assembled
	// server-side from sink_endpoint_id + ports.
	// Example: "broker1:9092,broker2:9092,broker3:9092"
	BrokerEndpoints string `protobuf:"bytes,2,opt,name=broker_endpoints,json=brokerEndpoints,proto3" json:"broker_endpoints,omitempty"`
	// Whether to enable TLS for the connection.
	// Example: true
	UseTls bool `protobuf:"varint,3,opt,name=use_tls,json=useTls,proto3" json:"use_tls,omitempty"`
	// Whether to skip TLS certificate verification.
	// WARNING: Only use for testing with self-signed certificates.
	// Example: false
	InsecureSkipVerify bool `protobuf:"varint,4,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"`
	// Compression type for messages.
	// Example: LZ4
	Compression KafkaDownstreamConfig_CompressionType `protobuf:"varint,5,opt,name=compression,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_CompressionType" json:"compression,omitempty"`
	// Optional Kafka client ID. When left empty, a system default is used.
	// Example: "my-changefeed-client"
	KafkaClientId string `protobuf:"bytes,6,opt,name=kafka_client_id,json=kafkaClientId,proto3" json:"kafka_client_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_Broker) Reset() {
	*x = KafkaDownstreamConfig_Broker{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_Broker) ProtoMessage() {}

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

func (x *KafkaDownstreamConfig_Broker) GetVersion() KafkaDownstreamConfig_KafkaVersion {
	if x != nil {
		return x.Version
	}
	return KafkaDownstreamConfig_KAFKA_VERSION_UNSPECIFIED
}

func (x *KafkaDownstreamConfig_Broker) GetBrokerEndpoints() string {
	if x != nil {
		return x.BrokerEndpoints
	}
	return ""
}

func (x *KafkaDownstreamConfig_Broker) GetUseTls() bool {
	if x != nil {
		return x.UseTls
	}
	return false
}

func (x *KafkaDownstreamConfig_Broker) GetInsecureSkipVerify() bool {
	if x != nil {
		return x.InsecureSkipVerify
	}
	return false
}

func (x *KafkaDownstreamConfig_Broker) GetCompression() KafkaDownstreamConfig_CompressionType {
	if x != nil {
		return x.Compression
	}
	return KafkaDownstreamConfig_COMPRESSION_TYPE_UNSPECIFIED
}

func (x *KafkaDownstreamConfig_Broker) GetKafkaClientId() string {
	if x != nil {
		return x.KafkaClientId
	}
	return ""
}

// The Kafka authentication configuration.
type KafkaDownstreamConfig_Authentication struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Authentication type.
	// Example: SASL_SCRAM_SHA_256
	AuthType KafkaDownstreamConfig_Authentication_AuthType `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_Authentication_AuthType" json:"auth_type,omitempty"`
	// Username for SASL authentication.
	// Example: "kafka_user"
	Username *string `protobuf:"bytes,2,opt,name=username,proto3,oneof" json:"username,omitempty"`
	// Password for SASL authentication.
	// Example: "********"
	Password      *string `protobuf:"bytes,3,opt,name=password,proto3,oneof" json:"password,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_Authentication) Reset() {
	*x = KafkaDownstreamConfig_Authentication{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_Authentication) ProtoMessage() {}

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

func (x *KafkaDownstreamConfig_Authentication) GetAuthType() KafkaDownstreamConfig_Authentication_AuthType {
	if x != nil {
		return x.AuthType
	}
	return KafkaDownstreamConfig_Authentication_AUTH_TYPE_UNSPECIFIED
}

func (x *KafkaDownstreamConfig_Authentication) GetUsername() string {
	if x != nil && x.Username != nil {
		return *x.Username
	}
	return ""
}

func (x *KafkaDownstreamConfig_Authentication) GetPassword() string {
	if x != nil && x.Password != nil {
		return *x.Password
	}
	return ""
}

// The Kafka message format and serialization configuration.
type KafkaDownstreamConfig_DataFormat struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Output protocol for changefeed messages.
	// Example: PROTOCOL_CANAL_JSON
	Protocol KafkaDownstreamConfig_DataFormat_Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_DataFormat_Protocol" json:"protocol,omitempty"`
	// Protocol-specific configuration. Exactly one must be set based on protocol.
	//
	// Types that are valid to be assigned to Config:
	//
	//	*KafkaDownstreamConfig_DataFormat_DebeziumConfig_
	//	*KafkaDownstreamConfig_DataFormat_AvroConfig_
	Config isKafkaDownstreamConfig_DataFormat_Config `protobuf_oneof:"config"`
	// Whether to include TiDB extension fields in the output.
	// Example: true
	EnableTidbExtension bool `protobuf:"varint,6,opt,name=enable_tidb_extension,json=enableTidbExtension,proto3" json:"enable_tidb_extension,omitempty"`
	// Whether to output raw change events without transformation.
	// Example: false
	OutputRawChangeEvent bool `protobuf:"varint,7,opt,name=output_raw_change_event,json=outputRawChangeEvent,proto3" json:"output_raw_change_event,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_DataFormat) Reset() {
	*x = KafkaDownstreamConfig_DataFormat{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_DataFormat) ProtoMessage() {}

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

func (x *KafkaDownstreamConfig_DataFormat) GetProtocol() KafkaDownstreamConfig_DataFormat_Protocol {
	if x != nil {
		return x.Protocol
	}
	return KafkaDownstreamConfig_DataFormat_PROTOCOL_UNSPECIFIED
}

func (x *KafkaDownstreamConfig_DataFormat) GetConfig() isKafkaDownstreamConfig_DataFormat_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *KafkaDownstreamConfig_DataFormat) GetDebeziumConfig() *KafkaDownstreamConfig_DataFormat_DebeziumConfig {
	if x != nil {
		if x, ok := x.Config.(*KafkaDownstreamConfig_DataFormat_DebeziumConfig_); ok {
			return x.DebeziumConfig
		}
	}
	return nil
}

func (x *KafkaDownstreamConfig_DataFormat) GetAvroConfig() *KafkaDownstreamConfig_DataFormat_AvroConfig {
	if x != nil {
		if x, ok := x.Config.(*KafkaDownstreamConfig_DataFormat_AvroConfig_); ok {
			return x.AvroConfig
		}
	}
	return nil
}

func (x *KafkaDownstreamConfig_DataFormat) GetEnableTidbExtension() bool {
	if x != nil {
		return x.EnableTidbExtension
	}
	return false
}

func (x *KafkaDownstreamConfig_DataFormat) GetOutputRawChangeEvent() bool {
	if x != nil {
		return x.OutputRawChangeEvent
	}
	return false
}

type isKafkaDownstreamConfig_DataFormat_Config interface {
	isKafkaDownstreamConfig_DataFormat_Config()
}

type KafkaDownstreamConfig_DataFormat_DebeziumConfig_ struct {
	// Debezium-specific configuration.
	DebeziumConfig *KafkaDownstreamConfig_DataFormat_DebeziumConfig `protobuf:"bytes,2,opt,name=debezium_config,json=debeziumConfig,proto3,oneof"`
}

type KafkaDownstreamConfig_DataFormat_AvroConfig_ struct {
	// Avro-specific configuration.
	AvroConfig *KafkaDownstreamConfig_DataFormat_AvroConfig `protobuf:"bytes,3,opt,name=avro_config,json=avroConfig,proto3,oneof"`
}

func (*KafkaDownstreamConfig_DataFormat_DebeziumConfig_) isKafkaDownstreamConfig_DataFormat_Config() {
}

func (*KafkaDownstreamConfig_DataFormat_AvroConfig_) isKafkaDownstreamConfig_DataFormat_Config() {}

// The Kafka topic and partition configuration.
type KafkaDownstreamConfig_TopicPartitionConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// How to dispatch messages to topics.
	// Example: DISPATCH_TYPE_BY_TABLE
	DispatchType KafkaDownstreamConfig_TopicPartitionConfig_DispatchType `protobuf:"varint,1,opt,name=dispatch_type,json=dispatchType,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_TopicPartitionConfig_DispatchType" json:"dispatch_type,omitempty"`
	// Default topic name (used with DISPATCH_TYPE_ONE_TOPIC).
	// Example: "cdc-events"
	DefaultTopic string `protobuf:"bytes,2,opt,name=default_topic,json=defaultTopic,proto3" json:"default_topic,omitempty"`
	// Topic prefix (used with DISPATCH_TYPE_BY_TABLE or DISPATCH_TYPE_BY_DATABASE).
	// Example: "cdc-"
	TopicPrefix *string `protobuf:"bytes,3,opt,name=topic_prefix,json=topicPrefix,proto3,oneof" json:"topic_prefix,omitempty"`
	// Separator between prefix and table/database name.
	// Example: "."
	Separator *string `protobuf:"bytes,4,opt,name=separator,proto3,oneof" json:"separator,omitempty"`
	// Topic suffix.
	// Example: "-v1"
	TopicSuffix *string `protobuf:"bytes,5,opt,name=topic_suffix,json=topicSuffix,proto3,oneof" json:"topic_suffix,omitempty"`
	// Replication factor for auto-created topics.
	// Example: 3
	ReplicationFactor uint32 `protobuf:"varint,6,opt,name=replication_factor,json=replicationFactor,proto3" json:"replication_factor,omitempty"`
	// Number of partitions for auto-created topics.
	// Example: 6
	PartitionNum uint32 `protobuf:"varint,7,opt,name=partition_num,json=partitionNum,proto3" json:"partition_num,omitempty"`
	// Custom partition dispatcher configurations.
	PartitionDispatchers []*KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig `protobuf:"bytes,9,rep,name=partition_dispatchers,json=partitionDispatchers,proto3" json:"partition_dispatchers,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) Reset() {
	*x = KafkaDownstreamConfig_TopicPartitionConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_TopicPartitionConfig) ProtoMessage() {}

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

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetDispatchType() KafkaDownstreamConfig_TopicPartitionConfig_DispatchType {
	if x != nil {
		return x.DispatchType
	}
	return KafkaDownstreamConfig_TopicPartitionConfig_DISPATCH_TYPE_UNSPECIFIED
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetDefaultTopic() string {
	if x != nil {
		return x.DefaultTopic
	}
	return ""
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetTopicPrefix() string {
	if x != nil && x.TopicPrefix != nil {
		return *x.TopicPrefix
	}
	return ""
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetSeparator() string {
	if x != nil && x.Separator != nil {
		return *x.Separator
	}
	return ""
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetTopicSuffix() string {
	if x != nil && x.TopicSuffix != nil {
		return *x.TopicSuffix
	}
	return ""
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetReplicationFactor() uint32 {
	if x != nil {
		return x.ReplicationFactor
	}
	return 0
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetPartitionNum() uint32 {
	if x != nil {
		return x.PartitionNum
	}
	return 0
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig) GetPartitionDispatchers() []*KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig {
	if x != nil {
		return x.PartitionDispatchers
	}
	return nil
}

// The column filtering configuration for specific tables.
type KafkaDownstreamConfig_ColumnSelector struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Table name patterns to match.
	// Example: ["mydb.orders", "mydb.user_*"]
	Matcher []string `protobuf:"bytes,1,rep,name=matcher,proto3" json:"matcher,omitempty"`
	// Columns to include in the output.
	// Example: ["id", "name", "status"]
	Columns       []string `protobuf:"bytes,2,rep,name=columns,proto3" json:"columns,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_ColumnSelector) Reset() {
	*x = KafkaDownstreamConfig_ColumnSelector{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_ColumnSelector) ProtoMessage() {}

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

func (x *KafkaDownstreamConfig_ColumnSelector) GetMatcher() []string {
	if x != nil {
		return x.Matcher
	}
	return nil
}

func (x *KafkaDownstreamConfig_ColumnSelector) GetColumns() []string {
	if x != nil {
		return x.Columns
	}
	return nil
}

// The Avro-specific data format configuration.
type KafkaDownstreamConfig_DataFormat_AvroConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// How to handle decimal values.
	// Example: DECIMAL_HANDLING_MODE_PRECISE
	DecimalHandlingMode KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode `protobuf:"varint,3,opt,name=decimal_handling_mode,json=decimalHandlingMode,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode" json:"decimal_handling_mode,omitempty"`
	// How to handle BIGINT UNSIGNED values.
	// Example: BIGINT_UNSIGNED_HANDLING_MODE_STRING
	BigintUnsignedHandlingMode KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode `protobuf:"varint,4,opt,name=bigint_unsigned_handling_mode,json=bigintUnsignedHandlingMode,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode" json:"bigint_unsigned_handling_mode,omitempty"`
	// Schema Registry configuration.
	SchemaRegistry *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry `protobuf:"bytes,5,opt,name=schema_registry,json=schemaRegistry,proto3" json:"schema_registry,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig) Reset() {
	*x = KafkaDownstreamConfig_DataFormat_AvroConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_DataFormat_AvroConfig) ProtoMessage() {}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig) ProtoReflect() protoreflect.Message {
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[38]
	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 KafkaDownstreamConfig_DataFormat_AvroConfig.ProtoReflect.Descriptor instead.
func (*KafkaDownstreamConfig_DataFormat_AvroConfig) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 2, 0}
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig) GetDecimalHandlingMode() KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode {
	if x != nil {
		return x.DecimalHandlingMode
	}
	return KafkaDownstreamConfig_DataFormat_AvroConfig_DECIMAL_HANDLING_MODE_UNSPECIFIED
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig) GetBigintUnsignedHandlingMode() KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode {
	if x != nil {
		return x.BigintUnsignedHandlingMode
	}
	return KafkaDownstreamConfig_DataFormat_AvroConfig_BIGINT_UNSIGNED_HANDLING_MODE_LONG
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig) GetSchemaRegistry() *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry {
	if x != nil {
		return x.SchemaRegistry
	}
	return nil
}

// The Debezium-specific data format configuration.
type KafkaDownstreamConfig_DataFormat_DebeziumConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Whether to include the old value (before update) in the output.
	// Example: true
	OutputOldValue bool `protobuf:"varint,1,opt,name=output_old_value,json=outputOldValue,proto3" json:"output_old_value,omitempty"`
	// Whether to disable schema in the output.
	// Example: false
	DisableSchema bool `protobuf:"varint,2,opt,name=disable_schema,json=disableSchema,proto3" json:"disable_schema,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_DataFormat_DebeziumConfig) Reset() {
	*x = KafkaDownstreamConfig_DataFormat_DebeziumConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_DataFormat_DebeziumConfig) ProtoMessage() {}

func (x *KafkaDownstreamConfig_DataFormat_DebeziumConfig) ProtoReflect() protoreflect.Message {
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[39]
	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 KafkaDownstreamConfig_DataFormat_DebeziumConfig.ProtoReflect.Descriptor instead.
func (*KafkaDownstreamConfig_DataFormat_DebeziumConfig) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 2, 1}
}

func (x *KafkaDownstreamConfig_DataFormat_DebeziumConfig) GetOutputOldValue() bool {
	if x != nil {
		return x.OutputOldValue
	}
	return false
}

func (x *KafkaDownstreamConfig_DataFormat_DebeziumConfig) GetDisableSchema() bool {
	if x != nil {
		return x.DisableSchema
	}
	return false
}

// The Schema Registry connection configuration.
type KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Comma-separated list of Schema Registry endpoints.
	// Required for Confluent Schema Registry.
	// Example: "http://schema-registry:8081"
	SchemaRegistryEndpoints string `protobuf:"bytes,2,opt,name=schema_registry_endpoints,json=schemaRegistryEndpoints,proto3" json:"schema_registry_endpoints,omitempty"`
	// Whether to enable HTTP basic authentication for Schema Registry.
	// Example: true
	EnableBasicAuth bool `protobuf:"varint,3,opt,name=enable_basic_auth,json=enableBasicAuth,proto3" json:"enable_basic_auth,omitempty"`
	// Username for Schema Registry authentication.
	// Example: "schema_user"
	BasicAuthUsername string `protobuf:"bytes,4,opt,name=basic_auth_username,json=basicAuthUsername,proto3" json:"basic_auth_username,omitempty"`
	// Password for Schema Registry authentication.
	// Example: "********"
	BasicAuthPassword string `protobuf:"bytes,5,opt,name=basic_auth_password,json=basicAuthPassword,proto3" json:"basic_auth_password,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) Reset() {
	*x = KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) ProtoMessage() {}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) ProtoReflect() protoreflect.Message {
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[40]
	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 KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry.ProtoReflect.Descriptor instead.
func (*KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 2, 0, 0}
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) GetSchemaRegistryEndpoints() string {
	if x != nil {
		return x.SchemaRegistryEndpoints
	}
	return ""
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) GetEnableBasicAuth() bool {
	if x != nil {
		return x.EnableBasicAuth
	}
	return false
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) GetBasicAuthUsername() string {
	if x != nil {
		return x.BasicAuthUsername
	}
	return ""
}

func (x *KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry) GetBasicAuthPassword() string {
	if x != nil {
		return x.BasicAuthPassword
	}
	return ""
}

// The custom partition dispatcher configuration.
type KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The partition dispatch strategy.
	// Example: TABLE
	PartitionType KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher `protobuf:"varint,1,opt,name=partition_type,json=partitionType,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher" json:"partition_type,omitempty"`
	// Table matchers for this dispatcher.
	// Example: ["mydb.orders"]
	Matcher []string `protobuf:"bytes,2,rep,name=matcher,proto3" json:"matcher,omitempty"`
	// Index name (used with INDEX_VALUE dispatcher).
	// Example: "primary"
	IndexName string `protobuf:"bytes,3,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"`
	// Column names (used with COLUMNS dispatcher).
	// Example: ["user_id", "order_id"]
	Columns       []string `protobuf:"bytes,4,rep,name=columns,proto3" json:"columns,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) Reset() {
	*x = KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) ProtoMessage() {}

func (x *KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) ProtoReflect() protoreflect.Message {
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[41]
	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 KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig.ProtoReflect.Descriptor instead.
func (*KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) Descriptor() ([]byte, []int) {
	return file_openapi_v1beta2_changefeed_proto_rawDescGZIP(), []int{25, 3, 0}
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) GetPartitionType() KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher {
	if x != nil {
		return x.PartitionType
	}
	return KafkaDownstreamConfig_TopicPartitionConfig_PARTITION_DISPATCHER_UNSPECIFIED
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) GetMatcher() []string {
	if x != nil {
		return x.Matcher
	}
	return nil
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) GetIndexName() string {
	if x != nil {
		return x.IndexName
	}
	return ""
}

func (x *KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig) GetColumns() []string {
	if x != nil {
		return x.Columns
	}
	return nil
}

// The S3 endpoint configuration.
type S3DownstreamConfig_Endpoint struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// S3 bucket URI.
	// Example: "s3://my-bucket/cdc-data/"
	S3Uri string `protobuf:"bytes,1,opt,name=s3_uri,json=s3Uri,proto3" json:"s3_uri,omitempty"`
	// Authentication type.
	// Example: S3_AUTH_TYPE_AK_SK
	AuthType S3DownstreamConfig_Endpoint_S3AuthType `protobuf:"varint,4,opt,name=auth_type,json=authType,proto3,enum=openapi.v1beta2.S3DownstreamConfig_Endpoint_S3AuthType" json:"auth_type,omitempty"`
	// Access key ID. Required for AK/SK authentication.
	// Example: "AKIAIOSFODNN7EXAMPLE"
	AccessKey string `protobuf:"bytes,2,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"`
	// Secret access key. Required for AK/SK authentication.
	// Example: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
	SecretKey string `protobuf:"bytes,3,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"`
	// IAM assumed role ARN. Required for Assume Role authentication.
	// Example: "arn:aws:iam::123456789012:role/CDCS3AccessRole"
	IamAssumedRoleArn string `protobuf:"bytes,5,opt,name=iam_assumed_role_arn,json=iamAssumedRoleArn,proto3" json:"iam_assumed_role_arn,omitempty"`
	// Custom S3-compatible endpoint. Required for Alibaba OSS.
	// Example: "https://s3.oss-us-east-1.aliyuncs.com"
	CustomEndpoint string `protobuf:"bytes,6,opt,name=custom_endpoint,json=customEndpoint,proto3" json:"custom_endpoint,omitempty"`
	// Object storage provider.
	// Example: AWS
	Provider      S3DownstreamConfig_Endpoint_Provider `protobuf:"varint,7,opt,name=provider,proto3,enum=openapi.v1beta2.S3DownstreamConfig_Endpoint_Provider" json:"provider,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *S3DownstreamConfig_Endpoint) Reset() {
	*x = S3DownstreamConfig_Endpoint{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*S3DownstreamConfig_Endpoint) ProtoMessage() {}

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

func (x *S3DownstreamConfig_Endpoint) GetS3Uri() string {
	if x != nil {
		return x.S3Uri
	}
	return ""
}

func (x *S3DownstreamConfig_Endpoint) GetAuthType() S3DownstreamConfig_Endpoint_S3AuthType {
	if x != nil {
		return x.AuthType
	}
	return S3DownstreamConfig_Endpoint_S3_AUTH_TYPE_UNSPECIFIED
}

func (x *S3DownstreamConfig_Endpoint) GetAccessKey() string {
	if x != nil {
		return x.AccessKey
	}
	return ""
}

func (x *S3DownstreamConfig_Endpoint) GetSecretKey() string {
	if x != nil {
		return x.SecretKey
	}
	return ""
}

func (x *S3DownstreamConfig_Endpoint) GetIamAssumedRoleArn() string {
	if x != nil {
		return x.IamAssumedRoleArn
	}
	return ""
}

func (x *S3DownstreamConfig_Endpoint) GetCustomEndpoint() string {
	if x != nil {
		return x.CustomEndpoint
	}
	return ""
}

func (x *S3DownstreamConfig_Endpoint) GetProvider() S3DownstreamConfig_Endpoint_Provider {
	if x != nil {
		return x.Provider
	}
	return S3DownstreamConfig_Endpoint_PROVIDER_UNSPECIFIED
}

// The GCS endpoint configuration.
type GcsDownstreamConfig_Endpoint struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// GCS bucket URI.
	// Example: "gs://my-bucket/cdc-data"
	GcsUri        string `protobuf:"bytes,1,opt,name=gcs_uri,json=gcsUri,proto3" json:"gcs_uri,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GcsDownstreamConfig_Endpoint) Reset() {
	*x = GcsDownstreamConfig_Endpoint{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GcsDownstreamConfig_Endpoint) ProtoMessage() {}

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

func (x *GcsDownstreamConfig_Endpoint) GetGcsUri() string {
	if x != nil {
		return x.GcsUri
	}
	return ""
}

// The Pulsar authentication configuration.
type PulsarDownstreamConfig_Authentication struct {
	state         protoimpl.MessageState                         `protogen:"open.v1"`
	AuthType      PulsarDownstreamConfig_Authentication_AuthType `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=openapi.v1beta2.PulsarDownstreamConfig_Authentication_AuthType" json:"auth_type,omitempty"`
	Username      string                                         `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
	Password      string                                         `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
	Token         string                                         `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PulsarDownstreamConfig_Authentication) Reset() {
	*x = PulsarDownstreamConfig_Authentication{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PulsarDownstreamConfig_Authentication) ProtoMessage() {}

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

func (x *PulsarDownstreamConfig_Authentication) GetAuthType() PulsarDownstreamConfig_Authentication_AuthType {
	if x != nil {
		return x.AuthType
	}
	return PulsarDownstreamConfig_Authentication_AUTH_TYPE_UNSPECIFIED
}

func (x *PulsarDownstreamConfig_Authentication) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *PulsarDownstreamConfig_Authentication) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *PulsarDownstreamConfig_Authentication) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

// The Pulsar event format.
type PulsarDownstreamConfig_DataFormat struct {
	state               protoimpl.MessageState                     `protogen:"open.v1"`
	Protocol            PulsarDownstreamConfig_DataFormat_Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=openapi.v1beta2.PulsarDownstreamConfig_DataFormat_Protocol" json:"protocol,omitempty"`
	EnableTidbExtension bool                                       `protobuf:"varint,2,opt,name=enable_tidb_extension,json=enableTidbExtension,proto3" json:"enable_tidb_extension,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *PulsarDownstreamConfig_DataFormat) Reset() {
	*x = PulsarDownstreamConfig_DataFormat{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PulsarDownstreamConfig_DataFormat) ProtoMessage() {}

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

func (x *PulsarDownstreamConfig_DataFormat) GetProtocol() PulsarDownstreamConfig_DataFormat_Protocol {
	if x != nil {
		return x.Protocol
	}
	return PulsarDownstreamConfig_DataFormat_PROTOCOL_UNSPECIFIED
}

func (x *PulsarDownstreamConfig_DataFormat) GetEnableTidbExtension() bool {
	if x != nil {
		return x.EnableTidbExtension
	}
	return false
}

// The Pulsar topic distribution configuration.
type PulsarDownstreamConfig_TopicDistribution struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	Tenant    string                 `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
	Namespace string                 `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
	// Required only when dispatch_type is DISPATCH_TYPE_ONE_TOPIC.
	DefaultTopic  string                                                  `protobuf:"bytes,3,opt,name=default_topic,json=defaultTopic,proto3" json:"default_topic,omitempty"`
	DispatchType  KafkaDownstreamConfig_TopicPartitionConfig_DispatchType `protobuf:"varint,4,opt,name=dispatch_type,json=dispatchType,proto3,enum=openapi.v1beta2.KafkaDownstreamConfig_TopicPartitionConfig_DispatchType" json:"dispatch_type,omitempty"`
	TopicPrefix   string                                                  `protobuf:"bytes,5,opt,name=topic_prefix,json=topicPrefix,proto3" json:"topic_prefix,omitempty"`
	Separator     string                                                  `protobuf:"bytes,6,opt,name=separator,proto3" json:"separator,omitempty"`
	TopicSuffix   string                                                  `protobuf:"bytes,7,opt,name=topic_suffix,json=topicSuffix,proto3" json:"topic_suffix,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PulsarDownstreamConfig_TopicDistribution) Reset() {
	*x = PulsarDownstreamConfig_TopicDistribution{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PulsarDownstreamConfig_TopicDistribution) ProtoMessage() {}

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

func (x *PulsarDownstreamConfig_TopicDistribution) GetTenant() string {
	if x != nil {
		return x.Tenant
	}
	return ""
}

func (x *PulsarDownstreamConfig_TopicDistribution) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *PulsarDownstreamConfig_TopicDistribution) GetDefaultTopic() string {
	if x != nil {
		return x.DefaultTopic
	}
	return ""
}

func (x *PulsarDownstreamConfig_TopicDistribution) GetDispatchType() KafkaDownstreamConfig_TopicPartitionConfig_DispatchType {
	if x != nil {
		return x.DispatchType
	}
	return KafkaDownstreamConfig_TopicPartitionConfig_DISPATCH_TYPE_UNSPECIFIED
}

func (x *PulsarDownstreamConfig_TopicDistribution) GetTopicPrefix() string {
	if x != nil {
		return x.TopicPrefix
	}
	return ""
}

func (x *PulsarDownstreamConfig_TopicDistribution) GetSeparator() string {
	if x != nil {
		return x.Separator
	}
	return ""
}

func (x *PulsarDownstreamConfig_TopicDistribution) GetTopicSuffix() string {
	if x != nil {
		return x.TopicSuffix
	}
	return ""
}

// The Pulsar client tuning configuration.
type PulsarDownstreamConfig_AdvancedSetting struct {
	state                   protoimpl.MessageState `protogen:"open.v1"`
	BatchingMaxMessages     uint32                 `protobuf:"varint,1,opt,name=batching_max_messages,json=batchingMaxMessages,proto3" json:"batching_max_messages,omitempty"`
	BatchingMaxPublishDelay uint32                 `protobuf:"varint,2,opt,name=batching_max_publish_delay,json=batchingMaxPublishDelay,proto3" json:"batching_max_publish_delay,omitempty"`
	ConnectionTimeout       uint32                 `protobuf:"varint,3,opt,name=connection_timeout,json=connectionTimeout,proto3" json:"connection_timeout,omitempty"`
	OperationTimeout        uint32                 `protobuf:"varint,4,opt,name=operation_timeout,json=operationTimeout,proto3" json:"operation_timeout,omitempty"`
	SendTimeout             uint32                 `protobuf:"varint,5,opt,name=send_timeout,json=sendTimeout,proto3" json:"send_timeout,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

func (x *PulsarDownstreamConfig_AdvancedSetting) Reset() {
	*x = PulsarDownstreamConfig_AdvancedSetting{}
	mi := &file_openapi_v1beta2_changefeed_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PulsarDownstreamConfig_AdvancedSetting) ProtoMessage() {}

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

func (x *PulsarDownstreamConfig_AdvancedSetting) GetBatchingMaxMessages() uint32 {
	if x != nil {
		return x.BatchingMaxMessages
	}
	return 0
}

func (x *PulsarDownstreamConfig_AdvancedSetting) GetBatchingMaxPublishDelay() uint32 {
	if x != nil {
		return x.BatchingMaxPublishDelay
	}
	return 0
}

func (x *PulsarDownstreamConfig_AdvancedSetting) GetConnectionTimeout() uint32 {
	if x != nil {
		return x.ConnectionTimeout
	}
	return 0
}

func (x *PulsarDownstreamConfig_AdvancedSetting) GetOperationTimeout() uint32 {
	if x != nil {
		return x.OperationTimeout
	}
	return 0
}

func (x *PulsarDownstreamConfig_AdvancedSetting) GetSendTimeout() uint32 {
	if x != nil {
		return x.SendTimeout
	}
	return 0
}

var File_openapi_v1beta2_changefeed_proto protoreflect.FileDescriptor

const file_openapi_v1beta2_changefeed_proto_rawDesc = "" +
	"\n" +
	" openapi/v1beta2/changefeed.proto\x12\x0fopenapi.v1beta2\x1a\x1bbuf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a\x17validate/validate.proto\"\x9d\x06\n" +
	"\x16ListChangefeedsRequest\x12s\n" +
	"\atidb_id\x18\x01 \x01(\tBZ\x92AG24The ID of the TiDB instance to list changefeeds for.J\x0f\"1234567890123\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06tidbId\x12\xea\x02\n" +
	"\x0fdownstream_type\x18\x02 \x01(\x0e2\x1f.openapi.v1beta2.DownstreamTypeB\x9a\x02\x92A\x83\x022\xf7\x01The downstream type to filter by. When not specified, returns all types.\n" +
	"\n" +
	"- `\"KAFKA\"`: Apache Kafka\n" +
	"\n" +
	"- `\"MYSQL\"`: MySQL-compatible database\n" +
	"\n" +
	"- `\"S3\"`: Amazon S3 or S3-compatible storage\n" +
	"\n" +
	"- `\"GCS\"`: Google Cloud Storage\n" +
	"\n" +
	"- `\"PULSAR\"`: Apache PulsarJ\a\"KAFKA\"\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x0edownstreamType\x88\x01\x01\x12\x8b\x01\n" +
	"\tpage_size\x18d \x01(\x05Bn\x92A]2EThe maximum number of changefeeds to return. The default value is 20.J\x0220Y\x00\x00\x00\x00\x00\x00Y@i\x00\x00\x00\x00\x00\x00\xf0?\xe0A\x01\xfaB\b\x1a\x06\x18d(\x01@\x01R\bpageSize\x12\x7f\n" +
	"\n" +
	"page_token\x18e \x01(\tB`\x92AZ2XThe page token from a previous ListChangefeeds response, used to retrieve the next page.\xe0A\x01R\tpageTokenB\x12\n" +
	"\x10_downstream_type\"\x85\x03\n" +
	"\x17ListChangefeedsResponse\x12r\n" +
	"\vchangefeeds\x18\x01 \x03(\v2\x1b.openapi.v1beta2.ChangefeedB3\x92A-2+The list of changefeeds matching the query.\xe0A\x03R\vchangefeeds\x12\\\n" +
	"\n" +
	"total_size\x18\x02 \x01(\x05B=\x92A721The total number of changefeeds across all pages.J\x0242\xe0A\x03R\ttotalSize\x12\x97\x01\n" +
	"\x0fnext_page_token\x18\x03 \x01(\tBo\x92Ai2SThe page token for the next page. This field is empty when there are no more pages.J\x12\"eyJpZCI6Njc4OTB9\"\xe0A\x03R\rnextPageToken\"\x89\x1f\n" +
	"\n" +
	"Changefeed\x12]\n" +
	"\x02id\x18\x01 \x01(\tBM\x92AD29The system-generated unique identifier of the changefeed.J\a\"67890\"\xe0A\x03\xe0A\x05R\x02id\x12e\n" +
	"\atidb_id\x18\x02 \x01(\tBL\x92A62#The ID of the source TiDB instance.J\x0f\"1234567890123\"\xe0A\x02\xe0A\x05\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06tidbId\x12\x96\x01\n" +
	"\x04name\x18\x03 \x01(\tB\x81\x01\x92Ak2RThe user-defined name for the changefeed. Must be unique within the TiDB instance.J\x15\"my-kafka-changefeed\"\xe0A\x02\xfaB\ar\x05\x10\x01\x18\x80\x01\xbaH\x03\xc8\x01\x01R\x04name\x12\xc4\x01\n" +
	"\fnetwork_info\x18\x04 \x01(\v2\x1c.openapi.v1beta2.NetworkInfoB~\x92Au2sThe network configuration for connecting to the downstream. Required for Kafka, MySQL, and Pulsar downstream types.\xe0A\x01\xe0A\x05H\x01R\vnetworkInfo\x88\x01\x01\x12x\n" +
	"\x05state\x18\x05 \x01(\x0e2!.openapi.v1beta2.Changefeed.StateB?\x92A12$The current state of the changefeed.J\t\"RUNNING\"\xe0A\x03\xfaB\x05\x82\x01\x02\x10\x01R\x05state\x12\x81\x01\n" +
	"\vcreate_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampBD\x92A>2$The creation time of the changefeed.J\x16\"2026-06-08T10:30:00Z\"\xe0A\x03R\n" +
	"createTime\x12\xa3\x01\n" +
	"\x0echeckpoint_tso\x18\a \x01(\x04B|\x92Av2^The checkpoint TSO of the changefeed, representing the last successfully replicated timestamp.J\x14\"452348901234567890\"\xe0A\x03R\rcheckpointTso\x12\x9b\x01\n" +
	"\rcheckpoint_ts\x18\b \x01(\v2\x1a.google.protobuf.TimestampBZ\x92AT2:The human-readable checkpoint timestamp of the changefeed.J\x16\"2026-06-08T10:35:00Z\"\xe0A\x03R\fcheckpointTs\x12\xc2\x01\n" +
	"\x13changefeed_capacity\x18\t \x01(\tB\x90\x01\x92A}2sThe changefeed capacity (CCU) of the changefeed. Call ListChangefeedCapacityUnits to get the available CCU options.J\x06\"4ccu\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x12changefeedCapacity\x12\x84\x03\n" +
	"\x0fdownstream_type\x18\n" +
	" \x01(\x0e2\x1f.openapi.v1beta2.DownstreamTypeB\xb9\x02\x92A\x9c\x022\x90\x02The downstream type for a changefeed. When a downstream type is specified, the corresponding configuration field is required. Cannot be changed after creation.\n" +
	"\n" +
	"- `\"KAFKA\"`: Apache Kafka\n" +
	"\n" +
	"- `\"MYSQL\"`: MySQL-compatible database\n" +
	"\n" +
	"- `\"S3\"`: Amazon S3 or S3-compatible storageJ\a\"KAFKA\"\xe0A\x02\xe0A\x05\xfaB\x05\x82\x01\x02\x10\x01\xbaH\b\xc8\x01\x01\x82\x01\x02\x10\x01R\x0edownstreamType\x12\xc7\x01\n" +
	"\ftable_config\x18\x11 \x01(\v2\x1c.openapi.v1beta2.TableConfigB\x85\x01\x92Ay2wThe table filtering and event filter configuration. This field is editable only when the changefeed is in PAUSED state.\xe0A\x02\xbaH\x03\xc8\x01\x01R\vtableConfig\x12\xa5\x01\n" +
	"\x0estart_position\x18\x12 \x01(\v2\x1e.openapi.v1beta2.StartPositionB^\x92AO2MThe start position configuration. This field can only be set during creation.\xe0A\x02\xe0A\x05\xbaH\x03\xc8\x01\x01R\rstartPosition\x12h\n" +
	"\x05kafka\x18\v \x01(\v2&.openapi.v1beta2.KafkaDownstreamConfigB(\x92A%2#The Kafka downstream configuration.H\x00R\x05kafka\x12h\n" +
	"\x05mysql\x18\f \x01(\v2&.openapi.v1beta2.MySQLDownstreamConfigB(\x92A%2#The MySQL downstream configuration.H\x00R\x05mysql\x12\\\n" +
	"\x02s3\x18\r \x01(\v2#.openapi.v1beta2.S3DownstreamConfigB%\x92A\"2 The S3 downstream configuration.H\x00R\x02s3\x128\n" +
	"\x03gcs\x18\x0e \x01(\v2$.openapi.v1beta2.GcsDownstreamConfigH\x00R\x03gcs\x12A\n" +
	"\x06pulsar\x18\x14 \x01(\v2'.openapi.v1beta2.PulsarDownstreamConfigH\x00R\x06pulsar\x12\xa4\x01\n" +
	"\x05error\x18\x10 \x01(\tB\x8d\x01\x92A\x86\x012eThe error message when the changefeed is in the FAILED or ERROR state. This field is empty otherwise.J\x1d\"kafka: broker not available\"\xe0A\x03R\x05error\"\xb9\x01\n" +
	"\x05State\x12\x15\n" +
	"\x11STATE_UNSPECIFIED\x10\x00\x12\v\n" +
	"\aRUNNING\x10\x01\x12\n" +
	"\n" +
	"\x06FAILED\x10\x02\x12\t\n" +
	"\x05ERROR\x10\x03\x12\f\n" +
	"\bCREATING\x10\x04\x12\v\n" +
	"\aPAUSING\x10\x05\x12\n" +
	"\n" +
	"\x06PAUSED\x10\x06\x12\f\n" +
	"\bDELETING\x10\a\x12\v\n" +
	"\aDELETED\x10\b\x12\v\n" +
	"\aEDITING\x10\t\x12\v\n" +
	"\aWARNING\x10\n" +
	"\x12\v\n" +
	"\aSCALING\x10\v\x12\f\n" +
	"\bRESUMING\x10\f:\xf3\a\xeaAV\n" +
	"!dataflow.tidbcloud.com/Changefeed\x12\x18changefeeds/{changefeed}*\vchangefeeds2\n" +
	"changefeed\xbaH\x96\a\x1a\xd5\x02\n" +
	")changefeed.downstream_config.matches_type\x123downstream configuration must match downstream_type\x1a\xf2\x01(this.downstream_type == 1 && has(this.kafka)) || (this.downstream_type == 3 && has(this.mysql)) || (this.downstream_type == 5 && has(this.s3)) || (this.downstream_type == 6 && has(this.gcs)) || (this.downstream_type == 7 && has(this.pulsar))\x1a\xa4\x02\n" +
	"!changefeed.kafka.broker_endpoints\x12Ekafka broker_endpoints is required for public or VPC peering networks\x1a\xb7\x01this.downstream_type != 1 || (has(this.network_info) && this.network_info.network_type == 3) || (has(this.kafka) && has(this.kafka.broker) && this.kafka.broker.broker_endpoints != '')\x1a\x94\x02\n" +
	"\x19changefeed.mysql.endpoint\x12=MySQL endpoint is required for public or VPC peering networks\x1a\xb7\x01this.downstream_type != 3 || (has(this.network_info) && this.network_info.network_type == 3) || (has(this.mysql) && has(this.mysql.connection) && this.mysql.connection.endpoint != '')B\x13\n" +
	"\x11downstream_configB\x0f\n" +
	"\r_network_infoJ\x04\b\x0f\x10\x10J\x04\b\x13\x10\x14R\n" +
	"azure_blobR\x0fserverless_tidb\"\x92\x02\n" +
	"\x14GetChangefeedRequest\x12h\n" +
	"\rchangefeed_id\x18\x01 \x01(\tBC\x92A02%The ID of the changefeed to retrieve.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\x12\x8f\x01\n" +
	"\x10invalidate_cache\x18\x02 \x01(\bBd\x92A^2VIndicates whether to bypass the cache and return the real-time checkpoint information.J\x04true\xe0A\x01R\x0finvalidateCache\"\x7f\n" +
	"\x16PauseChangefeedRequest\x12e\n" +
	"\rchangefeed_id\x18\x01 \x01(\tB@\x92A-2\"The ID of the changefeed to pause.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\"\x81\x01\n" +
	"\x17ResumeChangefeedRequest\x12f\n" +
	"\rchangefeed_id\x18\x01 \x01(\tBA\x92A.2#The ID of the changefeed to resume.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\"\x8f\x01\n" +
	"\x16GetEventFiltersRequest\x12u\n" +
	"\rchangefeed_id\x18\x01 \x01(\tBP\x92A=22The ID of the changefeed to get event filters for.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\"u\n" +
	"\fEventFilters\x12e\n" +
	"\revent_filters\x18\x01 \x03(\v2\x1c.openapi.v1beta2.EventFilterB\"\x92A\x1c2\x1aThe list of event filters.\xe0A\x03R\feventFilters\"\x88\x01\n" +
	"\x17SetEventFiltersResponse\x12m\n" +
	"\revent_filters\x18\x01 \x03(\v2\x1c.openapi.v1beta2.EventFilterB*\x92A$2\"The updated list of event filters.\xe0A\x03R\feventFilters\"\xb9\x10\n" +
	"\vEventFilter\x12\xf2\x01\n" +
	"\x0etable_matchers\x18\x01 \x03(\tB\xca\x01\x92A\xc3\x012\xa0\x01The table name patterns to match. Uses the same syntax as TiCDC table filter. Supports wildcards. Matches database name, so be careful with database-level DDLs.J\x1e[\"mydb.orders\", \"mydb.user_*\"]\xe0A\x01R\rtableMatchers\x12\x9b\x03\n" +
	"\x0eignored_events\x18\x02 \x03(\tB\xf3\x02\x92A\xec\x022\xc4\x02The event types to ignore. Supported values include DML events such as `insert`, `update`, `delete`, and `all dml`, and DDL events such as `create schema`, `drop table`, `alter table`, and `all ddl`. For the complete list of supported values, see [Changefeed Log Filters](https://docs.pingcap.com/tidb/stable/ticdc-filter/).J#[\"insert\", \"delete\", \"alter table\"]\xe0A\x01R\rignoredEvents\x12\xbb\x01\n" +
	"\x16ignored_sql_statements\x18\x03 \x03(\tB\x84\x01\x92A~2cThe SQL statement patterns to ignore. Only applies to DDL statements. Supports regular expressions.J\x17[\"^drop\", \"add column\"]\xe0A\x01R\x14ignoredSqlStatements\x12\xac\x02\n" +
	"\x1fignored_insert_value_expression\x18\x04 \x01(\tB\xe4\x01\x92A\xdd\x012\xc4\x01The SQL expression to filter INSERT events by column value. Uses SQL expressions in default SQL mode. All tables matched by `table_matchers` must contain all columns referenced in this expression.J\x14\"status = 'deleted'\"\xe0A\x01R\x1cignoredInsertValueExpression\x12\xbc\x02\n" +
	"#ignored_update_old_value_expression\x18\x05 \x01(\tB\xed\x01\x92A\xe6\x012\xcc\x01The SQL expression to filter UPDATE events by the old column value. Uses SQL expressions in default SQL mode. All tables matched by `table_matchers` must contain all columns referenced in this expression.J\x15\"status = 'archived'\"\xe0A\x01R\x1fignoredUpdateOldValueExpression\x12\xbb\x02\n" +
	"#ignored_update_new_value_expression\x18\x06 \x01(\tB\xec\x01\x92A\xe5\x012\xcc\x01The SQL expression to filter UPDATE events by the new column value. Uses SQL expressions in default SQL mode. All tables matched by `table_matchers` must contain all columns referenced in this expression.J\x14\"status = 'deleted'\"\xe0A\x01R\x1fignoredUpdateNewValueExpression\x12\xac\x02\n" +
	"\x1fignored_delete_value_expression\x18\a \x01(\tB\xe4\x01\x92A\xdd\x012\xc4\x01The SQL expression to filter DELETE events by column value. Uses SQL expressions in default SQL mode. All tables matched by `table_matchers` must contain all columns referenced in this expression.J\x14\"soft_delete = true\"\xe0A\x01R\x1cignoredDeleteValueExpression\"\xcb\x02\n" +
	"\x16SetEventFiltersRequest\x12u\n" +
	"\rchangefeed_id\x18\x01 \x01(\tBP\x92A=22The ID of the changefeed to set event filters for.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\x12\x92\x01\n" +
	"\revent_filters\x18\x02 \x03(\v2\x1c.openapi.v1beta2.EventFilterBO\x92AA2?The event filters to apply. Replaces existing filters entirely.\xe0A\x02\xfaB\x05\x92\x01\x02\b\x01R\feventFilters:%\x92A\"\n" +
	" \xd2\x01\rchangefeed_id\xd2\x01\revent_filters\"\xb7\x12\n" +
	"\x17CreateChangefeedRequest\x12\x85\x01\n" +
	"\n" +
	"changefeed\x18\x01 \x01(\v2\x1b.openapi.v1beta2.ChangefeedBH\x92A<2:The changefeed to create. All required fields must be set.\xe0A\x02\xbaH\x03\xc8\x01\x01R\n" +
	"changefeed\x12x\n" +
	"\adry_run\x18\x02 \x01(\bB_\x92AY2QIndicates whether to run dry-run validation only without creating the changefeed.J\x04true\xe0A\x01R\x06dryRun:\x99\x10\x92A\x0f\n" +
	"\r\xd2\x01\n" +
	"changefeed\xbaH\x83\x10\x1a\x9b\x02\n" +
	" changefeed.create.mysql.password\x12;MySQL password is required when creating a MySQL changefeed\x1a\xb9\x01!has(this.changefeed) || this.changefeed.downstream_type != 3 || (has(this.changefeed.mysql) && has(this.changefeed.mysql.connection) && this.changefeed.mysql.connection.password != '')\x1a\xe8\x02\n" +
	" changefeed.create.kafka.password\x129Kafka password is required when authentication is enabled\x1a\x88\x02!has(this.changefeed) || !has(this.changefeed.kafka) || !has(this.changefeed.kafka.authentication) || this.changefeed.kafka.authentication.auth_type == 1 || (has(this.changefeed.kafka.authentication.password) && this.changefeed.kafka.authentication.password != '')\x1a\x86\x04\n" +
	"*changefeed.create.schema_registry.password\x12ISchema Registry password is required when basic authentication is enabled\x1a\x8c\x03!has(this.changefeed) || !has(this.changefeed.kafka) || !has(this.changefeed.kafka.data_format) || !has(this.changefeed.kafka.data_format.avro_config) || !has(this.changefeed.kafka.data_format.avro_config.schema_registry) || !this.changefeed.kafka.data_format.avro_config.schema_registry.enable_basic_auth || this.changefeed.kafka.data_format.avro_config.schema_registry.basic_auth_password != ''\x1a\x91\x02\n" +
	"\x1fchangefeed.create.s3.secret_key\x127S3 secret key is required for access key authentication\x1a\xb4\x01!has(this.changefeed) || !has(this.changefeed.s3) || !has(this.changefeed.s3.endpoint) || this.changefeed.s3.endpoint.auth_type != 1 || this.changefeed.s3.endpoint.secret_key != ''\x1a\xb0\x02\n" +
	"!changefeed.create.pulsar.password\x124Pulsar password is required for basic authentication\x1a\xd4\x01!has(this.changefeed) || !has(this.changefeed.pulsar) || !has(this.changefeed.pulsar.authentication) || this.changefeed.pulsar.authentication.auth_type != 1 || this.changefeed.pulsar.authentication.password != ''\x1a\xa7\x02\n" +
	"\x1echangefeed.create.pulsar.token\x121Pulsar token is required for token authentication\x1a\xd1\x01!has(this.changefeed) || !has(this.changefeed.pulsar) || !has(this.changefeed.pulsar.authentication) || this.changefeed.pulsar.authentication.auth_type != 2 || this.changefeed.pulsar.authentication.token != ''\"\x93\r\n" +
	"%EditChangefeedDownstreamConfigRequest\x12f\n" +
	"\rchangefeed_id\x18\x01 \x01(\tBA\x92A.2#The ID of the changefeed to update.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\x12t\n" +
	"\adry_run\x18\x02 \x01(\bB[\x92AU2MIndicates whether to run dry-run validation only without applying the update.J\x04true\xe0A\x01R\x06dryRun\x12\x84\x01\n" +
	"\ftable_config\x18\x03 \x01(\v2\x1c.openapi.v1beta2.TableConfigBC\x92A=2;The updated table filtering and event filter configuration.\xe0A\x01R\vtableConfig\x12\xd4\x01\n" +
	"\x0fdownstream_type\x18\x04 \x01(\x0e2\x1f.openapi.v1beta2.DownstreamTypeB\x89\x01\x92Am2bThe downstream type for a changefeed. Must match the existing downstream type (cannot be changed).J\a\"KAFKA\"\xe0A\x02\xe0A\x05\xfaB\x05\x82\x01\x02\x10\x01\xbaH\b\xc8\x01\x01\x82\x01\x02\x10\x01R\x0edownstreamType\x12p\n" +
	"\x05kafka\x18\v \x01(\v2&.openapi.v1beta2.KafkaDownstreamConfigB0\x92A-2+The updated Kafka downstream configuration.H\x00R\x05kafka\x12p\n" +
	"\x05mysql\x18\f \x01(\v2&.openapi.v1beta2.MySQLDownstreamConfigB0\x92A-2+The updated MySQL downstream configuration.H\x00R\x05mysql\x12d\n" +
	"\x02s3\x18\r \x01(\v2#.openapi.v1beta2.S3DownstreamConfigB-\x92A*2(The updated S3 downstream configuration.H\x00R\x02s3\x12h\n" +
	"\x03gcs\x18\x0e \x01(\v2$.openapi.v1beta2.GcsDownstreamConfigB.\x92A+2)The updated GCS downstream configuration.H\x00R\x03gcs\x12A\n" +
	"\x06pulsar\x18\x14 \x01(\v2'.openapi.v1beta2.PulsarDownstreamConfigH\x00R\x06pulsar:\xf8\x03\x92A$\n" +
	"\"\xd2\x01\rchangefeed_id\xd2\x01\x0fdownstream_type\xbaH\xcd\x03\x1a\xca\x03\n" +
	".changefeed.edit.downstream_config.matches_type\x12Adownstream configuration must be omitted or match downstream_type\x1a\xd4\x02(!has(this.kafka) && !has(this.mysql) && !has(this.s3) && !has(this.gcs) && !has(this.pulsar)) || (this.downstream_type == 1 && has(this.kafka)) || (this.downstream_type == 3 && has(this.mysql)) || (this.downstream_type == 5 && has(this.s3)) || (this.downstream_type == 6 && has(this.gcs)) || (this.downstream_type == 7 && has(this.pulsar))B\x13\n" +
	"\x11downstream_configJ\x04\b\x0f\x10\x10J\x04\b\x13\x10\x14R\n" +
	"azure_blobR\x0fserverless_tidb\"\x81\x01\n" +
	"\x17DeleteChangefeedRequest\x12f\n" +
	"\rchangefeed_id\x18\x01 \x01(\tBA\x92A.2#The ID of the changefeed to delete.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\"\xf2\x02\n" +
	"\x16ScaleChangefeedRequest\x12e\n" +
	"\rchangefeed_id\x18\x01 \x01(\tB@\x92A-2\"The ID of the changefeed to scale.J\a\"67890\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fchangefeedId\x12\xc3\x01\n" +
	"\x13changefeed_capacity\x18\x02 \x01(\tB\x91\x01\x92A~2tThe target changefeed capacity (CCU) to scale to. Call ListChangefeedCapacityUnits to get the available CCU options.J\x06\"8ccu\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x12changefeedCapacity:+\x92A(\n" +
	"&\xd2\x01\rchangefeed_id\xd2\x01\x13changefeed_capacity\"\x8b\x1d\n" +
	"\x15TestConnectionRequest\x12s\n" +
	"\atidb_id\x18\x01 \x01(\tBZ\x92AG24The source TiDB instance ID to test connection from.J\x0f\"1234567890123\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06tidbId\x12\xc1\x01\n" +
	"\fnetwork_info\x18\x02 \x01(\v2\x1c.openapi.v1beta2.NetworkInfoB{\x92Au2sThe network configuration for connecting to the downstream. Required for Kafka, MySQL, and Pulsar downstream types.\xe0A\x01H\x01R\vnetworkInfo\x88\x01\x01\x12\x8a\x01\n" +
	"\x0fdownstream_type\x18\x03 \x01(\x0e2\x1f.openapi.v1beta2.DownstreamTypeB@\x92A'2\x1cThe downstream type to test.J\a\"KAFKA\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\b\xc8\x01\x01\x82\x01\x02\x10\x01R\x0edownstreamType\x12e\n" +
	"\x05kafka\x18\n" +
	" \x01(\v2&.openapi.v1beta2.KafkaDownstreamConfigB%\x92A\"2 The Kafka configuration to test.H\x00R\x05kafka\x12e\n" +
	"\x05mysql\x18\v \x01(\v2&.openapi.v1beta2.MySQLDownstreamConfigB%\x92A\"2 The MySQL configuration to test.H\x00R\x05mysql\x12Y\n" +
	"\x02s3\x18\f \x01(\v2#.openapi.v1beta2.S3DownstreamConfigB\"\x92A\x1f2\x1dThe S3 configuration to test.H\x00R\x02s3\x12]\n" +
	"\x03gcs\x18\r \x01(\v2$.openapi.v1beta2.GcsDownstreamConfigB#\x92A 2\x1eThe GCS configuration to test.H\x00R\x03gcs\x12p\n" +
	"\x06pulsar\x18\x10 \x01(\v2'.openapi.v1beta2.PulsarDownstreamConfigB-\x92A*2(The Apache Pulsar configuration to test.H\x00R\x06pulsar:\xe2\x14\x92A\x1e\n" +
	"\x1c\xd2\x01\atidb_id\xd2\x01\x0fdownstream_type\xbaH\xbd\x14\x1a\xe5\x02\n" +
	"9changefeed.test_connection.downstream_config.matches_type\x123downstream configuration must match downstream_type\x1a\xf2\x01(this.downstream_type == 1 && has(this.kafka)) || (this.downstream_type == 3 && has(this.mysql)) || (this.downstream_type == 5 && has(this.s3)) || (this.downstream_type == 6 && has(this.gcs)) || (this.downstream_type == 7 && has(this.pulsar))\x1a\xb4\x02\n" +
	"1changefeed.test_connection.kafka.broker_endpoints\x12Ekafka broker_endpoints is required for public or VPC peering networks\x1a\xb7\x01this.downstream_type != 1 || (has(this.network_info) && this.network_info.network_type == 3) || (has(this.kafka) && has(this.kafka.broker) && this.kafka.broker.broker_endpoints != '')\x1a\xa4\x02\n" +
	")changefeed.test_connection.mysql.endpoint\x12=MySQL endpoint is required for public or VPC peering networks\x1a\xb7\x01this.downstream_type != 3 || (has(this.network_info) && this.network_info.network_type == 3) || (has(this.mysql) && has(this.mysql.connection) && this.mysql.connection.endpoint != '')\x1a\xdd\x01\n" +
	")changefeed.test_connection.mysql.password\x12:MySQL password is required when testing a MySQL connection\x1atthis.downstream_type != 3 || (has(this.mysql) && has(this.mysql.connection) && this.mysql.connection.password != '')\x1a\xa1\x02\n" +
	")changefeed.test_connection.kafka.password\x129Kafka password is required when authentication is enabled\x1a\xb8\x01!has(this.kafka) || !has(this.kafka.authentication) || this.kafka.authentication.auth_type == 1 || (has(this.kafka.authentication.password) && this.kafka.authentication.password != '')\x1a\xb4\x03\n" +
	"3changefeed.test_connection.schema_registry.password\x12ISchema Registry password is required when basic authentication is enabled\x1a\xb1\x02!has(this.kafka) || !has(this.kafka.data_format) || !has(this.kafka.data_format.avro_config) || !has(this.kafka.data_format.avro_config.schema_registry) || !this.kafka.data_format.avro_config.schema_registry.enable_basic_auth || this.kafka.data_format.avro_config.schema_registry.basic_auth_password != ''\x1a\xd4\x01\n" +
	"(changefeed.test_connection.s3.secret_key\x127S3 secret key is required for access key authentication\x1ao!has(this.s3) || !has(this.s3.endpoint) || this.s3.endpoint.auth_type != 1 || this.s3.endpoint.secret_key != ''\x1a\xf4\x01\n" +
	"*changefeed.test_connection.pulsar.password\x124Pulsar password is required for basic authentication\x1a\x8f\x01!has(this.pulsar) || !has(this.pulsar.authentication) || this.pulsar.authentication.auth_type != 1 || this.pulsar.authentication.password != ''\x1a\xeb\x01\n" +
	"'changefeed.test_connection.pulsar.token\x121Pulsar token is required for token authentication\x1a\x8c\x01!has(this.pulsar) || !has(this.pulsar.authentication) || this.pulsar.authentication.auth_type != 2 || this.pulsar.authentication.token != ''B\x13\n" +
	"\x11downstream_configB\x0f\n" +
	"\r_network_infoJ\x04\b\x0e\x10\x0fJ\x04\b\x0f\x10\x10R\n" +
	"azure_blobR\x0fserverless_tidb\"\xbe\x03\n" +
	"\x1aDescribeSchemaTableRequest\x12{\n" +
	"\atidb_id\x18\x01 \x01(\tBb\x92AO2<The source TiDB instance ID to describe schemas/tables from.J\x0f\"1234567890123\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06tidbId\x12|\n" +
	"\vfilter_rule\x18\x02 \x03(\tB[\x92AU28The filter rules for schemas/tables. Supports wildcards.J\x19[\"mydb.*\", \"test.orders\"]\xe0A\x01R\n" +
	"filterRule\x12\x93\x01\n" +
	"\x0ecase_sensitive\x18\x03 \x01(\bBl\x92Af2^Indicates whether to use case-sensitive matching for filter rules. The default value is false.J\x04true\xe0A\x01R\rcaseSensitive:\x0f\x92A\f\n" +
	"\n" +
	"\xd2\x01\atidb_id\"\x97\x06\n" +
	"\x1bDescribeSchemaTableResponse\x12G\n" +
	"\atidb_id\x18\x01 \x01(\tB.\x92A(2\x15The TiDB instance ID.J\x0f\"1234567890123\"\xe0A\x03R\x06tidbId\x12\x80\x01\n" +
	"\aschemas\x18\x02 \x03(\v27.openapi.v1beta2.DescribeSchemaTableResponse.SchemaInfoB-\x92A'2%The list of schemas and their tables.\xe0A\x03R\aschemas\x12\xd4\x01\n" +
	"\rgc_safe_point\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampB\x93\x01\x92A\x8c\x012rThe GC (Garbage Collection) safe point timestamp. Data before this timestamp may not be available for replication.J\x16\"2026-06-08T09:00:00Z\"\xe0A\x03R\vgcSafePoint\x1a\xd4\x02\n" +
	"\n" +
	"SchemaInfo\x12L\n" +
	"\vschema_name\x18\x01 \x01(\tB+\x92A%2\x1bThe schema (database) name.J\x06\"mydb\"\xe0A\x03R\n" +
	"schemaName\x12q\n" +
	"\vtable_names\x18\x02 \x03(\tBP\x92AJ2'The list of table names in this schema.J\x1f[\"orders\", \"users\", \"products\"]\xe0A\x03R\n" +
	"tableNames\x12\x84\x01\n" +
	"\aallowed\x18\x03 \x01(\bBj\x92Ad2\\Indicates whether this schema/table matches the filter rules and is allowed for replication.J\x04true\xe0A\x03R\aallowed\"\x18\n" +
	"\x0fListCCUsRequest:\x05\x92A\x02\n" +
	"\x00\"r\n" +
	"\x10ListCCUsResponse\x12^\n" +
	"\x04ccus\x18\x01 \x03(\v2\x1e.openapi.v1beta2.ChangefeedCCUB*\x92A$2\"The list of available CCU options.\xe0A\x03R\x04ccus\"\xb3\x03\n" +
	"\rChangefeedCCU\x12E\n" +
	"\x04name\x18\x01 \x01(\tB1\x92A+2!The identifier of the CCU option.J\x06\"4ccu\"\xe0A\x03R\x04name\x12n\n" +
	"\fdisplay_name\x18\x02 \x01(\tBK\x92AE22The human-readable display name of the CCU option.J\x0f\"4 CCU - Small\"\xe0A\x03R\vdisplayName\x12S\n" +
	"\accu_num\x18\x03 \x01(\rB:\x92A42/The number of CCUs (Changefeed Capacity Units).J\x014\xe0A\x03R\x06ccuNum\x12\x95\x01\n" +
	"\trps_limit\x18\x04 \x01(\rBx\x92Ar2jThe maximum rows per second for the CCU option. This value is for reference only and may vary by workload.J\x045000\xe0A\x03R\brpsLimit\"\x98\t\n" +
	"\vTableConfig\x12\xa9\x02\n" +
	"\ffilter_rules\x18\x01 \x03(\tB\x85\x02\x92A\xfe\x012\xc9\x01The table filter rules. For example: `[\"mydb.orders\", \"mydb.user_*\", \"!mydb.secret_*\"]` Refer [TiCDC Table Filter](https://docs.pingcap.com/tidb/stable/ticdc-filter/#table-filter) for supported syntax.J0[\"mydb.orders\", \"mydb.user_*\", \"!mydb.secret_*\"]\xe0A\x01R\vfilterRules\x12\xcf\x02\n" +
	"\x04mode\x18\x02 \x01(\x0e2!.openapi.v1beta2.TableConfig.ModeB\x97\x02\x92A\x82\x022\xf1\x01The mode for handling unsupported tables.\n" +
	"\n" +
	"- `\"MODE_UNSPECIFIED\"`: Default value. Must not be used.\n" +
	"\n" +
	"- `\"IGNORE_NOT_SUPPORT_TABLE\"`: Skip unsupported tables silently.\n" +
	"\n" +
	"- `\"FORCE_SYNC\"`: Force sync all tables (may fail on unsupported tables).J\f\"FORCE_SYNC\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x04mode\x12\x81\x01\n" +
	"\x0ecase_sensitive\x18\x03 \x01(\bBZ\x92AT2RIndicates whether the filter rules are case-sensitive. The default value is false.\xe0A\x01R\rcaseSensitive\x12{\n" +
	"\revent_filters\x18\x04 \x03(\v2\x1c.openapi.v1beta2.EventFilterB8\x92A220The event filter rules for fine-grained control.\xe0A\x01R\feventFilters\x12\xb0\x01\n" +
	"\bbdr_mode\x18\x05 \x01(\bB\x8f\x01\x92A\x88\x012\x85\x01Indicates whether [bidirectional replication mode](https://docs.pingcap.com/tidb/stable/ticdc-bidirectional-replication/) is enabled.\xe0A\x01H\x00R\abdrMode\x88\x01\x01\"J\n" +
	"\x04Mode\x12\x14\n" +
	"\x10MODE_UNSPECIFIED\x10\x00\x12\x1c\n" +
	"\x18IGNORE_NOT_SUPPORT_TABLE\x10\x01\x12\x0e\n" +
	"\n" +
	"FORCE_SYNC\x10\x02B\v\n" +
	"\t_bdr_mode\"\x87\b\n" +
	"\rStartPosition\x12\xae\x02\n" +
	"\x04mode\x18\x01 \x01(\x0e2#.openapi.v1beta2.StartPosition.ModeB\xf4\x01\x92A\xdf\x012\xd0\x01The start position mode.\n" +
	"\n" +
	"- `\"MODE_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"FROM_NOW\"`: Start from the current time.\n" +
	"\n" +
	"- `\"FROM_TSO\"`: Start from a specific TSO.\n" +
	"\n" +
	"- `\"FROM_UTC\"`: Start from a specific UTC timestamp.J\n" +
	"\"FROM_NOW\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x04mode\x12|\n" +
	"\tstart_tso\x18\x02 \x01(\x04B]\x92AZ2BThe start TSO. This field is required when the mode is `FROM_TSO`.J\x14\"452348901234567890\"H\x00R\bstartTso\x12\xa7\x01\n" +
	"\x0fstart_timestamp\x18\x03 \x01(\tB|\x92Ay2_The start UTC timestamp in RFC 3339 format. This field is required when the mode is `FROM_UTC`.J\x16\"2026-01-01T00:00:00Z\"H\x00R\x0estartTimestamp\"F\n" +
	"\x04Mode\x12\x14\n" +
	"\x10MODE_UNSPECIFIED\x10\x00\x12\f\n" +
	"\bFROM_NOW\x10\x01\x12\f\n" +
	"\bFROM_TSO\x10\x02\x12\f\n" +
	"\bFROM_UTC\x10\x03:\xc8\x02\xbaH\xc4\x02\x1a\x99\x01\n" +
	"\x1dchangefeed.start_position.tso\x129start_tso must be greater than zero when mode is FROM_TSO\x1a=this.mode != 2 || (has(this.start_tso) && this.start_tso > 0)\x1a\xa5\x01\n" +
	"#changefeed.start_position.timestamp\x121start_timestamp is required when mode is FROM_UTC\x1aKthis.mode != 3 || (has(this.start_timestamp) && this.start_timestamp != '')B\n" +
	"\n" +
	"\bposition\"\xca\x04\n" +
	"\n" +
	"Connection\x12\xb8\x02\n" +
	"\bendpoint\x18\x01 \x01(\tB\x9b\x02\x92A\x8a\x022\xed\x01The MySQL endpoint address in the `host:port` format. Required for PUBLIC and VPC_PEERING networks. For PRIVATE_LINK, this field can be omitted; the server assembles the endpoint from `networkInfo.sinkEndpointId` and `networkInfo.ports`.J\x18\"mysql.example.com:3306\"\xe0A\x01\xfaB\ar\x05\x10\x01\xd0\x01\x01R\bendpoint\x12c\n" +
	"\busername\x18\x02 \x01(\tBG\x92A42&The MySQL username for authentication.J\n" +
	"\"cdc_user\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\busername\x12\x9b\x01\n" +
	"\bpassword\x18\x03 \x01(\tB\x7f\x92Al2^The MySQL password for authentication. This field is input-only and not returned in responses.J\n" +
	"\"********\"\xe0A\x01\xe0A\x04\xfaB\ar\x05\x10\x01\xd0\x01\x01R\bpassword\"\x9a\n" +
	"\n" +
	"\vNetworkInfo\x12\xff\x03\n" +
	"\fnetwork_type\x18\x01 \x01(\x0e2(.openapi.v1beta2.NetworkInfo.NetworkTypeB\xb1\x03\x92A\x9c\x032\x82\x03The network type for downstream connectivity.\n" +
	"\n" +
	"- `\"NETWORK_TYPE_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"NETWORK_TYPE_PUBLIC\"`: Public internet access.\n" +
	"\n" +
	"- `\"NETWORK_TYPE_VPC_PEERING\"`: AWS VPC Peering.\n" +
	"\n" +
	"- `\"NETWORK_TYPE_PRIVATE_LINK\"`: Private endpoint connectivity managed by TiDB Cloud. Create a private endpoint for the external service in the console UI and assign it to `sinkEndpointId`.J\x15\"NETWORK_TYPE_PUBLIC\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\vnetworkType\x12\xbd\x01\n" +
	"\x10sink_endpoint_id\x18\x02 \x01(\x04B\x8d\x01\x92A\x86\x012{The ID for the downstream network endpoint for external service. Required when network_type is `NETWORK_TYPE_PRIVATE_LINK`.J\a\"12345\"\xe0A\x01H\x00R\x0esinkEndpointId\x88\x01\x01\x12\xee\x01\n" +
	"\x05ports\x18\x04 \x03(\rB\xd7\x01\x92A\xd0\x012\xc5\x01The ports for private endpoint connectivity. Required when networkType is `NETWORK_TYPE_PRIVATE_LINK`. The server uses these ports to construct broker endpoints as `<sink_endpoint_address>:<port>`.J\x06[9092]\xe0A\x01R\x05ports\"\x81\x01\n" +
	"\vNetworkType\x12\x1c\n" +
	"\x18NETWORK_TYPE_UNSPECIFIED\x10\x00\x12\x17\n" +
	"\x13NETWORK_TYPE_PUBLIC\x10\x01\x12\x1c\n" +
	"\x18NETWORK_TYPE_VPC_PEERING\x10\x02\x12\x1d\n" +
	"\x19NETWORK_TYPE_PRIVATE_LINK\x10\x03:\xbe\x01\xbaH\xba\x01\x1a\xb7\x01\n" +
	"(changefeed.network_info.sink_endpoint_id\x126sink_endpoint_id is required for private link networks\x1aSthis.network_type != 3 || (has(this.sink_endpoint_id) && this.sink_endpoint_id > 0)B\x13\n" +
	"\x11_sink_endpoint_id\"\xf8W\n" +
	"\x15KafkaDownstreamConfig\x12\x7f\n" +
	"\x06broker\x18\x01 \x01(\v2-.openapi.v1beta2.KafkaDownstreamConfig.BrokerB8\x92A,2*The Kafka broker connection configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\x06broker\x12\x94\x01\n" +
	"\x0eauthentication\x18\x02 \x01(\v25.openapi.v1beta2.KafkaDownstreamConfig.AuthenticationB5\x92A)2'The Kafka authentication configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\x0eauthentication\x12\x98\x01\n" +
	"\vdata_format\x18\x03 \x01(\v21.openapi.v1beta2.KafkaDownstreamConfig.DataFormatBD\x92A826The Kafka data format and serialization configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\n" +
	"dataFormat\x12\xad\x01\n" +
	"\x16topic_partition_config\x18\x04 \x01(\v2;.openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfigB:\x92A.2,The Kafka topic and partition configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\x14topicPartitionConfig\x12\x9e\x01\n" +
	"\x10column_selectors\x18\x05 \x03(\v25.openapi.v1beta2.KafkaDownstreamConfig.ColumnSelectorB<\x92A624The column selectors for filtering specific columns.\xe0A\x01R\x0fcolumnSelectors\x1a\xfa\v\n" +
	"\x06Broker\x12\xc5\x02\n" +
	"\aversion\x18\x01 \x01(\x0e23.openapi.v1beta2.KafkaDownstreamConfig.KafkaVersionB\xf5\x01\x92A\xe0\x012\xc8\x01The Kafka broker version.\n" +
	"\n" +
	"- `\"KAFKA_VERSION_UNSPECIFIED\"`: Default value. Must not be used.\n" +
	"\n" +
	"- `\"KAFKA_VERSION_1XX\"`: Kafka 1.x\n" +
	"\n" +
	"- `\"KAFKA_VERSION_2XX\"`: Kafka 2.x\n" +
	"\n" +
	"- `\"KAFKA_VERSION_3XX\"`: Kafka 3.xJ\x13\"KAFKA_VERSION_3XX\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\aversion\x12\xd4\x02\n" +
	"\x10broker_endpoints\x18\x02 \x01(\tB\xa8\x02\x92A\xa1\x022\xf4\x01The comma-separated list of Kafka broker addresses. Required for PUBLIC and VPC_PEERING network types. For PRIVATE_LINK, this field can be omitted; the server assembles broker endpoints from `networkInfo.sinkEndpointId` and `networkInfo.ports`.J(\"broker1:9092,broker2:9092,broker3:9092\"\xe0A\x01R\x0fbrokerEndpoints\x12y\n" +
	"\ause_tls\x18\x03 \x01(\bB`\x92AZ2RIndicates whether to use TLS for the Kafka connection. The default value is false.J\x04true\xe0A\x01R\x06useTls\x12\xd9\x01\n" +
	"\x14insecure_skip_verify\x18\x04 \x01(\bB\xa6\x01\x92A\x9f\x012\x95\x01Indicates whether to skip TLS certificate verification. The default value is false. Only enable this field for testing with self-signed certificates.J\x05false\xe0A\x01R\x12insecureSkipVerify\x12\xe6\x02\n" +
	"\vcompression\x18\x05 \x01(\x0e26.openapi.v1beta2.KafkaDownstreamConfig.CompressionTypeB\x8b\x02\x92A\xfc\x012\xf2\x01The Kafka message compression type.\n" +
	"\n" +
	"- `\"COMPRESSION_TYPE_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"NONE\"`: No compression.\n" +
	"\n" +
	"- `\"GZIP\"`: GZIP compression.\n" +
	"\n" +
	"- `\"SNAPPY\"`: Snappy compression.\n" +
	"\n" +
	"- `\"LZ4\"`: LZ4 compression.\n" +
	"\n" +
	"- `\"ZSTD\"`: ZSTD compression.J\x05\"LZ4\"\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01R\vcompression\x12\x90\x01\n" +
	"\x0fkafka_client_id\x18\x06 \x01(\tBh\x92Ab2HThe optional Kafka client ID. When left empty, a system default is used.J\x16\"my-changefeed-client\"\xe0A\x01R\rkafkaClientId\x1a\xc1\a\n" +
	"\x0eAuthentication\x12\xa4\x03\n" +
	"\tauth_type\x18\x01 \x01(\x0e2>.openapi.v1beta2.KafkaDownstreamConfig.Authentication.AuthTypeB\xc6\x02\x92A\xb1\x022\x98\x02The Kafka authentication type.\n" +
	"\n" +
	"- `\"AUTH_TYPE_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"DISABLE\"`: No authentication.\n" +
	"\n" +
	"- `\"SASL_PLAIN\"`: SASL/PLAIN authentication.\n" +
	"\n" +
	"- `\"SASL_SCRAM_SHA_256\"`: SASL/SCRAM-SHA-256 authentication.\n" +
	"\n" +
	"- `\"SASL_SCRAM_SHA_512\"`: SASL/SCRAM-SHA-512 authentication.J\x14\"SASL_SCRAM_SHA_256\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\bauthType\x12b\n" +
	"\busername\x18\x02 \x01(\tBA\x92A;2+The SASL username for Kafka authentication.J\f\"kafka_user\"\xe0A\x01H\x00R\busername\x88\x01\x01\x12c\n" +
	"\bpassword\x18\x03 \x01(\tBB\x92A92+The SASL password for Kafka authentication.J\n" +
	"\"********\"\xe0A\x01\xe0A\x04H\x01R\bpassword\x88\x01\x01\"r\n" +
	"\bAuthType\x12\x19\n" +
	"\x15AUTH_TYPE_UNSPECIFIED\x10\x00\x12\v\n" +
	"\aDISABLE\x10\x01\x12\x0e\n" +
	"\n" +
	"SASL_PLAIN\x10\x02\x12\x16\n" +
	"\x12SASL_SCRAM_SHA_256\x10\x03\x12\x16\n" +
	"\x12SASL_SCRAM_SHA_512\x10\x04:\xb0\x01\xbaH\xac\x01\x1a\xa9\x01\n" +
	"(changefeed.kafka.authentication.username\x129username is required when Kafka authentication is enabled\x1aBthis.auth_type == 1 || (has(this.username) && this.username != '')B\v\n" +
	"\t_usernameB\v\n" +
	"\t_password\x1a\xc7!\n" +
	"\n" +
	"DataFormat\x12\xa6\x04\n" +
	"\bprotocol\x18\x01 \x01(\x0e2:.openapi.v1beta2.KafkaDownstreamConfig.DataFormat.ProtocolB\xcd\x03\x92A\xb8\x032\x9e\x03The Kafka output protocol.\n" +
	"\n" +
	"- `\"PROTOCOL_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"PROTOCOL_CANAL_JSON\"`: Canal JSON format. Recommended for most use cases.\n" +
	"\n" +
	"- `\"PROTOCOL_OPEN_PROTOCOL\"`: Open Protocol (TiDB native format). Encodes multiple events into one message.\n" +
	"\n" +
	"- `\"PROTOCOL_AVRO\"`: Apache Avro format.\n" +
	"\n" +
	"- `\"PROTOCOL_DEBEZIUM\"`: Debezium JSON format.\n" +
	"\n" +
	"- `\"PROTOCOL_DEBEZIUM_AVRO\"`: Debezium events encoded with Avro.J\x15\"PROTOCOL_CANAL_JSON\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\bprotocol\x12\xa2\x01\n" +
	"\x0fdebezium_config\x18\x02 \x01(\v2@.openapi.v1beta2.KafkaDownstreamConfig.DataFormat.DebeziumConfigB5\x92A220The Debezium-specific data format configuration.H\x00R\x0edebeziumConfig\x12\x92\x01\n" +
	"\vavro_config\x18\x03 \x01(\v2<.openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfigB1\x92A.2,The Avro-specific data format configuration.H\x00R\n" +
	"avroConfig\x12\xe7\x01\n" +
	"\x15enable_tidb_extension\x18\x06 \x01(\bB\xb2\x01\x92A\xab\x012\xa2\x01Indicates whether to enable TiDB extension fields. The default value is false. For more information, see https://docs.pingcap.com/tidb/stable/ticdc-avro-protocol.J\x04true\xe0A\x01R\x13enableTidbExtension\x12\xf5\x01\n" +
	"\x17output_raw_change_event\x18\a \x01(\bB\xbd\x01\x92A\xb6\x012\xac\x01Indicates whether to output raw change events. The default value is false. For more information, see https://docs.pingcap.com/tidb/stable/ticdc-split-transaction-by-memory.J\x05false\xe0A\x01R\x14outputRawChangeEvent\x1a\xa4\x12\n" +
	"\n" +
	"AvroConfig\x12\x9c\x03\n" +
	"\x15decimal_handling_mode\x18\x03 \x01(\x0e2P.openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.DecimalHandlingModeB\x95\x02\x92A\x86\x022\xe2\x01The decimal serialization mode.\n" +
	"\n" +
	"- `\"DECIMAL_HANDLING_MODE_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"DECIMAL_HANDLING_MODE_PRECISE\"`: Use precise decimal representation.\n" +
	"\n" +
	"- `\"DECIMAL_HANDLING_MODE_STRING\"`: Use string representation.J\x1f\"DECIMAL_HANDLING_MODE_PRECISE\"\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01R\x13decimalHandlingMode\x12\xc6\x03\n" +
	"\x1dbigint_unsigned_handling_mode\x18\x04 \x01(\x0e2W.openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.BigintUnsignedHandlingModeB\xa9\x02\x92A\x9a\x022\xef\x01The handling mode for BIGINT UNSIGNED values.\n" +
	"\n" +
	"- `\"BIGINT_UNSIGNED_HANDLING_MODE_LONG\"`: Use 64-bit integer (may overflow for very large values).\n" +
	"\n" +
	"- `\"BIGINT_UNSIGNED_HANDLING_MODE_STRING\"`: Use string representation (safe for all values).J&\"BIGINT_UNSIGNED_HANDLING_MODE_STRING\"\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01R\x1abigintUnsignedHandlingMode\x12\xab\x01\n" +
	"\x0fschema_registry\x18\x05 \x01(\v2K.openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.SchemaRegistryB5\x92A/2-The Schema Registry connection configuration.\xe0A\x01R\x0eschemaRegistry\x1a\x8b\a\n" +
	"\x0eSchemaRegistry\x12\xc2\x01\n" +
	"\x19schema_registry_endpoints\x18\x02 \x01(\tB\x85\x01\x92A\x7f2^The comma-separated list of Schema Registry endpoints. Required for Confluent Schema Registry.J\x1d\"http://schema-registry:8081\"\xe0A\x01R\x17schemaRegistryEndpoints\x12\x84\x01\n" +
	"\x11enable_basic_auth\x18\x03 \x01(\bBX\x92AR2JIndicates whether to enable HTTP basic authentication for Schema Registry.J\x04true\xe0A\x01R\x0fenableBasicAuth\x12}\n" +
	"\x13basic_auth_username\x18\x04 \x01(\tBM\x92AG26The basic authentication username for Schema Registry.J\r\"schema_user\"\xe0A\x01R\x11basicAuthUsername\x12}\n" +
	"\x13basic_auth_password\x18\x05 \x01(\tBM\x92AD26The basic authentication password for Schema Registry.J\n" +
	"\"********\"\xe0A\x01\xe0A\x04R\x11basicAuthPassword:\xae\x02\xbaH\xaa\x02\x1ay\n" +
	"*changefeed.kafka.schema_registry.endpoints\x12%schema_registry_endpoints is required\x1a$this.schema_registry_endpoints != ''\x1a\xac\x01\n" +
	")changefeed.kafka.schema_registry.username\x12Dbasic_auth_username is required when basic authentication is enabled\x1a9!this.enable_basic_auth || this.basic_auth_username != ''\"\x81\x01\n" +
	"\x13DecimalHandlingMode\x12%\n" +
	"!DECIMAL_HANDLING_MODE_UNSPECIFIED\x10\x00\x12!\n" +
	"\x1dDECIMAL_HANDLING_MODE_PRECISE\x10\x01\x12 \n" +
	"\x1cDECIMAL_HANDLING_MODE_STRING\x10\x02\"n\n" +
	"\x1aBigintUnsignedHandlingMode\x12&\n" +
	"\"BIGINT_UNSIGNED_HANDLING_MODE_LONG\x10\x00\x12(\n" +
	"$BIGINT_UNSIGNED_HANDLING_MODE_STRING\x10\x01:~\xbaH{\x1ay\n" +
	",changefeed.kafka.avro_config.schema_registry\x12.schema_registry is required for Avro protocols\x1a\x19has(this.schema_registry)\x1a\xfb\x01\n" +
	"\x0eDebeziumConfig\x12t\n" +
	"\x10output_old_value\x18\x01 \x01(\bBJ\x92AD2<Indicates whether to output the old value before the change.J\x04true\xe0A\x01R\x0eoutputOldValue\x12s\n" +
	"\x0edisable_schema\x18\x02 \x01(\bBL\x92AF2=Indicates whether to disable the schema in Debezium messages.J\x05false\xe0A\x01R\rdisableSchema\"\x9f\x01\n" +
	"\bProtocol\x12\x18\n" +
	"\x14PROTOCOL_UNSPECIFIED\x10\x00\x12\x17\n" +
	"\x13PROTOCOL_CANAL_JSON\x10\x01\x12\x1a\n" +
	"\x16PROTOCOL_OPEN_PROTOCOL\x10\x02\x12\x11\n" +
	"\rPROTOCOL_AVRO\x10\x03\x12\x15\n" +
	"\x11PROTOCOL_DEBEZIUM\x10\x05\x12\x1a\n" +
	"\x16PROTOCOL_DEBEZIUM_AVRO\x10\x06:\xa2\x01\xbaH\x9e\x01\x1a\x9b\x01\n" +
	"(changefeed.kafka.data_format.avro_config\x12*avro_config is required for Avro protocols\x1aC(this.protocol != 3 && this.protocol != 6) || has(this.avro_config)B\b\n" +
	"\x06config\x1a\xc7\x16\n" +
	"\x14TopicPartitionConfig\x12\xbc\x03\n" +
	"\rdispatch_type\x18\x01 \x01(\x0e2H.openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.DispatchTypeB\xcc\x02\x92A\xb7\x022\x9a\x02The message dispatch type to topics.\n" +
	"\n" +
	"- `\"DISPATCH_TYPE_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"DISPATCH_TYPE_ONE_TOPIC\"`: All messages go to a single topic.\n" +
	"\n" +
	"- `\"DISPATCH_TYPE_BY_TABLE\"`: Each table gets its own topic.\n" +
	"\n" +
	"- `\"DISPATCH_TYPE_BY_DATABASE\"`: Each database gets its own topic.J\x18\"DISPATCH_TYPE_BY_TABLE\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fdispatchType\x12\x97\x01\n" +
	"\rdefault_topic\x18\x02 \x01(\tBr\x92Al2\\The default topic for dispatching all messages when dispatchType is DISPATCH_TYPE_ONE_TOPIC.J\f\"cdc-events\"\xe0A\x01R\fdefaultTopic\x12\x8e\x01\n" +
	"\ftopic_prefix\x18\x03 \x01(\tBf\x92A`2VThe topic name prefix for dispatch types that create per-table or per-database topics.J\x06\"cdc-\"\xe0A\x01H\x00R\vtopicPrefix\x88\x01\x01\x12p\n" +
	"\tseparator\x18\x04 \x01(\tBM\x92AG2@The separator between the prefix and the table or database name.J\x03\".\"\xe0A\x01H\x01R\tseparator\x88\x01\x01\x12\x8d\x01\n" +
	"\ftopic_suffix\x18\x05 \x01(\tBe\x92A_2VThe topic name suffix for dispatch types that create per-table or per-database topics.J\x05\"-v1\"\xe0A\x01H\x02R\vtopicSuffix\x88\x01\x01\x12\x7f\n" +
	"\x12replication_factor\x18\x06 \x01(\rBP\x92A=2/The replication factor for auto-created topics.J\x013i\x00\x00\x00\x00\x00\x00\xf0?\xe0A\x02\xfaB\x04*\x02(\x01\xbaH\x03\xc8\x01\x01R\x11replicationFactor\x12w\n" +
	"\rpartition_num\x18\a \x01(\rBR\x92A?21The number of partitions for auto-created topics.J\x016i\x00\x00\x00\x00\x00\x00\xf0?\xe0A\x02\xfaB\x04*\x02(\x01\xbaH\x03\xc8\x01\x01R\fpartitionNum\x12\xc3\x01\n" +
	"\x15partition_dispatchers\x18\t \x03(\v2U.openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcherConfigB7\x92A12/The custom partition dispatcher configurations.\xe0A\x01R\x14partitionDispatchers\x1a\xaf\a\n" +
	"\x19PartitionDispatcherConfig\x12\x99\x03\n" +
	"\x0epartition_type\x18\x01 \x01(\x0e2O.openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcherB\xa0\x02\x92A\x8b\x022\xff\x01The partition dispatch strategy.\n" +
	"\n" +
	"- `\"PARTITION_DISPATCHER_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"TABLE\"`: Dispatch by table name.\n" +
	"\n" +
	"- `\"INDEX_VALUE\"`: Dispatch by index value.\n" +
	"\n" +
	"- `\"TIMESTAMP\"`: Dispatch by timestamp.\n" +
	"\n" +
	"- `\"COLUMNS\"`: Dispatch by column values.J\a\"TABLE\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\rpartitionType\x12o\n" +
	"\amatcher\x18\x02 \x03(\tBU\x92AG24The table name patterns to match for the dispatcher.J\x0f[\"mydb.orders\"]\xe0A\x02\xbaH\x05\x92\x01\x02\b\x01R\amatcher\x12j\n" +
	"\n" +
	"index_name\x18\x03 \x01(\tBK\x92AE28The index name for the INDEX_VALUE partition dispatcher.J\t\"primary\"\xe0A\x01R\tindexName\x12q\n" +
	"\acolumns\x18\x04 \x03(\tBW\x92AQ26The column names for the COLUMNS partition dispatcher.J\x17[\"user_id\", \"order_id\"]\xe0A\x01R\acolumns:\xa5\x01\xbaH\xa1\x01\x1a\x9e\x01\n" +
	"-changefeed.kafka.partition_dispatcher.columns\x128columns is required for the COLUMNS partition dispatcher\x1a3this.partition_type != 4 || this.columns.size() > 0\"\x85\x01\n" +
	"\fDispatchType\x12\x1d\n" +
	"\x19DISPATCH_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n" +
	"\x17DISPATCH_TYPE_ONE_TOPIC\x10\x01\x12\x1a\n" +
	"\x16DISPATCH_TYPE_BY_TABLE\x10\x02\x12\x1d\n" +
	"\x19DISPATCH_TYPE_BY_DATABASE\x10\x03\"s\n" +
	"\x13PartitionDispatcher\x12$\n" +
	" PARTITION_DISPATCHER_UNSPECIFIED\x10\x00\x12\t\n" +
	"\x05TABLE\x10\x01\x12\x0f\n" +
	"\vINDEX_VALUE\x10\x02\x12\r\n" +
	"\tTIMESTAMP\x10\x03\x12\v\n" +
	"\aCOLUMNS\x10\x04:\xa3\x01\xbaH\x9f\x01\x1a\x9c\x01\n" +
	".changefeed.kafka.topic_partition.default_topic\x125default_topic is required for DISPATCH_TYPE_ONE_TOPIC\x1a3this.dispatch_type != 1 || this.default_topic != ''B\x0f\n" +
	"\r_topic_prefixB\f\n" +
	"\n" +
	"_separatorB\x0f\n" +
	"\r_topic_suffix\x1a\xfb\x01\n" +
	"\x0eColumnSelector\x12x\n" +
	"\amatcher\x18\x01 \x03(\tB^\x92AX26The table name patterns to match for column selection.J\x1e[\"mydb.orders\", \"mydb.user_*\"]\xe0A\x01R\amatcher\x12o\n" +
	"\acolumns\x18\x02 \x03(\tBU\x92AO23The column names to include for the matched tables.J\x18[\"id\", \"name\", \"status\"]\xe0A\x01R\acolumns\"\x8b\x01\n" +
	"\fKafkaVersion\x12\x1d\n" +
	"\x19KAFKA_VERSION_UNSPECIFIED\x10\x00\x12\x15\n" +
	"\x11KAFKA_VERSION_1XX\x10\x02\x12\x15\n" +
	"\x11KAFKA_VERSION_2XX\x10\x03\x12\x15\n" +
	"\x11KAFKA_VERSION_3XX\x10\x04\"\x04\b\x01\x10\x01*\x11KAFKA_VERSION_0XX\"f\n" +
	"\x0fCompressionType\x12 \n" +
	"\x1cCOMPRESSION_TYPE_UNSPECIFIED\x10\x00\x12\b\n" +
	"\x04NONE\x10\x01\x12\b\n" +
	"\x04GZIP\x10\x02\x12\n" +
	"\n" +
	"\x06SNAPPY\x10\x03\x12\a\n" +
	"\x03LZ4\x10\x04\x12\b\n" +
	"\x04ZSTD\x10\x05:\x91\x02\xbaH\x8d\x02\x1a\x8a\x02\n" +
	"#changefeed.kafka.avro_dispatch_type\x12-Avro protocols require DISPATCH_TYPE_BY_TABLE\x1a\xb3\x01!has(this.data_format) || !has(this.topic_partition_config) || (this.data_format.protocol != 3 && this.data_format.protocol != 6) || this.topic_partition_config.dispatch_type == 2\"\x87\x01\n" +
	"\x15MySQLDownstreamConfig\x12n\n" +
	"\n" +
	"connection\x18\x01 \x01(\v2\x1b.openapi.v1beta2.ConnectionB1\x92A%2#The MySQL connection configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\n" +
	"connection\"\xdc\x15\n" +
	"\fS3DataFormat\x12\x89\x02\n" +
	"\bprotocol\x18\x01 \x01(\x0e2&.openapi.v1beta2.S3DataFormat.ProtocolB\xc4\x01\x92A\xaa\x012\x90\x01The output protocol.\n" +
	"\n" +
	"- `\"PROTOCOL_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"PROTOCOL_CSV\"`: CSV format.\n" +
	"\n" +
	"- `\"PROTOCOL_CANAL_JSON\"`: Canal JSON format.J\x15\"PROTOCOL_CANAL_JSON\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\b\xc8\x01\x01\x82\x01\x02\x10\x01R\bprotocol\x12\x83\x02\n" +
	"\n" +
	"terminator\x18\x02 \x01(\tB\xe2\x01\x92A\xdb\x012\xd2\x01The row terminator used to separate data change events. This configuration is only used for storage sinks. The default value is a newline character (\"\\n\"). When the field is omitted or empty, a newline is used.J\x04\"\\n\"\xe0A\x01R\n" +
	"terminator\x12\xe8\x02\n" +
	"\x0edate_separator\x18\x03 \x01(\x0e2+.openapi.v1beta2.S3DataFormat.DateSeparatorB\x93\x02\x92A\x84\x022\xfa\x01The date separator for the directory structure.\n" +
	"\n" +
	"- `\"DATE_SEPARATOR_UNSPECIFIED\"`: Uses `NONE`.\n" +
	"\n" +
	"- `\"NONE\"`: No date separator. This is the default behavior.\n" +
	"\n" +
	"- `\"YEAR\"`: Separate by year.\n" +
	"\n" +
	"- `\"MONTH\"`: Separate by month.\n" +
	"\n" +
	"- `\"DAY\"`: Separate by day.J\x05\"DAY\"\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01R\rdateSeparator\x12\xa8\x01\n" +
	"\x15enable_tidb_extension\x18\x04 \x01(\bBt\x92An2eIndicates whether to enable TiDB extension fields in Canal-JSON messages. The default value is false.J\x05false\xe0A\x01R\x13enableTidbExtension\x12\x9d\x01\n" +
	"\tdelimiter\x18\x05 \x01(\tB\x7f\x92Ay2rThe field delimiter for CSV files. Required when protocol is `PROTOCOL_CSV`. The value must be an ASCII character.J\x03\",\"\xe0A\x01R\tdelimiter\x12\xae\x01\n" +
	"\x05quote\x18\x06 \x01(\tB\x97\x01\x92A\x90\x012\x87\x01The quotation character for CSV fields. The default value is `\"`. When the value is empty, the default quotation character is retained.J\x04\"\\\"\"\xe0A\x01R\x05quote\x12g\n" +
	"\x04null\x18\a \x01(\tBS\x92AM2CThe null representation for CSV columns. The default value is `\\N`.J\x06\"NULL\"\xe0A\x01R\x04null\x12\x95\x01\n" +
	"\x11include_commit_ts\x18\b \x01(\bBi\x92Ac2ZIndicates whether to include the commit timestamp in CSV rows. The default value is false.J\x05false\xe0A\x01R\x0fincludeCommitTs\x12\x9e\x02\n" +
	"\x16binary_encoding_method\x18\t \x01(\x0e22.openapi.v1beta2.S3DataFormat.BinaryEncodingMethodB\xb3\x01\x92A\xa4\x012\x97\x01The binary encoding method.\n" +
	"\n" +
	"- `\"BINARY_ENCODING_METHOD_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"BASE64\"`: Base64 encoding.\n" +
	"\n" +
	"- `\"HEX\"`: Hexadecimal encoding.J\b\"BASE64\"\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01R\x14binaryEncodingMethod\x12\xf5\x01\n" +
	"\x17output_raw_change_event\x18\n" +
	" \x01(\bB\xbd\x01\x92A\xb6\x012\xac\x01Indicates whether to output raw change events. The default value is false. For more information, see https://docs.pingcap.com/tidb/stable/ticdc-split-transaction-by-memory.J\x05false\xe0A\x01R\x14outputRawChangeEvent\x12\x8d\x01\n" +
	"\x13output_field_header\x18\v \x01(\bB]\x92AW2NIndicates whether to include the CSV field header. The default value is false.J\x05false\xe0A\x01R\x11outputFieldHeader\"W\n" +
	"\rDateSeparator\x12\x1e\n" +
	"\x1aDATE_SEPARATOR_UNSPECIFIED\x10\x00\x12\b\n" +
	"\x04NONE\x10\x01\x12\b\n" +
	"\x04YEAR\x10\x02\x12\t\n" +
	"\x05MONTH\x10\x03\x12\a\n" +
	"\x03DAY\x10\x04\"g\n" +
	"\bProtocol\x12\x18\n" +
	"\x14PROTOCOL_UNSPECIFIED\x10\x00\x12\x10\n" +
	"\fPROTOCOL_CSV\x10\x01\x12\x17\n" +
	"\x13PROTOCOL_CANAL_JSON\x10\x02\"\x04\b\x03\x10\x03*\x10PROTOCOL_PARQUET\"S\n" +
	"\x14BinaryEncodingMethod\x12&\n" +
	"\"BINARY_ENCODING_METHOD_UNSPECIFIED\x10\x00\x12\n" +
	"\n" +
	"\x06BASE64\x10\x01\x12\a\n" +
	"\x03HEX\x10\x02:\x91\x01\xbaH\x8d\x01\x1a\x8a\x01\n" +
	"'changefeed.s3_data_format.csv_delimiter\x123delimiter is required when protocol is PROTOCOL_CSV\x1a*this.protocol != 1 || this.delimiter != ''\"\xa2\x03\n" +
	"\x12StorageFlushConfig\x12\x88\x01\n" +
	"\binterval\x18\x01 \x01(\tBl\x92Af2^The flush interval as a duration string. The range is from 2s to 10m. The default value is 1m.J\x04\"1m\"\xe0A\x01R\binterval\x12\x80\x02\n" +
	"\tfile_size\x18\x02 \x01(\x04B\xe2\x01\x92A\xcc\x012\xab\x01The file size threshold in bytes. Data is flushed when this size is reached. The range is from 1048576 (1 MB) to 536870912 (512 MB). The default value is 67108864 (64 MB).J\n" +
	"\"67108864\"Y\x00\x00\x00\x00\x00\x00\xc0Ai\x00\x00\x00\x00\x00\x000A\xe0A\x01\xfaB\f2\n" +
	"\x18\x80\x80\x80\x80\x02(\x80\x80@R\bfileSize\"\xb5\x15\n" +
	"\x12S3DownstreamConfig\x12v\n" +
	"\bendpoint\x18\x01 \x01(\v2,.openapi.v1beta2.S3DownstreamConfig.EndpointB,\x92A 2\x1eThe S3 endpoint configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\bendpoint\x12o\n" +
	"\vdata_format\x18\x02 \x01(\v2\x1d.openapi.v1beta2.S3DataFormatB/\x92A#2!The S3 data format configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\n" +
	"dataFormat\x12\x7f\n" +
	"\x14storage_flush_config\x18\x03 \x01(\v2#.openapi.v1beta2.StorageFlushConfigB(\x92A\"2 The storage flush configuration.\xe0A\x01R\x12storageFlushConfig\x1a\xb4\x12\n" +
	"\bEndpoint\x12\xa5\x02\n" +
	"\x06s3_uri\x18\x01 \x01(\tB\x8d\x02\x92A\xf9\x012\xda\x01The S3 bucket URI. For example, `s3://bucket/prefix/`. The URI must end with a trailing slash.\n" +
	"\n" +
	"For Alibaba Cloud OSS, use the S3-compatible URI format `s3://{bucket_name}/{prefix}/`. Do not use the raw OSS URI format.J\x1a\"s3://my-bucket/cdc-data/\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x05s3Uri\x12\xd4\x02\n" +
	"\tauth_type\x18\x04 \x01(\x0e27.openapi.v1beta2.S3DownstreamConfig.Endpoint.S3AuthTypeB\xfd\x01\x92A\xe8\x012\xcf\x01The S3 authentication type.\n" +
	"\n" +
	"- `\"S3_AUTH_TYPE_UNSPECIFIED\"`: Default value.\n" +
	"\n" +
	"- `\"S3_AUTH_TYPE_AK_SK\"`: Access Key / Secret Key authentication.\n" +
	"\n" +
	"- `\"S3_AUTH_TYPE_ASSUME_ROLE\"`: IAM Assume Role authentication.J\x14\"S3_AUTH_TYPE_AK_SK\"\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\bauthType\x12\xa4\x01\n" +
	"\n" +
	"access_key\x18\x02 \x01(\tB\x84\x01\x92A{2aThe access key for S3 authentication. This field is required when authType is S3_AUTH_TYPE_AK_SK.J\x16\"AKIAIOSFODNN7EXAMPLE\"\xe0A\x01\xe0A\x04R\taccessKey\x12\xf2\x01\n" +
	"\n" +
	"secret_key\x18\x03 \x01(\tB\xd2\x01\x92A\xc8\x012\x99\x01The secret key for S3 authentication. This field is required when authType is S3_AUTH_TYPE_AK_SK. This field is input-only and not returned in responses.J*\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\"\xe0A\x01\xe0A\x04R\tsecretKey\x12\xde\x01\n" +
	"\x14iam_assumed_role_arn\x18\x05 \x01(\tB\xac\x01\x92A\xa5\x012qThe IAM assumed role ARN for S3 authentication. This field is required when authType is S3_AUTH_TYPE_ASSUME_ROLE.J0\"arn:aws:iam::123456789012:role/CDCS3AccessRole\"\xe0A\x01R\x11iamAssumedRoleArn\x12\x98\x01\n" +
	"\x0fcustom_endpoint\x18\x06 \x01(\tBo\x92Ai2<The custom S3-compatible endpoint. Required for Alibaba OSS.J)\"https://s3.oss-{region_id}.aliyuncs.com\"\xe0A\x01R\x0ecustomEndpoint\x12\xb2\x02\n" +
	"\bprovider\x18\a \x01(\x0e25.openapi.v1beta2.S3DownstreamConfig.Endpoint.ProviderB\xde\x01\x92A\xcf\x012\xc5\x01The object storage provider. If omitted or set to `\"PROVIDER_UNSPECIFIED\"`, AWS S3 behavior is used.\n" +
	"\n" +
	"- `\"AWS\"`: Amazon S3.\n" +
	"\n" +
	"- `\"ALIBABA_OSS\"`: Alibaba Cloud OSS through its S3-compatible endpoint.J\x05\"AWS\"\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01R\bprovider\"`\n" +
	"\n" +
	"S3AuthType\x12\x1c\n" +
	"\x18S3_AUTH_TYPE_UNSPECIFIED\x10\x00\x12\x16\n" +
	"\x12S3_AUTH_TYPE_AK_SK\x10\x01\x12\x1c\n" +
	"\x18S3_AUTH_TYPE_ASSUME_ROLE\x10\x02\">\n" +
	"\bProvider\x12\x18\n" +
	"\x14PROVIDER_UNSPECIFIED\x10\x00\x12\a\n" +
	"\x03AWS\x10\x01\x12\x0f\n" +
	"\vALIBABA_OSS\x10\x02:\xb9\x03\xbaH\xb5\x03\x1a\x87\x01\n" +
	"!changefeed.s3.endpoint.access_key\x124access_key is required for access key authentication\x1a,this.auth_type != 1 || this.access_key != ''\x1a\x9e\x01\n" +
	"#changefeed.s3.endpoint.assumed_role\x12?iam_assumed_role_arn is required for assume role authentication\x1a6this.auth_type != 2 || this.iam_assumed_role_arn != ''\x1a\x87\x01\n" +
	"&changefeed.s3.endpoint.custom_endpoint\x12+custom_endpoint is required for Alibaba OSS\x1a0this.provider != 2 || this.custom_endpoint != ''\"\xaa\x04\n" +
	"\x13GcsDownstreamConfig\x12x\n" +
	"\bendpoint\x18\x01 \x01(\v2-.openapi.v1beta2.GcsDownstreamConfig.EndpointB-\x92A!2\x1fThe GCS endpoint configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\bendpoint\x12\x83\x01\n" +
	"\vdata_format\x18\x02 \x01(\v2\x1d.openapi.v1beta2.S3DataFormatBC\x92A725The data format configuration for the GCS downstream.\xe0A\x02\xbaH\x03\xc8\x01\x01R\n" +
	"dataFormat\x12\x7f\n" +
	"\x14storage_flush_config\x18\x03 \x01(\v2#.openapi.v1beta2.StorageFlushConfigB(\x92A\"2 The storage flush configuration.\xe0A\x01R\x12storageFlushConfig\x1a\x91\x01\n" +
	"\bEndpoint\x12\x84\x01\n" +
	"\agcs_uri\x18\x01 \x01(\tBk\x92AX2;The GCS bucket URI. For example, `gs://my-bucket/cdc-data`.J\x19\"gs://my-bucket/cdc-data\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06gcsUri\"\xe0\x17\n" +
	"\x16PulsarDownstreamConfig\x12\xa4\x01\n" +
	"\x14destination_protocol\x18\x01 \x01(\x0e2;.openapi.v1beta2.PulsarDownstreamConfig.DestinationProtocolB4\x92A 2\x1eThe Pulsar endpoint transport.\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x13destinationProtocol\x12h\n" +
	"\bendpoint\x18\x02 \x01(\tBL\x92A92\x1cThe Pulsar service endpoint.J\x19\"pulsar.example.com:6650\"\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\bendpoint\x12\x96\x01\n" +
	"\x0eauthentication\x18\x03 \x01(\v26.openapi.v1beta2.PulsarDownstreamConfig.AuthenticationB6\x92A*2(The Pulsar authentication configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\x0eauthentication\x12\x8a\x01\n" +
	"\vcompression\x18\x04 \x01(\x0e27.openapi.v1beta2.PulsarDownstreamConfig.CompressionTypeB/\x92A!2\x1fThe Pulsar message compression.\xe0A\x01\xfaB\x05\x82\x01\x02\x10\x01R\vcompression\x12}\n" +
	"\vdata_format\x18\x05 \x01(\v22.openapi.v1beta2.PulsarDownstreamConfig.DataFormatB(\x92A\x1c2\x1aThe Pulsar message format.\xe0A\x02\xbaH\x03\xc8\x01\x01R\n" +
	"dataFormat\x12\xa4\x01\n" +
	"\x12topic_distribution\x18\x06 \x01(\v29.openapi.v1beta2.PulsarDownstreamConfig.TopicDistributionB:\x92A.2,The Pulsar topic distribution configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\x11topicDistribution\x12\x97\x01\n" +
	"\x15partition_dispatchers\x18\a \x03(\v2U.openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcherConfigB\v\xe0A\x02\xbaH\x05\x92\x01\x02\b\x01R\x14partitionDispatchers\x12\x99\x01\n" +
	"\x10advanced_setting\x18\b \x01(\v27.openapi.v1beta2.PulsarDownstreamConfig.AdvancedSettingB5\x92A)2'The Pulsar client tuning configuration.\xe0A\x02\xbaH\x03\xc8\x01\x01R\x0fadvancedSetting\x1a\xb1\x03\n" +
	"\x0eAuthentication\x12o\n" +
	"\tauth_type\x18\x01 \x01(\x0e2?.openapi.v1beta2.PulsarDownstreamConfig.Authentication.AuthTypeB\x11\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\bauthType\x12\x1f\n" +
	"\busername\x18\x02 \x01(\tB\x03\xe0A\x01R\busername\x12\"\n" +
	"\bpassword\x18\x03 \x01(\tB\x06\xe0A\x01\xe0A\x04R\bpassword\x12\x1c\n" +
	"\x05token\x18\x04 \x01(\tB\x06\xe0A\x01\xe0A\x04R\x05token\";\n" +
	"\bAuthType\x12\x19\n" +
	"\x15AUTH_TYPE_UNSPECIFIED\x10\x00\x12\t\n" +
	"\x05BASIC\x10\x01\x12\t\n" +
	"\x05TOKEN\x10\x02:\x8d\x01\xbaH\x89\x01\x1a\x86\x01\n" +
	")changefeed.pulsar.authentication.username\x12-username is required for basic authentication\x1a*this.auth_type != 1 || this.username != ''\x1a\xe7\x01\n" +
	"\n" +
	"DataFormat\x12j\n" +
	"\bprotocol\x18\x01 \x01(\x0e2;.openapi.v1beta2.PulsarDownstreamConfig.DataFormat.ProtocolB\x11\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\bprotocol\x127\n" +
	"\x15enable_tidb_extension\x18\x02 \x01(\bB\x03\xe0A\x01R\x13enableTidbExtension\"4\n" +
	"\bProtocol\x12\x18\n" +
	"\x14PROTOCOL_UNSPECIFIED\x10\x00\x12\x0e\n" +
	"\n" +
	"CANAL_JSON\x10\x01\x1a\x8b\x05\n" +
	"\x11TopicDistribution\x12(\n" +
	"\x06tenant\x18\x01 \x01(\tB\x10\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06tenant\x12.\n" +
	"\tnamespace\x18\x02 \x01(\tB\x10\xe0A\x02\xfaB\x04r\x02\x10\x01\xbaH\x03\xc8\x01\x01R\tnamespace\x12|\n" +
	"\rdefault_topic\x18\x03 \x01(\tBW\x92AQ2OThe default topic. Required only when dispatch_type is DISPATCH_TYPE_ONE_TOPIC.\xe0A\x01R\fdefaultTopic\x12\x80\x01\n" +
	"\rdispatch_type\x18\x04 \x01(\x0e2H.openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.DispatchTypeB\x11\xe0A\x02\xfaB\x05\x82\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\fdispatchType\x12&\n" +
	"\ftopic_prefix\x18\x05 \x01(\tB\x03\xe0A\x01R\vtopicPrefix\x12!\n" +
	"\tseparator\x18\x06 \x01(\tB\x03\xe0A\x01R\tseparator\x12&\n" +
	"\ftopic_suffix\x18\a \x01(\tB\x03\xe0A\x01R\vtopicSuffix:\xa7\x01\xbaH\xa3\x01\x1a\xa0\x01\n" +
	"2changefeed.pulsar.topic_distribution.default_topic\x125default_topic is required for DISPATCH_TYPE_ONE_TOPIC\x1a3this.dispatch_type != 1 || this.default_topic != ''\x1a\xb8\x02\n" +
	"\x0fAdvancedSetting\x12=\n" +
	"\x15batching_max_messages\x18\x01 \x01(\rB\t\xe0A\x02\xbaH\x03\xc8\x01\x01R\x13batchingMaxMessages\x12F\n" +
	"\x1abatching_max_publish_delay\x18\x02 \x01(\rB\t\xe0A\x02\xbaH\x03\xc8\x01\x01R\x17batchingMaxPublishDelay\x128\n" +
	"\x12connection_timeout\x18\x03 \x01(\rB\t\xe0A\x02\xbaH\x03\xc8\x01\x01R\x11connectionTimeout\x126\n" +
	"\x11operation_timeout\x18\x04 \x01(\rB\t\xe0A\x02\xbaH\x03\xc8\x01\x01R\x10operationTimeout\x12,\n" +
	"\fsend_timeout\x18\x05 \x01(\rB\t\xe0A\x02\xbaH\x03\xc8\x01\x01R\vsendTimeout\"p\n" +
	"\x13DestinationProtocol\x12$\n" +
	" DESTINATION_PROTOCOL_UNSPECIFIED\x10\x00\x12\n" +
	"\n" +
	"\x06PULSAR\x10\x01\x12\x0e\n" +
	"\n" +
	"PULSAR_SSL\x10\x02\"\x04\b\x03\x10\x03\"\x04\b\x04\x10\x04*\x04HTTP*\x05HTTPS\"Z\n" +
	"\x0fCompressionType\x12 \n" +
	"\x1cCOMPRESSION_TYPE_UNSPECIFIED\x10\x00\x12\b\n" +
	"\x04NONE\x10\x01\x12\a\n" +
	"\x03LZ4\x10\x02\x12\b\n" +
	"\x04ZLIB\x10\x03\x12\b\n" +
	"\x04ZSTD\x10\x04*\x8d\x01\n" +
	"\x0eDownstreamType\x12\x1f\n" +
	"\x1bDOWNSTREAM_TYPE_UNSPECIFIED\x10\x00\x12\t\n" +
	"\x05KAFKA\x10\x01\x12\t\n" +
	"\x05MYSQL\x10\x03\x12\x06\n" +
	"\x02S3\x10\x05\x12\a\n" +
	"\x03GCS\x10\x06\x12\n" +
	"\n" +
	"\x06PULSAR\x10\a\"\x04\b\x04\x10\x04\"\x04\b\b\x10\b*\x0fSERVERLESS_TIDB*\n" +
	"AZURE_BLOB2\xec\x18\n" +
	"\x11ChangefeedService\x12\xa5\x02\n" +
	"\x0fListChangefeeds\x12'.openapi.v1beta2.ListChangefeedsRequest\x1a(.openapi.v1beta2.ListChangefeedsResponse\"\xbe\x01\x92A\x9e\x01\x12\x10List changefeeds\x1ayLists the changefeeds for a TiDB instance. Results can be filtered by downstream type and paginated using the page token.*\x0fListChangefeeds\x82\xd3\xe4\x93\x02\x16\x12\x14/v1beta2/changefeeds\x12\x94\x02\n" +
	"\rGetChangefeed\x12%.openapi.v1beta2.GetChangefeedRequest\x1a\x1b.openapi.v1beta2.Changefeed\"\xbe\x01\x92A\x8e\x01\x12\x10Get a changefeed\x1akGets the details of a changefeed by its ID, including its state, configuration, and checkpoint information.*\rGetChangefeed\x82\xd3\xe4\x93\x02&\x12$/v1beta2/changefeeds/{changefeed_id}\x12\xb3\x02\n" +
	"\x0fPauseChangefeed\x12'.openapi.v1beta2.PauseChangefeedRequest\x1a\x16.google.protobuf.Empty\"\xde\x01\x92A\xa5\x01\x12\x12Pause a changefeed\x1a~Pauses a running changefeed. While paused, the changefeed stops replicating data but retains its configuration and checkpoint.*\x0fPauseChangefeed\x82\xd3\xe4\x93\x02/:\x01*\"*/v1beta2/changefeeds/{changefeed_id}:pause\x12\x9a\x02\n" +
	"\x10ResumeChangefeed\x12(.openapi.v1beta2.ResumeChangefeedRequest\x1a\x16.google.protobuf.Empty\"\xc3\x01\x92A\x89\x01\x12\x13Resume a changefeed\x1a`Resumes a paused changefeed. The changefeed continues replicating data from its last checkpoint.*\x10ResumeChangefeed\x82\xd3\xe4\x93\x020:\x01*\"+/v1beta2/changefeeds/{changefeed_id}:resume\x12\xeb\x05\n" +
	"\x10CreateChangefeed\x12(.openapi.v1beta2.CreateChangefeedRequest\x1a\x1b.openapi.v1beta2.Changefeed\"\x8f\x05\x92A\xec\x04\x12\x13Create a changefeed\x1a\xc2\x04Creates a new changefeed for replicating data to a downstream system.\n" +
	"\n" +
	"For S3-compatible storage, Alibaba Cloud OSS is supported through the S3-compatible endpoint. To use Alibaba Cloud OSS, set `downstreamType` to `S3`, set `provider` to `ALIBABA_OSS`, and configure the S3 endpoint with a `s3://{bucket_name}/{prefix}/` URI, a regional custom endpoint such as `https://s3.oss-{region_id}.aliyuncs.com`, and `S3_AUTH_TYPE_AK_SK` authentication.\n" +
	"\n" +
	"Currently, Alibaba Cloud OSS only supports Access Key / Secret Key authentication. IAM Assume Role authentication is not supported.*\x10CreateChangefeed\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v1beta2/changefeeds\x12\x9d\x02\n" +
	"\x10DeleteChangefeed\x12(.openapi.v1beta2.DeleteChangefeedRequest\x1a\x16.google.protobuf.Empty\"\xc6\x01\x92A\x96\x01\x12\x13Delete a changefeed\x1amDeletes a changefeed by its ID. This operation cannot be undone. The changefeed must be in a deletable state.*\x10DeleteChangefeed\x82\xd3\xe4\x93\x02&*$/v1beta2/changefeeds/{changefeed_id}\x12\xf4\x02\n" +
	"\x1eEditChangefeedDownstreamConfig\x126.openapi.v1beta2.EditChangefeedDownstreamConfigRequest\x1a\x1b.openapi.v1beta2.Changefeed\"\xfc\x01\x92A\xb4\x01\x12(Edit changefeed downstream configuration\x1ahUpdates the mutable configuration of an existing changefeed. The changefeed must be in the PAUSED state.*\x1eEditChangefeedDownstreamConfig\x82\xd3\xe4\x93\x02>:\x01*\"9/v1beta2/changefeeds/{changefeed_id}:editDownstreamConfig\x12\xb4\x02\n" +
	"\x0fScaleChangefeed\x12'.openapi.v1beta2.ScaleChangefeedRequest\x1a\x1b.openapi.v1beta2.Changefeed\"\xda\x01\x92A\xa1\x01\x12\x12Scale a changefeed\x1azScales a changefeed to a different changefeed capacity (CCU). The new capacity takes effect after the operation completes.*\x0fScaleChangefeed\x82\xd3\xe4\x93\x02/:\x01*\"*/v1beta2/changefeeds/{changefeed_id}:scale\x12\x88\x02\n" +
	"\bListCCUs\x12 .openapi.v1beta2.ListCCUsRequest\x1a!.openapi.v1beta2.ListCCUsResponse\"\xb6\x01\x92A\x8d\x01\x12\x1bList changefeed CCU options\x1aQLists the available changefeed CCU options that can be selected for a changefeed.*\x1bListChangefeedCapacityUnits\x82\xd3\xe4\x93\x02\x1f\x12\x1d/v1beta2/changefeeds:listCCUsB\xf2\x01\x92A`\n" +
	"\x032.0\x12C\n" +
	"\x1bTiDB Cloud Premium Open API\x12\x1bTiDB Cloud Premium Open API2\av1beta2\x1a\x11cloud.tidbapi.com*\x01\x02\n" +
	"&com.tidbcloud.dataflow.openapi.v1beta2B\x11ChangefeedProtoV2P\x01ZPgithub.com/tidbcloud/dataflow-service-ng/idl/pbgen/proto/openapi/v1beta2;v1beta2b\x06proto3"

var (
	file_openapi_v1beta2_changefeed_proto_rawDescOnce sync.Once
	file_openapi_v1beta2_changefeed_proto_rawDescData []byte
)

func file_openapi_v1beta2_changefeed_proto_rawDescGZIP() []byte {
	file_openapi_v1beta2_changefeed_proto_rawDescOnce.Do(func() {
		file_openapi_v1beta2_changefeed_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_openapi_v1beta2_changefeed_proto_rawDesc), len(file_openapi_v1beta2_changefeed_proto_rawDesc)))
	})
	return file_openapi_v1beta2_changefeed_proto_rawDescData
}

var file_openapi_v1beta2_changefeed_proto_enumTypes = make([]protoimpl.EnumInfo, 22)
var file_openapi_v1beta2_changefeed_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
var file_openapi_v1beta2_changefeed_proto_goTypes = []any{
	(DownstreamType)(0),                                                          // 0: openapi.v1beta2.DownstreamType
	(Changefeed_State)(0),                                                        // 1: openapi.v1beta2.Changefeed.State
	(TableConfig_Mode)(0),                                                        // 2: openapi.v1beta2.TableConfig.Mode
	(StartPosition_Mode)(0),                                                      // 3: openapi.v1beta2.StartPosition.Mode
	(NetworkInfo_NetworkType)(0),                                                 // 4: openapi.v1beta2.NetworkInfo.NetworkType
	(KafkaDownstreamConfig_KafkaVersion)(0),                                      // 5: openapi.v1beta2.KafkaDownstreamConfig.KafkaVersion
	(KafkaDownstreamConfig_CompressionType)(0),                                   // 6: openapi.v1beta2.KafkaDownstreamConfig.CompressionType
	(KafkaDownstreamConfig_Authentication_AuthType)(0),                           // 7: openapi.v1beta2.KafkaDownstreamConfig.Authentication.AuthType
	(KafkaDownstreamConfig_DataFormat_Protocol)(0),                               // 8: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.Protocol
	(KafkaDownstreamConfig_DataFormat_AvroConfig_DecimalHandlingMode)(0),         // 9: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.DecimalHandlingMode
	(KafkaDownstreamConfig_DataFormat_AvroConfig_BigintUnsignedHandlingMode)(0),  // 10: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.BigintUnsignedHandlingMode
	(KafkaDownstreamConfig_TopicPartitionConfig_DispatchType)(0),                 // 11: openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.DispatchType
	(KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcher)(0),          // 12: openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcher
	(S3DataFormat_DateSeparator)(0),                                              // 13: openapi.v1beta2.S3DataFormat.DateSeparator
	(S3DataFormat_Protocol)(0),                                                   // 14: openapi.v1beta2.S3DataFormat.Protocol
	(S3DataFormat_BinaryEncodingMethod)(0),                                       // 15: openapi.v1beta2.S3DataFormat.BinaryEncodingMethod
	(S3DownstreamConfig_Endpoint_S3AuthType)(0),                                  // 16: openapi.v1beta2.S3DownstreamConfig.Endpoint.S3AuthType
	(S3DownstreamConfig_Endpoint_Provider)(0),                                    // 17: openapi.v1beta2.S3DownstreamConfig.Endpoint.Provider
	(PulsarDownstreamConfig_DestinationProtocol)(0),                              // 18: openapi.v1beta2.PulsarDownstreamConfig.DestinationProtocol
	(PulsarDownstreamConfig_CompressionType)(0),                                  // 19: openapi.v1beta2.PulsarDownstreamConfig.CompressionType
	(PulsarDownstreamConfig_Authentication_AuthType)(0),                          // 20: openapi.v1beta2.PulsarDownstreamConfig.Authentication.AuthType
	(PulsarDownstreamConfig_DataFormat_Protocol)(0),                              // 21: openapi.v1beta2.PulsarDownstreamConfig.DataFormat.Protocol
	(*ListChangefeedsRequest)(nil),                                               // 22: openapi.v1beta2.ListChangefeedsRequest
	(*ListChangefeedsResponse)(nil),                                              // 23: openapi.v1beta2.ListChangefeedsResponse
	(*Changefeed)(nil),                                                           // 24: openapi.v1beta2.Changefeed
	(*GetChangefeedRequest)(nil),                                                 // 25: openapi.v1beta2.GetChangefeedRequest
	(*PauseChangefeedRequest)(nil),                                               // 26: openapi.v1beta2.PauseChangefeedRequest
	(*ResumeChangefeedRequest)(nil),                                              // 27: openapi.v1beta2.ResumeChangefeedRequest
	(*GetEventFiltersRequest)(nil),                                               // 28: openapi.v1beta2.GetEventFiltersRequest
	(*EventFilters)(nil),                                                         // 29: openapi.v1beta2.EventFilters
	(*SetEventFiltersResponse)(nil),                                              // 30: openapi.v1beta2.SetEventFiltersResponse
	(*EventFilter)(nil),                                                          // 31: openapi.v1beta2.EventFilter
	(*SetEventFiltersRequest)(nil),                                               // 32: openapi.v1beta2.SetEventFiltersRequest
	(*CreateChangefeedRequest)(nil),                                              // 33: openapi.v1beta2.CreateChangefeedRequest
	(*EditChangefeedDownstreamConfigRequest)(nil),                                // 34: openapi.v1beta2.EditChangefeedDownstreamConfigRequest
	(*DeleteChangefeedRequest)(nil),                                              // 35: openapi.v1beta2.DeleteChangefeedRequest
	(*ScaleChangefeedRequest)(nil),                                               // 36: openapi.v1beta2.ScaleChangefeedRequest
	(*TestConnectionRequest)(nil),                                                // 37: openapi.v1beta2.TestConnectionRequest
	(*DescribeSchemaTableRequest)(nil),                                           // 38: openapi.v1beta2.DescribeSchemaTableRequest
	(*DescribeSchemaTableResponse)(nil),                                          // 39: openapi.v1beta2.DescribeSchemaTableResponse
	(*ListCCUsRequest)(nil),                                                      // 40: openapi.v1beta2.ListCCUsRequest
	(*ListCCUsResponse)(nil),                                                     // 41: openapi.v1beta2.ListCCUsResponse
	(*ChangefeedCCU)(nil),                                                        // 42: openapi.v1beta2.ChangefeedCCU
	(*TableConfig)(nil),                                                          // 43: openapi.v1beta2.TableConfig
	(*StartPosition)(nil),                                                        // 44: openapi.v1beta2.StartPosition
	(*Connection)(nil),                                                           // 45: openapi.v1beta2.Connection
	(*NetworkInfo)(nil),                                                          // 46: openapi.v1beta2.NetworkInfo
	(*KafkaDownstreamConfig)(nil),                                                // 47: openapi.v1beta2.KafkaDownstreamConfig
	(*MySQLDownstreamConfig)(nil),                                                // 48: openapi.v1beta2.MySQLDownstreamConfig
	(*S3DataFormat)(nil),                                                         // 49: openapi.v1beta2.S3DataFormat
	(*StorageFlushConfig)(nil),                                                   // 50: openapi.v1beta2.StorageFlushConfig
	(*S3DownstreamConfig)(nil),                                                   // 51: openapi.v1beta2.S3DownstreamConfig
	(*GcsDownstreamConfig)(nil),                                                  // 52: openapi.v1beta2.GcsDownstreamConfig
	(*PulsarDownstreamConfig)(nil),                                               // 53: openapi.v1beta2.PulsarDownstreamConfig
	(*DescribeSchemaTableResponse_SchemaInfo)(nil),                               // 54: openapi.v1beta2.DescribeSchemaTableResponse.SchemaInfo
	(*KafkaDownstreamConfig_Broker)(nil),                                         // 55: openapi.v1beta2.KafkaDownstreamConfig.Broker
	(*KafkaDownstreamConfig_Authentication)(nil),                                 // 56: openapi.v1beta2.KafkaDownstreamConfig.Authentication
	(*KafkaDownstreamConfig_DataFormat)(nil),                                     // 57: openapi.v1beta2.KafkaDownstreamConfig.DataFormat
	(*KafkaDownstreamConfig_TopicPartitionConfig)(nil),                           // 58: openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig
	(*KafkaDownstreamConfig_ColumnSelector)(nil),                                 // 59: openapi.v1beta2.KafkaDownstreamConfig.ColumnSelector
	(*KafkaDownstreamConfig_DataFormat_AvroConfig)(nil),                          // 60: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig
	(*KafkaDownstreamConfig_DataFormat_DebeziumConfig)(nil),                      // 61: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.DebeziumConfig
	(*KafkaDownstreamConfig_DataFormat_AvroConfig_SchemaRegistry)(nil),           // 62: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.SchemaRegistry
	(*KafkaDownstreamConfig_TopicPartitionConfig_PartitionDispatcherConfig)(nil), // 63: openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcherConfig
	(*S3DownstreamConfig_Endpoint)(nil),                                          // 64: openapi.v1beta2.S3DownstreamConfig.Endpoint
	(*GcsDownstreamConfig_Endpoint)(nil),                                         // 65: openapi.v1beta2.GcsDownstreamConfig.Endpoint
	(*PulsarDownstreamConfig_Authentication)(nil),                                // 66: openapi.v1beta2.PulsarDownstreamConfig.Authentication
	(*PulsarDownstreamConfig_DataFormat)(nil),                                    // 67: openapi.v1beta2.PulsarDownstreamConfig.DataFormat
	(*PulsarDownstreamConfig_TopicDistribution)(nil),                             // 68: openapi.v1beta2.PulsarDownstreamConfig.TopicDistribution
	(*PulsarDownstreamConfig_AdvancedSetting)(nil),                               // 69: openapi.v1beta2.PulsarDownstreamConfig.AdvancedSetting
	(*timestamppb.Timestamp)(nil),                                                // 70: google.protobuf.Timestamp
	(*emptypb.Empty)(nil),                                                        // 71: google.protobuf.Empty
}
var file_openapi_v1beta2_changefeed_proto_depIdxs = []int32{
	0,  // 0: openapi.v1beta2.ListChangefeedsRequest.downstream_type:type_name -> openapi.v1beta2.DownstreamType
	24, // 1: openapi.v1beta2.ListChangefeedsResponse.changefeeds:type_name -> openapi.v1beta2.Changefeed
	46, // 2: openapi.v1beta2.Changefeed.network_info:type_name -> openapi.v1beta2.NetworkInfo
	1,  // 3: openapi.v1beta2.Changefeed.state:type_name -> openapi.v1beta2.Changefeed.State
	70, // 4: openapi.v1beta2.Changefeed.create_time:type_name -> google.protobuf.Timestamp
	70, // 5: openapi.v1beta2.Changefeed.checkpoint_ts:type_name -> google.protobuf.Timestamp
	0,  // 6: openapi.v1beta2.Changefeed.downstream_type:type_name -> openapi.v1beta2.DownstreamType
	43, // 7: openapi.v1beta2.Changefeed.table_config:type_name -> openapi.v1beta2.TableConfig
	44, // 8: openapi.v1beta2.Changefeed.start_position:type_name -> openapi.v1beta2.StartPosition
	47, // 9: openapi.v1beta2.Changefeed.kafka:type_name -> openapi.v1beta2.KafkaDownstreamConfig
	48, // 10: openapi.v1beta2.Changefeed.mysql:type_name -> openapi.v1beta2.MySQLDownstreamConfig
	51, // 11: openapi.v1beta2.Changefeed.s3:type_name -> openapi.v1beta2.S3DownstreamConfig
	52, // 12: openapi.v1beta2.Changefeed.gcs:type_name -> openapi.v1beta2.GcsDownstreamConfig
	53, // 13: openapi.v1beta2.Changefeed.pulsar:type_name -> openapi.v1beta2.PulsarDownstreamConfig
	31, // 14: openapi.v1beta2.EventFilters.event_filters:type_name -> openapi.v1beta2.EventFilter
	31, // 15: openapi.v1beta2.SetEventFiltersResponse.event_filters:type_name -> openapi.v1beta2.EventFilter
	31, // 16: openapi.v1beta2.SetEventFiltersRequest.event_filters:type_name -> openapi.v1beta2.EventFilter
	24, // 17: openapi.v1beta2.CreateChangefeedRequest.changefeed:type_name -> openapi.v1beta2.Changefeed
	43, // 18: openapi.v1beta2.EditChangefeedDownstreamConfigRequest.table_config:type_name -> openapi.v1beta2.TableConfig
	0,  // 19: openapi.v1beta2.EditChangefeedDownstreamConfigRequest.downstream_type:type_name -> openapi.v1beta2.DownstreamType
	47, // 20: openapi.v1beta2.EditChangefeedDownstreamConfigRequest.kafka:type_name -> openapi.v1beta2.KafkaDownstreamConfig
	48, // 21: openapi.v1beta2.EditChangefeedDownstreamConfigRequest.mysql:type_name -> openapi.v1beta2.MySQLDownstreamConfig
	51, // 22: openapi.v1beta2.EditChangefeedDownstreamConfigRequest.s3:type_name -> openapi.v1beta2.S3DownstreamConfig
	52, // 23: openapi.v1beta2.EditChangefeedDownstreamConfigRequest.gcs:type_name -> openapi.v1beta2.GcsDownstreamConfig
	53, // 24: openapi.v1beta2.EditChangefeedDownstreamConfigRequest.pulsar:type_name -> openapi.v1beta2.PulsarDownstreamConfig
	46, // 25: openapi.v1beta2.TestConnectionRequest.network_info:type_name -> openapi.v1beta2.NetworkInfo
	0,  // 26: openapi.v1beta2.TestConnectionRequest.downstream_type:type_name -> openapi.v1beta2.DownstreamType
	47, // 27: openapi.v1beta2.TestConnectionRequest.kafka:type_name -> openapi.v1beta2.KafkaDownstreamConfig
	48, // 28: openapi.v1beta2.TestConnectionRequest.mysql:type_name -> openapi.v1beta2.MySQLDownstreamConfig
	51, // 29: openapi.v1beta2.TestConnectionRequest.s3:type_name -> openapi.v1beta2.S3DownstreamConfig
	52, // 30: openapi.v1beta2.TestConnectionRequest.gcs:type_name -> openapi.v1beta2.GcsDownstreamConfig
	53, // 31: openapi.v1beta2.TestConnectionRequest.pulsar:type_name -> openapi.v1beta2.PulsarDownstreamConfig
	54, // 32: openapi.v1beta2.DescribeSchemaTableResponse.schemas:type_name -> openapi.v1beta2.DescribeSchemaTableResponse.SchemaInfo
	70, // 33: openapi.v1beta2.DescribeSchemaTableResponse.gc_safe_point:type_name -> google.protobuf.Timestamp
	42, // 34: openapi.v1beta2.ListCCUsResponse.ccus:type_name -> openapi.v1beta2.ChangefeedCCU
	2,  // 35: openapi.v1beta2.TableConfig.mode:type_name -> openapi.v1beta2.TableConfig.Mode
	31, // 36: openapi.v1beta2.TableConfig.event_filters:type_name -> openapi.v1beta2.EventFilter
	3,  // 37: openapi.v1beta2.StartPosition.mode:type_name -> openapi.v1beta2.StartPosition.Mode
	4,  // 38: openapi.v1beta2.NetworkInfo.network_type:type_name -> openapi.v1beta2.NetworkInfo.NetworkType
	55, // 39: openapi.v1beta2.KafkaDownstreamConfig.broker:type_name -> openapi.v1beta2.KafkaDownstreamConfig.Broker
	56, // 40: openapi.v1beta2.KafkaDownstreamConfig.authentication:type_name -> openapi.v1beta2.KafkaDownstreamConfig.Authentication
	57, // 41: openapi.v1beta2.KafkaDownstreamConfig.data_format:type_name -> openapi.v1beta2.KafkaDownstreamConfig.DataFormat
	58, // 42: openapi.v1beta2.KafkaDownstreamConfig.topic_partition_config:type_name -> openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig
	59, // 43: openapi.v1beta2.KafkaDownstreamConfig.column_selectors:type_name -> openapi.v1beta2.KafkaDownstreamConfig.ColumnSelector
	45, // 44: openapi.v1beta2.MySQLDownstreamConfig.connection:type_name -> openapi.v1beta2.Connection
	14, // 45: openapi.v1beta2.S3DataFormat.protocol:type_name -> openapi.v1beta2.S3DataFormat.Protocol
	13, // 46: openapi.v1beta2.S3DataFormat.date_separator:type_name -> openapi.v1beta2.S3DataFormat.DateSeparator
	15, // 47: openapi.v1beta2.S3DataFormat.binary_encoding_method:type_name -> openapi.v1beta2.S3DataFormat.BinaryEncodingMethod
	64, // 48: openapi.v1beta2.S3DownstreamConfig.endpoint:type_name -> openapi.v1beta2.S3DownstreamConfig.Endpoint
	49, // 49: openapi.v1beta2.S3DownstreamConfig.data_format:type_name -> openapi.v1beta2.S3DataFormat
	50, // 50: openapi.v1beta2.S3DownstreamConfig.storage_flush_config:type_name -> openapi.v1beta2.StorageFlushConfig
	65, // 51: openapi.v1beta2.GcsDownstreamConfig.endpoint:type_name -> openapi.v1beta2.GcsDownstreamConfig.Endpoint
	49, // 52: openapi.v1beta2.GcsDownstreamConfig.data_format:type_name -> openapi.v1beta2.S3DataFormat
	50, // 53: openapi.v1beta2.GcsDownstreamConfig.storage_flush_config:type_name -> openapi.v1beta2.StorageFlushConfig
	18, // 54: openapi.v1beta2.PulsarDownstreamConfig.destination_protocol:type_name -> openapi.v1beta2.PulsarDownstreamConfig.DestinationProtocol
	66, // 55: openapi.v1beta2.PulsarDownstreamConfig.authentication:type_name -> openapi.v1beta2.PulsarDownstreamConfig.Authentication
	19, // 56: openapi.v1beta2.PulsarDownstreamConfig.compression:type_name -> openapi.v1beta2.PulsarDownstreamConfig.CompressionType
	67, // 57: openapi.v1beta2.PulsarDownstreamConfig.data_format:type_name -> openapi.v1beta2.PulsarDownstreamConfig.DataFormat
	68, // 58: openapi.v1beta2.PulsarDownstreamConfig.topic_distribution:type_name -> openapi.v1beta2.PulsarDownstreamConfig.TopicDistribution
	63, // 59: openapi.v1beta2.PulsarDownstreamConfig.partition_dispatchers:type_name -> openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcherConfig
	69, // 60: openapi.v1beta2.PulsarDownstreamConfig.advanced_setting:type_name -> openapi.v1beta2.PulsarDownstreamConfig.AdvancedSetting
	5,  // 61: openapi.v1beta2.KafkaDownstreamConfig.Broker.version:type_name -> openapi.v1beta2.KafkaDownstreamConfig.KafkaVersion
	6,  // 62: openapi.v1beta2.KafkaDownstreamConfig.Broker.compression:type_name -> openapi.v1beta2.KafkaDownstreamConfig.CompressionType
	7,  // 63: openapi.v1beta2.KafkaDownstreamConfig.Authentication.auth_type:type_name -> openapi.v1beta2.KafkaDownstreamConfig.Authentication.AuthType
	8,  // 64: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.protocol:type_name -> openapi.v1beta2.KafkaDownstreamConfig.DataFormat.Protocol
	61, // 65: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.debezium_config:type_name -> openapi.v1beta2.KafkaDownstreamConfig.DataFormat.DebeziumConfig
	60, // 66: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.avro_config:type_name -> openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig
	11, // 67: openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.dispatch_type:type_name -> openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.DispatchType
	63, // 68: openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.partition_dispatchers:type_name -> openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcherConfig
	9,  // 69: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.decimal_handling_mode:type_name -> openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.DecimalHandlingMode
	10, // 70: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.bigint_unsigned_handling_mode:type_name -> openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.BigintUnsignedHandlingMode
	62, // 71: openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.schema_registry:type_name -> openapi.v1beta2.KafkaDownstreamConfig.DataFormat.AvroConfig.SchemaRegistry
	12, // 72: openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcherConfig.partition_type:type_name -> openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.PartitionDispatcher
	16, // 73: openapi.v1beta2.S3DownstreamConfig.Endpoint.auth_type:type_name -> openapi.v1beta2.S3DownstreamConfig.Endpoint.S3AuthType
	17, // 74: openapi.v1beta2.S3DownstreamConfig.Endpoint.provider:type_name -> openapi.v1beta2.S3DownstreamConfig.Endpoint.Provider
	20, // 75: openapi.v1beta2.PulsarDownstreamConfig.Authentication.auth_type:type_name -> openapi.v1beta2.PulsarDownstreamConfig.Authentication.AuthType
	21, // 76: openapi.v1beta2.PulsarDownstreamConfig.DataFormat.protocol:type_name -> openapi.v1beta2.PulsarDownstreamConfig.DataFormat.Protocol
	11, // 77: openapi.v1beta2.PulsarDownstreamConfig.TopicDistribution.dispatch_type:type_name -> openapi.v1beta2.KafkaDownstreamConfig.TopicPartitionConfig.DispatchType
	22, // 78: openapi.v1beta2.ChangefeedService.ListChangefeeds:input_type -> openapi.v1beta2.ListChangefeedsRequest
	25, // 79: openapi.v1beta2.ChangefeedService.GetChangefeed:input_type -> openapi.v1beta2.GetChangefeedRequest
	26, // 80: openapi.v1beta2.ChangefeedService.PauseChangefeed:input_type -> openapi.v1beta2.PauseChangefeedRequest
	27, // 81: openapi.v1beta2.ChangefeedService.ResumeChangefeed:input_type -> openapi.v1beta2.ResumeChangefeedRequest
	33, // 82: openapi.v1beta2.ChangefeedService.CreateChangefeed:input_type -> openapi.v1beta2.CreateChangefeedRequest
	35, // 83: openapi.v1beta2.ChangefeedService.DeleteChangefeed:input_type -> openapi.v1beta2.DeleteChangefeedRequest
	34, // 84: openapi.v1beta2.ChangefeedService.EditChangefeedDownstreamConfig:input_type -> openapi.v1beta2.EditChangefeedDownstreamConfigRequest
	36, // 85: openapi.v1beta2.ChangefeedService.ScaleChangefeed:input_type -> openapi.v1beta2.ScaleChangefeedRequest
	40, // 86: openapi.v1beta2.ChangefeedService.ListCCUs:input_type -> openapi.v1beta2.ListCCUsRequest
	23, // 87: openapi.v1beta2.ChangefeedService.ListChangefeeds:output_type -> openapi.v1beta2.ListChangefeedsResponse
	24, // 88: openapi.v1beta2.ChangefeedService.GetChangefeed:output_type -> openapi.v1beta2.Changefeed
	71, // 89: openapi.v1beta2.ChangefeedService.PauseChangefeed:output_type -> google.protobuf.Empty
	71, // 90: openapi.v1beta2.ChangefeedService.ResumeChangefeed:output_type -> google.protobuf.Empty
	24, // 91: openapi.v1beta2.ChangefeedService.CreateChangefeed:output_type -> openapi.v1beta2.Changefeed
	71, // 92: openapi.v1beta2.ChangefeedService.DeleteChangefeed:output_type -> google.protobuf.Empty
	24, // 93: openapi.v1beta2.ChangefeedService.EditChangefeedDownstreamConfig:output_type -> openapi.v1beta2.Changefeed
	24, // 94: openapi.v1beta2.ChangefeedService.ScaleChangefeed:output_type -> openapi.v1beta2.Changefeed
	41, // 95: openapi.v1beta2.ChangefeedService.ListCCUs:output_type -> openapi.v1beta2.ListCCUsResponse
	87, // [87:96] is the sub-list for method output_type
	78, // [78:87] is the sub-list for method input_type
	78, // [78:78] is the sub-list for extension type_name
	78, // [78:78] is the sub-list for extension extendee
	0,  // [0:78] is the sub-list for field type_name
}

func init() { file_openapi_v1beta2_changefeed_proto_init() }
func file_openapi_v1beta2_changefeed_proto_init() {
	if File_openapi_v1beta2_changefeed_proto != nil {
		return
	}
	file_openapi_v1beta2_changefeed_proto_msgTypes[0].OneofWrappers = []any{}
	file_openapi_v1beta2_changefeed_proto_msgTypes[2].OneofWrappers = []any{
		(*Changefeed_Kafka)(nil),
		(*Changefeed_Mysql)(nil),
		(*Changefeed_S3)(nil),
		(*Changefeed_Gcs)(nil),
		(*Changefeed_Pulsar)(nil),
	}
	file_openapi_v1beta2_changefeed_proto_msgTypes[12].OneofWrappers = []any{
		(*EditChangefeedDownstreamConfigRequest_Kafka)(nil),
		(*EditChangefeedDownstreamConfigRequest_Mysql)(nil),
		(*EditChangefeedDownstreamConfigRequest_S3)(nil),
		(*EditChangefeedDownstreamConfigRequest_Gcs)(nil),
		(*EditChangefeedDownstreamConfigRequest_Pulsar)(nil),
	}
	file_openapi_v1beta2_changefeed_proto_msgTypes[15].OneofWrappers = []any{
		(*TestConnectionRequest_Kafka)(nil),
		(*TestConnectionRequest_Mysql)(nil),
		(*TestConnectionRequest_S3)(nil),
		(*TestConnectionRequest_Gcs)(nil),
		(*TestConnectionRequest_Pulsar)(nil),
	}
	file_openapi_v1beta2_changefeed_proto_msgTypes[21].OneofWrappers = []any{}
	file_openapi_v1beta2_changefeed_proto_msgTypes[22].OneofWrappers = []any{
		(*StartPosition_StartTso)(nil),
		(*StartPosition_StartTimestamp)(nil),
	}
	file_openapi_v1beta2_changefeed_proto_msgTypes[24].OneofWrappers = []any{}
	file_openapi_v1beta2_changefeed_proto_msgTypes[34].OneofWrappers = []any{}
	file_openapi_v1beta2_changefeed_proto_msgTypes[35].OneofWrappers = []any{
		(*KafkaDownstreamConfig_DataFormat_DebeziumConfig_)(nil),
		(*KafkaDownstreamConfig_DataFormat_AvroConfig_)(nil),
	}
	file_openapi_v1beta2_changefeed_proto_msgTypes[36].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_openapi_v1beta2_changefeed_proto_rawDesc), len(file_openapi_v1beta2_changefeed_proto_rawDesc)),
			NumEnums:      22,
			NumMessages:   48,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_openapi_v1beta2_changefeed_proto_goTypes,
		DependencyIndexes: file_openapi_v1beta2_changefeed_proto_depIdxs,
		EnumInfos:         file_openapi_v1beta2_changefeed_proto_enumTypes,
		MessageInfos:      file_openapi_v1beta2_changefeed_proto_msgTypes,
	}.Build()
	File_openapi_v1beta2_changefeed_proto = out.File
	file_openapi_v1beta2_changefeed_proto_goTypes = nil
	file_openapi_v1beta2_changefeed_proto_depIdxs = nil
}
