diff --git a/backend/pkg/protogen/redpanda/api/common/v1/errordetails.pb.go b/backend/pkg/protogen/redpanda/api/common/v1/errordetails.pb.go
new file mode 100644
index 000000000..1a318b99c
--- /dev/null
+++ b/backend/pkg/protogen/redpanda/api/common/v1/errordetails.pb.go
@@ -0,0 +1,325 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc (unknown)
+// source: redpanda/api/common/v1/errordetails.proto
+
+package commonv1
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ status "google.golang.org/genproto/googleapis/rpc/status"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ anypb "google.golang.org/protobuf/types/known/anypb"
+)
+
+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)
+)
+
+// AttemptInfo contains information about retryable actions and their specific attempts.
+type AttemptInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Attempts []*AttemptInfo_Attempt `protobuf:"bytes,1,rep,name=attempts,proto3" json:"attempts,omitempty"`
+}
+
+func (x *AttemptInfo) Reset() {
+ *x = AttemptInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_redpanda_api_common_v1_errordetails_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AttemptInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AttemptInfo) ProtoMessage() {}
+
+func (x *AttemptInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_redpanda_api_common_v1_errordetails_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AttemptInfo.ProtoReflect.Descriptor instead.
+func (*AttemptInfo) Descriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1_errordetails_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *AttemptInfo) GetAttempts() []*AttemptInfo_Attempt {
+ if x != nil {
+ return x.Attempts
+ }
+ return nil
+}
+
+// ExternalError is an error that may be returned to external users. Other
+// errors thrown by internal systems are discarded by default, so internal
+// errors with sensitive information are not exposed.
+type ExternalError struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
+ Details []*anypb.Any `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"`
+}
+
+func (x *ExternalError) Reset() {
+ *x = ExternalError{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_redpanda_api_common_v1_errordetails_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ExternalError) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExternalError) ProtoMessage() {}
+
+func (x *ExternalError) ProtoReflect() protoreflect.Message {
+ mi := &file_redpanda_api_common_v1_errordetails_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExternalError.ProtoReflect.Descriptor instead.
+func (*ExternalError) Descriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1_errordetails_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *ExternalError) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+func (x *ExternalError) GetDetails() []*anypb.Any {
+ if x != nil {
+ return x.Details
+ }
+ return nil
+}
+
+type AttemptInfo_Attempt struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
+ Status *status.Status `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+}
+
+func (x *AttemptInfo_Attempt) Reset() {
+ *x = AttemptInfo_Attempt{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_redpanda_api_common_v1_errordetails_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AttemptInfo_Attempt) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AttemptInfo_Attempt) ProtoMessage() {}
+
+func (x *AttemptInfo_Attempt) ProtoReflect() protoreflect.Message {
+ mi := &file_redpanda_api_common_v1_errordetails_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AttemptInfo_Attempt.ProtoReflect.Descriptor instead.
+func (*AttemptInfo_Attempt) Descriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1_errordetails_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *AttemptInfo_Attempt) GetNumber() int32 {
+ if x != nil {
+ return x.Number
+ }
+ return 0
+}
+
+func (x *AttemptInfo_Attempt) GetStatus() *status.Status {
+ if x != nil {
+ return x.Status
+ }
+ return nil
+}
+
+var File_redpanda_api_common_v1_errordetails_proto protoreflect.FileDescriptor
+
+var file_redpanda_api_common_v1_errordetails_proto_rawDesc = []byte{
+ 0x0a, 0x29, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x64, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x72, 0x65, 0x64,
+ 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x01, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x65,
+ 0x6d, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d,
+ 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x65, 0x64, 0x70,
+ 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41,
+ 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,
+ 0x1a, 0x4d, 0x0a, 0x07, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e,
+ 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d,
+ 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63,
+ 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
+ 0x59, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e,
+ 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x83, 0x02, 0x0a, 0x1a, 0x63,
+ 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x57,
+ 0x62, 0x75, 0x66, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f,
+ 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x75, 0x66,
+ 0x66, 0x65, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61,
+ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x43, 0xaa, 0x02, 0x16,
+ 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x16, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64,
+ 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2,
+ 0x02, 0x22, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x19, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a,
+ 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31,
+ 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_redpanda_api_common_v1_errordetails_proto_rawDescOnce sync.Once
+ file_redpanda_api_common_v1_errordetails_proto_rawDescData = file_redpanda_api_common_v1_errordetails_proto_rawDesc
+)
+
+func file_redpanda_api_common_v1_errordetails_proto_rawDescGZIP() []byte {
+ file_redpanda_api_common_v1_errordetails_proto_rawDescOnce.Do(func() {
+ file_redpanda_api_common_v1_errordetails_proto_rawDescData = protoimpl.X.CompressGZIP(file_redpanda_api_common_v1_errordetails_proto_rawDescData)
+ })
+ return file_redpanda_api_common_v1_errordetails_proto_rawDescData
+}
+
+var file_redpanda_api_common_v1_errordetails_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_redpanda_api_common_v1_errordetails_proto_goTypes = []interface{}{
+ (*AttemptInfo)(nil), // 0: redpanda.api.common.v1.AttemptInfo
+ (*ExternalError)(nil), // 1: redpanda.api.common.v1.ExternalError
+ (*AttemptInfo_Attempt)(nil), // 2: redpanda.api.common.v1.AttemptInfo.Attempt
+ (*anypb.Any)(nil), // 3: google.protobuf.Any
+ (*status.Status)(nil), // 4: google.rpc.Status
+}
+var file_redpanda_api_common_v1_errordetails_proto_depIdxs = []int32{
+ 2, // 0: redpanda.api.common.v1.AttemptInfo.attempts:type_name -> redpanda.api.common.v1.AttemptInfo.Attempt
+ 3, // 1: redpanda.api.common.v1.ExternalError.details:type_name -> google.protobuf.Any
+ 4, // 2: redpanda.api.common.v1.AttemptInfo.Attempt.status:type_name -> google.rpc.Status
+ 3, // [3:3] is the sub-list for method output_type
+ 3, // [3:3] is the sub-list for method input_type
+ 3, // [3:3] is the sub-list for extension type_name
+ 3, // [3:3] is the sub-list for extension extendee
+ 0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_redpanda_api_common_v1_errordetails_proto_init() }
+func file_redpanda_api_common_v1_errordetails_proto_init() {
+ if File_redpanda_api_common_v1_errordetails_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_redpanda_api_common_v1_errordetails_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttemptInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_redpanda_api_common_v1_errordetails_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ExternalError); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_redpanda_api_common_v1_errordetails_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttemptInfo_Attempt); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_redpanda_api_common_v1_errordetails_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_redpanda_api_common_v1_errordetails_proto_goTypes,
+ DependencyIndexes: file_redpanda_api_common_v1_errordetails_proto_depIdxs,
+ MessageInfos: file_redpanda_api_common_v1_errordetails_proto_msgTypes,
+ }.Build()
+ File_redpanda_api_common_v1_errordetails_proto = out.File
+ file_redpanda_api_common_v1_errordetails_proto_rawDesc = nil
+ file_redpanda_api_common_v1_errordetails_proto_goTypes = nil
+ file_redpanda_api_common_v1_errordetails_proto_depIdxs = nil
+}
diff --git a/backend/pkg/protogen/redpanda/api/common/v1/linthint.pb.go b/backend/pkg/protogen/redpanda/api/common/v1/linthint.pb.go
new file mode 100644
index 000000000..3122d31cf
--- /dev/null
+++ b/backend/pkg/protogen/redpanda/api/common/v1/linthint.pb.go
@@ -0,0 +1,194 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc (unknown)
+// source: redpanda/api/common/v1/linthint.proto
+
+package commonv1
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+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)
+)
+
+// LintHint is a generic linting hint.
+type LintHint struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Line number of the lint.
+ Line int32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"`
+ // Column number of the lint.
+ Column int32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"`
+ // The hint message.
+ Hint string `protobuf:"bytes,3,opt,name=hint,proto3" json:"hint,omitempty"`
+ // Optional lint type or enum.
+ LintType string `protobuf:"bytes,4,opt,name=lint_type,json=lintType,proto3" json:"lint_type,omitempty"`
+}
+
+func (x *LintHint) Reset() {
+ *x = LintHint{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_redpanda_api_common_v1_linthint_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *LintHint) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LintHint) ProtoMessage() {}
+
+func (x *LintHint) ProtoReflect() protoreflect.Message {
+ mi := &file_redpanda_api_common_v1_linthint_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use LintHint.ProtoReflect.Descriptor instead.
+func (*LintHint) Descriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1_linthint_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *LintHint) GetLine() int32 {
+ if x != nil {
+ return x.Line
+ }
+ return 0
+}
+
+func (x *LintHint) GetColumn() int32 {
+ if x != nil {
+ return x.Column
+ }
+ return 0
+}
+
+func (x *LintHint) GetHint() string {
+ if x != nil {
+ return x.Hint
+ }
+ return ""
+}
+
+func (x *LintHint) GetLintType() string {
+ if x != nil {
+ return x.LintType
+ }
+ return ""
+}
+
+var File_redpanda_api_common_v1_linthint_proto protoreflect.FileDescriptor
+
+var file_redpanda_api_common_v1_linthint_proto_rawDesc = []byte{
+ 0x0a, 0x25, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x6e, 0x74, 0x68, 0x69, 0x6e,
+ 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64,
+ 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x22,
+ 0x67, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x74, 0x48, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c,
+ 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12,
+ 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c,
+ 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x6c, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0xff, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d,
+ 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x4c, 0x69, 0x6e, 0x74, 0x68, 0x69, 0x6e,
+ 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x57, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x75,
+ 0x69, 0x6c, 0x64, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61,
+ 0x6e, 0x64, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2f, 0x67,
+ 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x76,
+ 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x43, 0xaa, 0x02, 0x16, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e,
+ 0x64, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x31,
+ 0xca, 0x02, 0x16, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x52, 0x65, 0x64, 0x70,
+ 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c,
+ 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
+ 0x19, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
+}
+
+var (
+ file_redpanda_api_common_v1_linthint_proto_rawDescOnce sync.Once
+ file_redpanda_api_common_v1_linthint_proto_rawDescData = file_redpanda_api_common_v1_linthint_proto_rawDesc
+)
+
+func file_redpanda_api_common_v1_linthint_proto_rawDescGZIP() []byte {
+ file_redpanda_api_common_v1_linthint_proto_rawDescOnce.Do(func() {
+ file_redpanda_api_common_v1_linthint_proto_rawDescData = protoimpl.X.CompressGZIP(file_redpanda_api_common_v1_linthint_proto_rawDescData)
+ })
+ return file_redpanda_api_common_v1_linthint_proto_rawDescData
+}
+
+var file_redpanda_api_common_v1_linthint_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_redpanda_api_common_v1_linthint_proto_goTypes = []interface{}{
+ (*LintHint)(nil), // 0: redpanda.api.common.v1.LintHint
+}
+var file_redpanda_api_common_v1_linthint_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_redpanda_api_common_v1_linthint_proto_init() }
+func file_redpanda_api_common_v1_linthint_proto_init() {
+ if File_redpanda_api_common_v1_linthint_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_redpanda_api_common_v1_linthint_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LintHint); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_redpanda_api_common_v1_linthint_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_redpanda_api_common_v1_linthint_proto_goTypes,
+ DependencyIndexes: file_redpanda_api_common_v1_linthint_proto_depIdxs,
+ MessageInfos: file_redpanda_api_common_v1_linthint_proto_msgTypes,
+ }.Build()
+ File_redpanda_api_common_v1_linthint_proto = out.File
+ file_redpanda_api_common_v1_linthint_proto_rawDesc = nil
+ file_redpanda_api_common_v1_linthint_proto_goTypes = nil
+ file_redpanda_api_common_v1_linthint_proto_depIdxs = nil
+}
diff --git a/backend/pkg/protogen/redpanda/api/common/v1alpha1/common.pb.go b/backend/pkg/protogen/redpanda/api/common/v1alpha1/common.pb.go
new file mode 100644
index 000000000..10f6c4270
--- /dev/null
+++ b/backend/pkg/protogen/redpanda/api/common/v1alpha1/common.pb.go
@@ -0,0 +1,325 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc (unknown)
+// source: redpanda/api/common/v1alpha1/common.proto
+
+package commonv1alpha1
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ code "google.golang.org/genproto/googleapis/rpc/code"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ anypb "google.golang.org/protobuf/types/known/anypb"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type Reason int32
+
+const (
+ Reason_REASON_UNSPECIFIED Reason = 0
+ // The specified resource could not be found.
+ Reason_REASON_RESOURCE_NOT_FOUND Reason = 1
+ // The input provided with the request is invalid.
+ Reason_REASON_INVALID_INPUT Reason = 2
+ // Authentication token is missing.
+ Reason_REASON_NO_AUTHENTICATION_TOKEN Reason = 3
+ // The authentication token provided has expired.
+ Reason_REASON_AUTHENTICATION_TOKEN_EXPIRED Reason = 4
+ // The authentication token provided is invalid.
+ Reason_REASON_AUTHENTICATION_TOKEN_INVALID Reason = 5
+ // The user does not have the necessary permissions.
+ Reason_REASON_PERMISSION_DENIED Reason = 6
+ // The request cannot be completed due to server error.
+ Reason_REASON_SERVER_ERROR Reason = 7
+ // The request rate is too high.
+ Reason_REASON_TOO_MANY_REQUESTS Reason = 8
+ // The request timed out.
+ Reason_REASON_TIMEOUT Reason = 9
+ // The feature is not configured.
+ Reason_REASON_FEATURE_NOT_CONFIGURED Reason = 10
+ // The feature is not supported in the requested environment.
+ Reason_REASON_FEATURE_NOT_SUPPORTED Reason = 11
+)
+
+// Enum value maps for Reason.
+var (
+ Reason_name = map[int32]string{
+ 0: "REASON_UNSPECIFIED",
+ 1: "REASON_RESOURCE_NOT_FOUND",
+ 2: "REASON_INVALID_INPUT",
+ 3: "REASON_NO_AUTHENTICATION_TOKEN",
+ 4: "REASON_AUTHENTICATION_TOKEN_EXPIRED",
+ 5: "REASON_AUTHENTICATION_TOKEN_INVALID",
+ 6: "REASON_PERMISSION_DENIED",
+ 7: "REASON_SERVER_ERROR",
+ 8: "REASON_TOO_MANY_REQUESTS",
+ 9: "REASON_TIMEOUT",
+ 10: "REASON_FEATURE_NOT_CONFIGURED",
+ 11: "REASON_FEATURE_NOT_SUPPORTED",
+ }
+ Reason_value = map[string]int32{
+ "REASON_UNSPECIFIED": 0,
+ "REASON_RESOURCE_NOT_FOUND": 1,
+ "REASON_INVALID_INPUT": 2,
+ "REASON_NO_AUTHENTICATION_TOKEN": 3,
+ "REASON_AUTHENTICATION_TOKEN_EXPIRED": 4,
+ "REASON_AUTHENTICATION_TOKEN_INVALID": 5,
+ "REASON_PERMISSION_DENIED": 6,
+ "REASON_SERVER_ERROR": 7,
+ "REASON_TOO_MANY_REQUESTS": 8,
+ "REASON_TIMEOUT": 9,
+ "REASON_FEATURE_NOT_CONFIGURED": 10,
+ "REASON_FEATURE_NOT_SUPPORTED": 11,
+ }
+)
+
+func (x Reason) Enum() *Reason {
+ p := new(Reason)
+ *p = x
+ return p
+}
+
+func (x Reason) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Reason) Descriptor() protoreflect.EnumDescriptor {
+ return file_redpanda_api_common_v1alpha1_common_proto_enumTypes[0].Descriptor()
+}
+
+func (Reason) Type() protoreflect.EnumType {
+ return &file_redpanda_api_common_v1alpha1_common_proto_enumTypes[0]
+}
+
+func (x Reason) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Reason.Descriptor instead.
+func (Reason) EnumDescriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1alpha1_common_proto_rawDescGZIP(), []int{0}
+}
+
+// Modified variant of google.rpc.Status, that uses enum instead of int32 for
+// code, so it's nicer in REST.
+// The `Status` type defines a logical error model that is suitable for
+// different programming environments, including REST APIs and RPC APIs. It is
+// used by [gRPC](https://github.com/grpc). Each `Status` message contains
+// three pieces of data: error code, error message, and error details.
+//
+// You can find out more about this error model and how to work with it in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
+type ErrorStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The status code, which should be an enum value of
+ // [google.rpc.Code][google.rpc.Code].
+ Code code.Code `protobuf:"varint,1,opt,name=code,proto3,enum=google.rpc.Code" json:"code,omitempty"`
+ // A developer-facing error message, which should be in English. Any
+ // user-facing error message should be localized and sent in the
+ // [google.rpc.Status.details][google.rpc.Status.details] field, or localized
+ // by the client.
+ Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
+ // A list of messages that carry the error details. There is a common set of
+ // message types for APIs to use.
+ Details []*anypb.Any `protobuf:"bytes,3,rep,name=details,proto3" json:"details,omitempty"`
+}
+
+func (x *ErrorStatus) Reset() {
+ *x = ErrorStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_redpanda_api_common_v1alpha1_common_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ErrorStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ErrorStatus) ProtoMessage() {}
+
+func (x *ErrorStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_redpanda_api_common_v1alpha1_common_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ErrorStatus.ProtoReflect.Descriptor instead.
+func (*ErrorStatus) Descriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1alpha1_common_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ErrorStatus) GetCode() code.Code {
+ if x != nil {
+ return x.Code
+ }
+ return code.Code(0)
+}
+
+func (x *ErrorStatus) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+func (x *ErrorStatus) GetDetails() []*anypb.Any {
+ if x != nil {
+ return x.Details
+ }
+ return nil
+}
+
+var File_redpanda_api_common_v1alpha1_common_proto protoreflect.FileDescriptor
+
+var file_redpanda_api_common_v1alpha1_common_proto_rawDesc = []byte{
+ 0x0a, 0x29, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x72, 0x65, 0x64,
+ 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63,
+ 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7d, 0x0a, 0x0b, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x04, 0x63, 0x6f,
+ 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
+ 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e,
+ 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2a, 0xfd, 0x02, 0x0a, 0x06, 0x52,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f,
+ 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a,
+ 0x19, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
+ 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14,
+ 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x49,
+ 0x4e, 0x50, 0x55, 0x54, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e,
+ 0x5f, 0x4e, 0x4f, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45,
+ 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45,
+ 0x44, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x55,
+ 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4b,
+ 0x45, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18,
+ 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45,
+ 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x4f,
+ 0x4f, 0x5f, 0x4d, 0x41, 0x4e, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, 0x10,
+ 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45,
+ 0x4f, 0x55, 0x54, 0x10, 0x09, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f,
+ 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46,
+ 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x41, 0x53,
+ 0x4f, 0x4e, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53,
+ 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0b, 0x42, 0xa7, 0x02, 0x0a, 0x20, 0x63,
+ 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42,
+ 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x63,
+ 0x62, 0x75, 0x66, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f,
+ 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x75, 0x66,
+ 0x66, 0x65, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61,
+ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x43, 0xaa, 0x02, 0x1c, 0x52, 0x65, 0x64, 0x70,
+ 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1c, 0x52, 0x65, 0x64, 0x70, 0x61,
+ 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x28, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e,
+ 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0xea, 0x02, 0x1f, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41,
+ 0x70, 0x69, 0x3a, 0x3a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_redpanda_api_common_v1alpha1_common_proto_rawDescOnce sync.Once
+ file_redpanda_api_common_v1alpha1_common_proto_rawDescData = file_redpanda_api_common_v1alpha1_common_proto_rawDesc
+)
+
+func file_redpanda_api_common_v1alpha1_common_proto_rawDescGZIP() []byte {
+ file_redpanda_api_common_v1alpha1_common_proto_rawDescOnce.Do(func() {
+ file_redpanda_api_common_v1alpha1_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_redpanda_api_common_v1alpha1_common_proto_rawDescData)
+ })
+ return file_redpanda_api_common_v1alpha1_common_proto_rawDescData
+}
+
+var file_redpanda_api_common_v1alpha1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_redpanda_api_common_v1alpha1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_redpanda_api_common_v1alpha1_common_proto_goTypes = []interface{}{
+ (Reason)(0), // 0: redpanda.api.common.v1alpha1.Reason
+ (*ErrorStatus)(nil), // 1: redpanda.api.common.v1alpha1.ErrorStatus
+ (code.Code)(0), // 2: google.rpc.Code
+ (*anypb.Any)(nil), // 3: google.protobuf.Any
+}
+var file_redpanda_api_common_v1alpha1_common_proto_depIdxs = []int32{
+ 2, // 0: redpanda.api.common.v1alpha1.ErrorStatus.code:type_name -> google.rpc.Code
+ 3, // 1: redpanda.api.common.v1alpha1.ErrorStatus.details:type_name -> google.protobuf.Any
+ 2, // [2:2] is the sub-list for method output_type
+ 2, // [2:2] is the sub-list for method input_type
+ 2, // [2:2] is the sub-list for extension type_name
+ 2, // [2:2] is the sub-list for extension extendee
+ 0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_redpanda_api_common_v1alpha1_common_proto_init() }
+func file_redpanda_api_common_v1alpha1_common_proto_init() {
+ if File_redpanda_api_common_v1alpha1_common_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_redpanda_api_common_v1alpha1_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ErrorStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_redpanda_api_common_v1alpha1_common_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_redpanda_api_common_v1alpha1_common_proto_goTypes,
+ DependencyIndexes: file_redpanda_api_common_v1alpha1_common_proto_depIdxs,
+ EnumInfos: file_redpanda_api_common_v1alpha1_common_proto_enumTypes,
+ MessageInfos: file_redpanda_api_common_v1alpha1_common_proto_msgTypes,
+ }.Build()
+ File_redpanda_api_common_v1alpha1_common_proto = out.File
+ file_redpanda_api_common_v1alpha1_common_proto_rawDesc = nil
+ file_redpanda_api_common_v1alpha1_common_proto_goTypes = nil
+ file_redpanda_api_common_v1alpha1_common_proto_depIdxs = nil
+}
diff --git a/backend/pkg/protogen/redpanda/api/common/v1alpha1/money.pb.go b/backend/pkg/protogen/redpanda/api/common/v1alpha1/money.pb.go
new file mode 100644
index 000000000..cab9c8327
--- /dev/null
+++ b/backend/pkg/protogen/redpanda/api/common/v1alpha1/money.pb.go
@@ -0,0 +1,238 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc (unknown)
+// source: redpanda/api/common/v1alpha1/money.proto
+
+package commonv1alpha1
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type Currency int32
+
+const (
+ Currency_CURRENCY_UNSPECIFIED Currency = 0
+ Currency_CURRENCY_CURRENCY_USD_CENTS Currency = 1
+)
+
+// Enum value maps for Currency.
+var (
+ Currency_name = map[int32]string{
+ 0: "CURRENCY_UNSPECIFIED",
+ 1: "CURRENCY_CURRENCY_USD_CENTS",
+ }
+ Currency_value = map[string]int32{
+ "CURRENCY_UNSPECIFIED": 0,
+ "CURRENCY_CURRENCY_USD_CENTS": 1,
+ }
+)
+
+func (x Currency) Enum() *Currency {
+ p := new(Currency)
+ *p = x
+ return p
+}
+
+func (x Currency) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Currency) Descriptor() protoreflect.EnumDescriptor {
+ return file_redpanda_api_common_v1alpha1_money_proto_enumTypes[0].Descriptor()
+}
+
+func (Currency) Type() protoreflect.EnumType {
+ return &file_redpanda_api_common_v1alpha1_money_proto_enumTypes[0]
+}
+
+func (x Currency) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Currency.Descriptor instead.
+func (Currency) EnumDescriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1alpha1_money_proto_rawDescGZIP(), []int{0}
+}
+
+type Money struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Amount is a decimal number.
+ // Examples:
+ // 10
+ // 10.15
+ Amount string `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount,omitempty"`
+ Currency Currency `protobuf:"varint,2,opt,name=currency,proto3,enum=redpanda.api.common.v1alpha1.Currency" json:"currency,omitempty"`
+}
+
+func (x *Money) Reset() {
+ *x = Money{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_redpanda_api_common_v1alpha1_money_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Money) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Money) ProtoMessage() {}
+
+func (x *Money) ProtoReflect() protoreflect.Message {
+ mi := &file_redpanda_api_common_v1alpha1_money_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Money.ProtoReflect.Descriptor instead.
+func (*Money) Descriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1alpha1_money_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Money) GetAmount() string {
+ if x != nil {
+ return x.Amount
+ }
+ return ""
+}
+
+func (x *Money) GetCurrency() Currency {
+ if x != nil {
+ return x.Currency
+ }
+ return Currency_CURRENCY_UNSPECIFIED
+}
+
+var File_redpanda_api_common_v1alpha1_money_proto protoreflect.FileDescriptor
+
+var file_redpanda_api_common_v1alpha1_money_proto_rawDesc = []byte{
+ 0x0a, 0x28, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d,
+ 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x72, 0x65, 0x64, 0x70,
+ 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76,
+ 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x73, 0x0a, 0x05, 0x4d, 0x6f, 0x6e,
+ 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
+ 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x06, 0xe0, 0x41,
+ 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x2a, 0x45,
+ 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x55,
+ 0x52, 0x52, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x43, 0x59,
+ 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x53, 0x44, 0x5f, 0x43, 0x45,
+ 0x4e, 0x54, 0x53, 0x10, 0x01, 0x42, 0xa6, 0x02, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65,
+ 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0a, 0x4d, 0x6f, 0x6e, 0x65,
+ 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x63, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x75,
+ 0x69, 0x6c, 0x64, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61,
+ 0x6e, 0x64, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2f, 0x67,
+ 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03,
+ 0x52, 0x41, 0x43, 0xaa, 0x02, 0x1c, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41,
+ 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0xca, 0x02, 0x1c, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70,
+ 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0xe2, 0x02, 0x28, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69,
+ 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1f, 0x52,
+ 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_redpanda_api_common_v1alpha1_money_proto_rawDescOnce sync.Once
+ file_redpanda_api_common_v1alpha1_money_proto_rawDescData = file_redpanda_api_common_v1alpha1_money_proto_rawDesc
+)
+
+func file_redpanda_api_common_v1alpha1_money_proto_rawDescGZIP() []byte {
+ file_redpanda_api_common_v1alpha1_money_proto_rawDescOnce.Do(func() {
+ file_redpanda_api_common_v1alpha1_money_proto_rawDescData = protoimpl.X.CompressGZIP(file_redpanda_api_common_v1alpha1_money_proto_rawDescData)
+ })
+ return file_redpanda_api_common_v1alpha1_money_proto_rawDescData
+}
+
+var file_redpanda_api_common_v1alpha1_money_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_redpanda_api_common_v1alpha1_money_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_redpanda_api_common_v1alpha1_money_proto_goTypes = []interface{}{
+ (Currency)(0), // 0: redpanda.api.common.v1alpha1.Currency
+ (*Money)(nil), // 1: redpanda.api.common.v1alpha1.Money
+}
+var file_redpanda_api_common_v1alpha1_money_proto_depIdxs = []int32{
+ 0, // 0: redpanda.api.common.v1alpha1.Money.currency:type_name -> redpanda.api.common.v1alpha1.Currency
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 1, // [1:1] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_redpanda_api_common_v1alpha1_money_proto_init() }
+func file_redpanda_api_common_v1alpha1_money_proto_init() {
+ if File_redpanda_api_common_v1alpha1_money_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_redpanda_api_common_v1alpha1_money_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Money); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_redpanda_api_common_v1alpha1_money_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_redpanda_api_common_v1alpha1_money_proto_goTypes,
+ DependencyIndexes: file_redpanda_api_common_v1alpha1_money_proto_depIdxs,
+ EnumInfos: file_redpanda_api_common_v1alpha1_money_proto_enumTypes,
+ MessageInfos: file_redpanda_api_common_v1alpha1_money_proto_msgTypes,
+ }.Build()
+ File_redpanda_api_common_v1alpha1_money_proto = out.File
+ file_redpanda_api_common_v1alpha1_money_proto_rawDesc = nil
+ file_redpanda_api_common_v1alpha1_money_proto_goTypes = nil
+ file_redpanda_api_common_v1alpha1_money_proto_depIdxs = nil
+}
diff --git a/backend/pkg/protogen/redpanda/api/common/v1alpha1/options.pb.go b/backend/pkg/protogen/redpanda/api/common/v1alpha1/options.pb.go
new file mode 100644
index 000000000..ffb75dd51
--- /dev/null
+++ b/backend/pkg/protogen/redpanda/api/common/v1alpha1/options.pb.go
@@ -0,0 +1,113 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc (unknown)
+// source: redpanda/api/common/v1alpha1/options.proto
+
+package commonv1alpha1
+
+import (
+ reflect "reflect"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ descriptorpb "google.golang.org/protobuf/types/descriptorpb"
+)
+
+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)
+)
+
+var file_redpanda_api_common_v1alpha1_options_proto_extTypes = []protoimpl.ExtensionInfo{
+ {
+ ExtendedType: (*descriptorpb.MethodOptions)(nil),
+ ExtensionType: ([]string)(nil),
+ Field: 15350,
+ Name: "redpanda.api.common.v1alpha1.required_permission",
+ Tag: "bytes,15350,rep,name=required_permission",
+ Filename: "redpanda/api/common/v1alpha1/options.proto",
+ },
+}
+
+// Extension fields to descriptorpb.MethodOptions.
+var (
+ // repeated string required_permission = 15350;
+ E_RequiredPermission = &file_redpanda_api_common_v1alpha1_options_proto_extTypes[0]
+)
+
+var File_redpanda_api_common_v1alpha1_options_proto protoreflect.FileDescriptor
+
+var file_redpanda_api_common_v1alpha1_options_proto_rawDesc = []byte{
+ 0x0a, 0x2a, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6f,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x72, 0x65,
+ 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3a, 0x50, 0x0a, 0x13,
+ 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x18, 0xf6, 0x77, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75,
+ 0x69, 0x72, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0xa8,
+ 0x02, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x42, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x50, 0x01, 0x5a, 0x63, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x67,
+ 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64,
+ 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x43, 0xaa, 0x02,
+ 0x1c, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1c,
+ 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x28, 0x52,
+ 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1f, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e,
+ 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3a,
+ 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
+}
+
+var file_redpanda_api_common_v1alpha1_options_proto_goTypes = []interface{}{
+ (*descriptorpb.MethodOptions)(nil), // 0: google.protobuf.MethodOptions
+}
+var file_redpanda_api_common_v1alpha1_options_proto_depIdxs = []int32{
+ 0, // 0: redpanda.api.common.v1alpha1.required_permission:extendee -> google.protobuf.MethodOptions
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 0, // [0:1] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_redpanda_api_common_v1alpha1_options_proto_init() }
+func file_redpanda_api_common_v1alpha1_options_proto_init() {
+ if File_redpanda_api_common_v1alpha1_options_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_redpanda_api_common_v1alpha1_options_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 0,
+ NumExtensions: 1,
+ NumServices: 0,
+ },
+ GoTypes: file_redpanda_api_common_v1alpha1_options_proto_goTypes,
+ DependencyIndexes: file_redpanda_api_common_v1alpha1_options_proto_depIdxs,
+ ExtensionInfos: file_redpanda_api_common_v1alpha1_options_proto_extTypes,
+ }.Build()
+ File_redpanda_api_common_v1alpha1_options_proto = out.File
+ file_redpanda_api_common_v1alpha1_options_proto_rawDesc = nil
+ file_redpanda_api_common_v1alpha1_options_proto_goTypes = nil
+ file_redpanda_api_common_v1alpha1_options_proto_depIdxs = nil
+}
diff --git a/backend/pkg/protogen/redpanda/api/common/v1alpha1/pagination.pb.go b/backend/pkg/protogen/redpanda/api/common/v1alpha1/pagination.pb.go
new file mode 100644
index 000000000..eb54d383d
--- /dev/null
+++ b/backend/pkg/protogen/redpanda/api/common/v1alpha1/pagination.pb.go
@@ -0,0 +1,179 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.31.0
+// protoc (unknown)
+// source: redpanda/api/common/v1alpha1/pagination.proto
+
+package commonv1alpha1
+
+import (
+ reflect "reflect"
+ sync "sync"
+
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+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)
+)
+
+// KeySetPageToken represents a pagination token for KeySet pagination.
+// It marks the beginning of a page where records start from the key that
+// satisfies the condition key >= value_greater_equal. Records are sorted
+// alphabetically by key in ascending order.
+type KeySetPageToken struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ ValueGreaterEqual string `protobuf:"bytes,2,opt,name=value_greater_equal,json=valueGreaterEqual,proto3" json:"value_greater_equal,omitempty"`
+}
+
+func (x *KeySetPageToken) Reset() {
+ *x = KeySetPageToken{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_redpanda_api_common_v1alpha1_pagination_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KeySetPageToken) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KeySetPageToken) ProtoMessage() {}
+
+func (x *KeySetPageToken) ProtoReflect() protoreflect.Message {
+ mi := &file_redpanda_api_common_v1alpha1_pagination_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KeySetPageToken.ProtoReflect.Descriptor instead.
+func (*KeySetPageToken) Descriptor() ([]byte, []int) {
+ return file_redpanda_api_common_v1alpha1_pagination_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *KeySetPageToken) GetKey() string {
+ if x != nil {
+ return x.Key
+ }
+ return ""
+}
+
+func (x *KeySetPageToken) GetValueGreaterEqual() string {
+ if x != nil {
+ return x.ValueGreaterEqual
+ }
+ return ""
+}
+
+var File_redpanda_api_common_v1alpha1_pagination_proto protoreflect.FileDescriptor
+
+var file_redpanda_api_common_v1alpha1_pagination_proto_rawDesc = []byte{
+ 0x0a, 0x2d, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x70,
+ 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+ 0x1c, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x22, 0x53, 0x0a,
+ 0x0f, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x67, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x72, 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x11, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x45, 0x71, 0x75,
+ 0x61, 0x6c, 0x42, 0xab, 0x02, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61,
+ 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0f, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x63, 0x62, 0x75, 0x66, 0x2e,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64,
+ 0x70, 0x61, 0x6e, 0x64, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73,
+ 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69,
+ 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2,
+ 0x02, 0x03, 0x52, 0x41, 0x43, 0xaa, 0x02, 0x1c, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61,
+ 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1c, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c,
+ 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0xe2, 0x02, 0x28, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41,
+ 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
+ 0x1f, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_redpanda_api_common_v1alpha1_pagination_proto_rawDescOnce sync.Once
+ file_redpanda_api_common_v1alpha1_pagination_proto_rawDescData = file_redpanda_api_common_v1alpha1_pagination_proto_rawDesc
+)
+
+func file_redpanda_api_common_v1alpha1_pagination_proto_rawDescGZIP() []byte {
+ file_redpanda_api_common_v1alpha1_pagination_proto_rawDescOnce.Do(func() {
+ file_redpanda_api_common_v1alpha1_pagination_proto_rawDescData = protoimpl.X.CompressGZIP(file_redpanda_api_common_v1alpha1_pagination_proto_rawDescData)
+ })
+ return file_redpanda_api_common_v1alpha1_pagination_proto_rawDescData
+}
+
+var file_redpanda_api_common_v1alpha1_pagination_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_redpanda_api_common_v1alpha1_pagination_proto_goTypes = []interface{}{
+ (*KeySetPageToken)(nil), // 0: redpanda.api.common.v1alpha1.KeySetPageToken
+}
+var file_redpanda_api_common_v1alpha1_pagination_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_redpanda_api_common_v1alpha1_pagination_proto_init() }
+func file_redpanda_api_common_v1alpha1_pagination_proto_init() {
+ if File_redpanda_api_common_v1alpha1_pagination_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_redpanda_api_common_v1alpha1_pagination_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KeySetPageToken); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_redpanda_api_common_v1alpha1_pagination_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_redpanda_api_common_v1alpha1_pagination_proto_goTypes,
+ DependencyIndexes: file_redpanda_api_common_v1alpha1_pagination_proto_depIdxs,
+ MessageInfos: file_redpanda_api_common_v1alpha1_pagination_proto_msgTypes,
+ }.Build()
+ File_redpanda_api_common_v1alpha1_pagination_proto = out.File
+ file_redpanda_api_common_v1alpha1_pagination_proto_rawDesc = nil
+ file_redpanda_api_common_v1alpha1_pagination_proto_goTypes = nil
+ file_redpanda_api_common_v1alpha1_pagination_proto_depIdxs = nil
+}
diff --git a/backend/pkg/protogen/redpanda/api/console/v1alpha1/security.pb.go b/backend/pkg/protogen/redpanda/api/console/v1alpha1/security.pb.go
index 74cb572fb..b09ddad94 100644
--- a/backend/pkg/protogen/redpanda/api/console/v1alpha1/security.pb.go
+++ b/backend/pkg/protogen/redpanda/api/console/v1alpha1/security.pb.go
@@ -961,114 +961,109 @@ var file_redpanda_api_console_v1alpha1_security_proto_rawDesc = []byte{
0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e,
0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x1b, 0x62,
0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69,
- 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3b, 0x0a, 0x04, 0x52, 0x6f,
- 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x1f, 0xba, 0x48, 0x1c, 0xc8, 0x01, 0x01, 0x72, 0x17, 0x10, 0x01, 0x18, 0x80, 0x01, 0x32,
- 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2b,
- 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xf8, 0x02, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74,
- 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06,
- 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x72,
- 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01,
- 0x01, 0x12, 0x30, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x05, 0x42, 0x13, 0xba, 0x48, 0x10, 0x1a, 0x0e, 0x18, 0xe8, 0x07, 0x28, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
- 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
- 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
- 0x65, 0x6e, 0x1a, 0xb2, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x0a,
- 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x1c, 0xba, 0x48, 0x19, 0x72, 0x17, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x28,
- 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2a, 0x29, 0x24,
- 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x41, 0x0a, 0x0d,
- 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x1c, 0xba, 0x48, 0x19, 0x72, 0x17, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e,
- 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2a, 0x29,
- 0x24, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12,
- 0x26, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x09, 0x70, 0x72,
- 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x22, 0x76, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64,
- 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c,
- 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f,
- 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78,
- 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4c, 0x0a, 0x11, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x37, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
- 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e,
- 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f,
- 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x4d, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37,
- 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72,
- 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c,
- 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x4e, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f,
- 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x6f, 0x6c,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, 0xba, 0x48,
- 0x1c, 0xc8, 0x01, 0x01, 0x72, 0x17, 0x10, 0x01, 0x18, 0x80, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61,
- 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72,
- 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52,
- 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x72,
- 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x64, 0x70,
- 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04,
- 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
- 0x73, 0x68, 0x69, 0x70, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x72, 0x0a,
- 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, 0xba, 0x48, 0x1c, 0xc8, 0x01, 0x01, 0x72, 0x17, 0x10,
- 0x01, 0x18, 0x80, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d,
- 0x39, 0x2d, 0x5f, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+ 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x33, 0x0a, 0x04, 0x52, 0x6f,
+ 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x17, 0xba, 0x48, 0x14, 0xc8, 0x01, 0x01, 0x72, 0x0f, 0x10, 0x01, 0x18, 0x80, 0x01, 0x32,
+ 0x08, 0x5e, 0x5b, 0x5e, 0x2c, 0x3d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
+ 0xe4, 0x02, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x09, 0x70, 0x61, 0x67,
+ 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x13, 0xba, 0x48,
+ 0x10, 0x1a, 0x0e, 0x18, 0xe8, 0x07, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
+ 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x9e, 0x01, 0x0a, 0x06, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x72,
+ 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0xba, 0x48, 0x0f, 0x72,
+ 0x0d, 0x18, 0x80, 0x01, 0x32, 0x08, 0x5e, 0x5b, 0x5e, 0x2c, 0x3d, 0x5d, 0x2b, 0x24, 0x52, 0x0a,
+ 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x37, 0x0a, 0x0d, 0x6e, 0x61,
+ 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x12, 0xba, 0x48, 0x0f, 0x72, 0x0d, 0x18, 0x80, 0x01, 0x32, 0x08, 0x5e, 0x5b, 0x5e,
+ 0x2c, 0x3d, 0x5d, 0x2b, 0x24, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01,
+ 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x5f,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x76, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f,
+ 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x72,
+ 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x64,
+ 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
+ 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52,
+ 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70,
+ 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4c,
+ 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x4d, 0x0a, 0x12,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x23, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x3c, 0x0a, 0x0e, 0x47,
+ 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a,
+ 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01, 0x01, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x01, 0x52,
+ 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x47, 0x65,
+ 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a,
+ 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65,
+ 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
+ 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65,
+ 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e,
+ 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62,
+ 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22,
+ 0x60, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01, 0x01, 0x72,
+ 0x05, 0x10, 0x01, 0x18, 0x80, 0x01, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x73, 0x18,
0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x6c,
0x73, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc6, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbe, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, 0xba, 0x48, 0x1c, 0xc8, 0x01, 0x01, 0x72, 0x17, 0x10,
- 0x01, 0x18, 0x80, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d,
- 0x39, 0x2d, 0x5f, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x59, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x3c, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00,
- 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x09, 0x70,
- 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x13,
- 0xba, 0x48, 0x10, 0x1a, 0x0e, 0x18, 0xe8, 0x07, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a,
- 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x37, 0x0a, 0x06,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
- 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x22, 0xa7, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d,
- 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09,
- 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6d, 0x65, 0x6d,
- 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64,
- 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d,
- 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65,
- 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f,
- 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78,
- 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2e, 0x0a, 0x0e, 0x52, 0x6f,
- 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x09,
- 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0xfb, 0x01, 0x0a, 0x1b, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73,
- 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x6f,
- 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, 0xba,
- 0x48, 0x1c, 0xc8, 0x01, 0x01, 0x72, 0x17, 0x10, 0x01, 0x18, 0x80, 0x01, 0x32, 0x10, 0x5e, 0x5b,
- 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2b, 0x24, 0x52, 0x08,
+ 0x73, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xba, 0x48, 0x14, 0xc8, 0x01, 0x01, 0x72, 0x0f, 0x10,
+ 0x01, 0x18, 0x80, 0x01, 0x32, 0x08, 0x5e, 0x5b, 0x5e, 0x2c, 0x3d, 0x5d, 0x2b, 0x24, 0x52, 0x08,
+ 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61,
+ 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c,
+ 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x13, 0xba, 0x48, 0x10, 0x1a, 0x0e, 0x18, 0xe8, 0x07,
+ 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67,
+ 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x37, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2d,
+ 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52,
+ 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x42, 0x09, 0x0a,
+ 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa7, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73,
+ 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69,
+ 0x70, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65,
+ 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x22, 0x2e, 0x0a, 0x0e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
+ 0x73, 0x68, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61,
+ 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
+ 0x61, 0x6c, 0x22, 0xf3, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c,
+ 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xba, 0x48, 0x14, 0xc8, 0x01, 0x01, 0x72, 0x0f, 0x10,
+ 0x01, 0x18, 0x80, 0x01, 0x32, 0x08, 0x5e, 0x5b, 0x5e, 0x2c, 0x3d, 0x5d, 0x2b, 0x24, 0x52, 0x08,
0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x12, 0x3f, 0x0a, 0x03, 0x61, 0x64, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
@@ -1079,89 +1074,88 @@ var file_redpanda_api_console_v1alpha1_security_proto_rawDesc = []byte{
0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
- 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0xea, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64,
+ 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69,
- 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x6f, 0x6c,
- 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, 0xba, 0x48,
- 0x1c, 0xc8, 0x01, 0x01, 0x72, 0x17, 0x10, 0x01, 0x18, 0x80, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61,
- 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72,
- 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64,
- 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65,
- 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
- 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e,
- 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f,
- 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x07, 0x72, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x32, 0xf2, 0x05, 0x0a, 0x0f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
- 0x74, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x70, 0x0a, 0x09, 0x4c, 0x69, 0x73,
- 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64,
- 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e,
- 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x0a, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x72, 0x65, 0x64, 0x70,
- 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x72, 0x65,
- 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
- 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x12, 0x6a, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x72, 0x65,
- 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
- 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52,
- 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x65, 0x64,
- 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f,
- 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x0a,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x72, 0x65, 0x64,
- 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x72,
- 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x82, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65,
- 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x35, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61,
+ 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c,
+ 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xba, 0x48,
+ 0x14, 0xc8, 0x01, 0x01, 0x72, 0x0f, 0x10, 0x01, 0x18, 0x80, 0x01, 0x32, 0x08, 0x5e, 0x5b, 0x5e,
+ 0x2c, 0x3d, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x43, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d,
+ 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
+ 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52,
+ 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65,
- 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72,
- 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12,
- 0x3a, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
+ 0x73, 0x68, 0x69, 0x70, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x32, 0xf2, 0x05,
+ 0x0a, 0x0f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x12, 0x70, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2f,
+ 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
+ 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c,
+ 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x30, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63,
0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
- 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x72, 0x65,
- 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
- 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xae, 0x02, 0x0a, 0x21, 0x63,
- 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x42, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
- 0x01, 0x5a, 0x63, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65,
- 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x67, 0x65, 0x6e, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64,
- 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2f, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x43, 0xaa, 0x02, 0x1d, 0x52,
- 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1d, 0x52,
- 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x29, 0x52,
- 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x52, 0x65, 0x64, 0x70, 0x61,
- 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
+ 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c,
+ 0x65, 0x12, 0x30, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52,
+ 0x6f, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f,
+ 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x0f, 0x4c, 0x69,
+ 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x35, 0x2e,
+ 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e,
+ 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,
+ 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d,
+ 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x91,
+ 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6d,
+ 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x3a, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e,
+ 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f,
+ 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65,
+ 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x00, 0x42, 0xae, 0x02, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61,
+ 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
+ 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x63, 0x67, 0x69, 0x74, 0x68, 0x75,
+ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2d, 0x64,
+ 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2f, 0x62, 0x61, 0x63, 0x6b,
+ 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x67, 0x65, 0x6e,
+ 0x2f, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f,
+ 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x63,
+ 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02,
+ 0x03, 0x52, 0x41, 0x43, 0xaa, 0x02, 0x1d, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e,
+ 0x41, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1d, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c,
+ 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x29, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c,
+ 0x41, 0x70, 0x69, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0xea, 0x02, 0x20, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69,
+ 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
diff --git a/frontend/src/components/pages/acls/Acl.List.tsx b/frontend/src/components/pages/acls/Acl.List.tsx
index 5b4e626ac..8c4bd5129 100644
--- a/frontend/src/components/pages/acls/Acl.List.tsx
+++ b/frontend/src/components/pages/acls/Acl.List.tsx
@@ -424,7 +424,7 @@ const RolesTab = observer(() => {
cell: (ctx) => {
const entry = ctx.row.original;
return <>
-
{entry.name}
diff --git a/frontend/src/components/pages/acls/RoleDetails.tsx b/frontend/src/components/pages/acls/RoleDetails.tsx
index 8e0bacd51..94903d82e 100644
--- a/frontend/src/components/pages/acls/RoleDetails.tsx
+++ b/frontend/src/components/pages/acls/RoleDetails.tsx
@@ -31,20 +31,20 @@ class RoleDetailsPage extends PageComponent<{ roleName: string }> {
@observable isDeleting: boolean = false;
@observable principalSearch: string = '';
+ @observable roleName: string = '';
constructor(p: any) {
super(p);
makeObservable(this);
+ this.roleName = decodeURIComponent(this.props.roleName);
this.deleteRole = this.deleteRole.bind(this);
}
initPage(p: PageInitHelper): void {
- const roleName = decodeURIComponent(this.props.roleName);
-
p.title = 'Role details';
p.addBreadcrumb('Access control', '/security');
p.addBreadcrumb('Roles', '/security/roles');
- p.addBreadcrumb(roleName, `/security/roles/${roleName}`);
+ p.addBreadcrumb(decodeURIComponent(this.props.roleName), `/security/roles/${this.props.roleName}`);
this.refreshData(true);
appGlobal.onRefresh = () => this.refreshData(true);
@@ -65,7 +65,7 @@ class RoleDetailsPage extends PageComponent<{ roleName: string }> {
async deleteRole() {
this.isDeleting = true
try {
- await rolesApi.deleteRole(this.props.roleName, true)
+ await rolesApi.deleteRole(this.roleName, true)
await rolesApi.refreshRoles();
await rolesApi.refreshRoleMembers(); // need to refresh assignments as well, otherwise users will still be marked as having that role, even though it doesn't exist anymore
} finally {
@@ -81,9 +81,9 @@ class RoleDetailsPage extends PageComponent<{ roleName: string }> {
const aclPrincipalGroup = principalGroupsView.principalGroups.find(({
principalType,
principalName
- }) => principalType === 'RedpandaRole' && principalName === this.props.roleName)
+ }) => principalType === 'RedpandaRole' && principalName === this.roleName)
- let members = rolesApi.roleMembers.get(this.props.roleName) ?? []
+ let members = rolesApi.roleMembers.get(this.roleName) ?? []
try {
const quickSearchRegExp = new RegExp(this.principalSearch, 'i')
members = members.filter(({name}) => name.match(quickSearchRegExp))
@@ -91,7 +91,7 @@ class RoleDetailsPage extends PageComponent<{ roleName: string }> {
console.warn('Invalid expression')
}
- const numberOfPrincipals = rolesApi.roleMembers.get(this.props.roleName)?.length ?? 0;
+ const numberOfPrincipals = rolesApi.roleMembers.get(this.roleName)?.length ?? 0;
return <>
@@ -109,7 +109,7 @@ class RoleDetailsPage extends PageComponent<{ roleName: string }> {
Delete
}
- roleName={this.props.roleName}
+ roleName={this.roleName}
/>
diff --git a/frontend/src/components/pages/acls/RoleEditPage.tsx b/frontend/src/components/pages/acls/RoleEditPage.tsx
index d09f97e1c..219fb9b26 100644
--- a/frontend/src/components/pages/acls/RoleEditPage.tsx
+++ b/frontend/src/components/pages/acls/RoleEditPage.tsx
@@ -25,19 +25,19 @@ import { principalGroupsView } from './Models';
class RoleEditPage extends PageComponent<{ roleName: string }> {
@observable allDataLoaded = false;
+ @observable roleName: string = '';
constructor(p: any) {
super(p);
makeObservable(this);
+ this.roleName = decodeURIComponent(this.props.roleName);
}
initPage(p: PageInitHelper): void {
- const roleName = decodeURIComponent(this.props.roleName);
-
p.title = 'Edit role';
p.addBreadcrumb('Access control', '/security');
p.addBreadcrumb('Roles', '/security/roles');
- p.addBreadcrumb(roleName, `/security/roles/${roleName}`);
+ p.addBreadcrumb(decodeURIComponent(this.props.roleName), `/security/roles/${encodeURIComponent(this.props.roleName)}`);
this.refreshData(true);
appGlobal.onRefresh = () => this.refreshData(true);
@@ -72,7 +72,7 @@ class RoleEditPage extends PageComponent<{ roleName: string }> {
return <>
{
title: `Role ${newRole.roleName} successfully ${editMode ? 'updated' : 'created'}`
});
- history.push(`/security/roles/${newRole.roleName}/details`);
+ history.push(`/security/roles/${encodeURIComponent(newRole.roleName)}/details`);
}
catch (err) {
toast({
@@ -141,7 +141,8 @@ export const RoleForm = observer(({ initialData }: RoleFormProps) => {
{
Create
}
{editMode ? :
diff --git a/frontend/src/components/pages/connect/Overview.tsx b/frontend/src/components/pages/connect/Overview.tsx
index 05943f3b8..f36e26d4d 100644
--- a/frontend/src/components/pages/connect/Overview.tsx
+++ b/frontend/src/components/pages/connect/Overview.tsx
@@ -21,7 +21,7 @@ import { PageComponent, PageInitHelper } from '../Page';
import { ConnectorClass, ConnectorsColumn, errIcon, mr05, NotConfigured, OverviewStatisticsCard, TasksColumn, TaskState } from './helper';
import Section from '../../misc/Section';
import PageContent from '../../misc/PageContent';
-import { Box, DataTable, Stack, Text, Tooltip } from '@redpanda-data/ui';
+import { Badge, Box, DataTable, Link, Stack, Text, Tooltip } from '@redpanda-data/ui';
import SearchBar from '../../misc/SearchBar';
import RpConnectPipelinesList from '../rp-connect/Pipelines.List';
import { RedpandaConnectIntro } from '../rp-connect/RedpandaConnectIntro';
@@ -32,7 +32,7 @@ import {isServerless} from '../../../config';
class KafkaConnectOverview extends PageComponent {
initPage(p: PageInitHelper): void {
p.title = 'Overview';
- p.addBreadcrumb('Connectors', '/connect-clusters');
+ p.addBreadcrumb('Connect', '/connect-clusters');
this.refreshData(true);
appGlobal.onRefresh = () => this.refreshData(true);
@@ -55,13 +55,24 @@ class KafkaConnectOverview extends PageComponent {
const tabs = [
{
key: 'redpandaConnect',
- title: Redpanda Connect,
- content: ,
+ title: Redpanda Connect Recommended,
+ content:
+
+
+ Redpanda Connect is an alternative to Kafka Connect. Choose from a growing ecosystem of readily available connectors. Learn more.
+
+
+ ,
},
{
key: 'kafkaConnect',
title: Kafka Connect,
- content:
+ content:
+
+
+ Kafka Connect is our set of managed connectors. These provide a way to integrate your Redpanda data with different data systems. Learn more.
+
+
},
] as Tab[];
@@ -70,6 +81,9 @@ class KafkaConnectOverview extends PageComponent {
return (
+
+ There are two ways to integrate your Redpanda data with data from external systems: Redpanda Connect and Kafka Connect.
+
{tabs.length == 1
? (typeof tabs[0].content == 'function'
? tabs[0].content()
diff --git a/frontend/src/components/pages/rp-connect/Pipelines.Create.tsx b/frontend/src/components/pages/rp-connect/Pipelines.Create.tsx
index 8cb0dd89d..5b2ee9811 100644
--- a/frontend/src/components/pages/rp-connect/Pipelines.Create.tsx
+++ b/frontend/src/components/pages/rp-connect/Pipelines.Create.tsx
@@ -15,7 +15,7 @@ import { observer } from 'mobx-react';
import { appGlobal } from '../../../state/appGlobal';
import PageContent from '../../misc/PageContent';
import { PageComponent, PageInitHelper } from '../Page';
-import { Box, Button, createStandaloneToast, Flex, FormField, Input } from '@redpanda-data/ui';
+import { Alert, AlertIcon, Box, Button, Text, createStandaloneToast, Flex, FormField, Input } from '@redpanda-data/ui';
import PipelinesYamlEditor from '../../misc/PipelinesYamlEditor';
import { pipelinesApi } from '../../../state/backendApi';
import { DefaultSkeleton } from '../../../utils/tsxUtils';
@@ -23,6 +23,8 @@ import { Link } from 'react-router-dom';
import { Link as ChLink } from '@redpanda-data/ui';
import Tabs from '../../misc/tabs/Tabs';
import { PipelineCreate } from '../../../protogen/redpanda/api/dataplane/v1alpha2/pipeline_pb';
+import { ConnectError } from '@connectrpc/connect';
+import { LintHint } from '../../../protogen/redpanda/api/common/v1/linthint_pb';
const { ToastContainer, toast } = createStandaloneToast();
const exampleContent = `
@@ -137,10 +139,32 @@ class RpConnectPipelinesCreate extends PageComponent<{}> {
appGlobal.history.push('/connect-clusters');
})
.catch(err => {
+ const details = [];
+ let genDesc = String(err);
+ if (err instanceof ConnectError) {
+ genDesc = err.message;
+ for (const detail of err.details) {
+ if (isLintHint(detail)) {
+ const hint = LintHint.fromJsonString(JSON.stringify(detail.debug));
+ details.push(`Line ${hint.line}, Col ${hint.column}: ${hint.hint}`)
+ }
+ }
+ }
+ let desc = {genDesc}
+ if (details.length > 0) {
+ desc = <>
+ {genDesc}
+
+ {details.map((d, idx) => (
+ - {d}
+ ))}
+
+ >
+ }
toast({
status: 'error', duration: null, isClosable: true,
title: 'Failed to create pipeline',
- description: String(err),
+ description: desc,
})
})
.finally(() => {
@@ -174,6 +198,11 @@ export const PipelineEditor = observer((p: {
language="yaml"
/>
+ {isKafkaConnectPipeline(p.yaml) &&
+
+
+ This looks like a Kafka Connect configuration. For help with Redpanda Connect configurations, see our quickstart documentation.
+ }
},
{
@@ -183,3 +212,59 @@ export const PipelineEditor = observer((p: {
},
]} />
});
+
+
+
+/**
+ * Determines whether a given string represents a Kafka Connect configuration.
+ *
+ * This function first attempts to parse the input as JSON. If the parsing is successful,
+ * it checks for the presence of specific Kafka Connect-related keys commonly found in
+ * configurations, such as "connector.class", "key.converter", and "value.converter".
+ *
+ * @param {string | undefined} value - The input string to evaluate as a potential Kafka Connect configuration.
+ * @returns {boolean} - Returns `true` if the string is a valid JSON object containing
+ * at least a subset of Kafka Connect configuration keys; otherwise, returns `false`.
+ *
+ * @example
+ * ```typescript
+ * const configString = `{
+ * "connector.class": "com.ibm.eventstreams.connect.mqsink.MQSinkConnector",
+ * "key.converter": "org.apache.kafka.connect.converters.ByteArrayConverter",
+ * "value.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
+ * }`;
+ *
+ * const result = isKafkaConnectPipeline(configString);
+ * console.log(result); // Output: true
+ * ```
+ */
+const isKafkaConnectPipeline = (value: string | undefined): boolean => {
+ if (value === undefined) {
+ return false;
+ }
+ // Attempt to parse the input string as JSON
+ let json: object;
+ try {
+ json = JSON.parse(value);
+ } catch (e) {
+ // If parsing fails, it's not a valid JSON and hence not a Kafka Connect config
+ return false;
+ }
+
+ const kafkaConfigKeys = [
+ 'connector.class',
+ 'key.converter',
+ 'value.converter',
+ 'header.converter',
+ 'tasks.max.enforce',
+ 'errors.log.enable',
+ ];
+
+ const matchCount = kafkaConfigKeys.filter(key => key in json).length;
+
+ return matchCount > 0;
+};
+
+function isLintHint(obj: any): obj is { type: string, debug: any } {
+ return obj && obj.type === LintHint.typeName;
+}
diff --git a/frontend/src/components/routes.tsx b/frontend/src/components/routes.tsx
index 2f8475596..144637f1e 100644
--- a/frontend/src/components/routes.tsx
+++ b/frontend/src/components/routes.tsx
@@ -282,7 +282,7 @@ export const APP_ROUTES: IRouteEntry[] = [
routeVisibility(true, [Feature.GetQuotas], ['canListQuotas'])
),
- MakeRoute<{}>('/connect-clusters', KafkaConnectOverview, 'Connectors', LinkIcon, true,
+ MakeRoute<{}>('/connect-clusters', KafkaConnectOverview, 'Connect', LinkIcon, true,
() => {
if (isServerless()) {
console.log('Connect clusters inside serverless checks.')
diff --git a/frontend/src/protogen/redpanda/api/common/v1/errordetails_pb.ts b/frontend/src/protogen/redpanda/api/common/v1/errordetails_pb.ts
new file mode 100644
index 000000000..a56094450
--- /dev/null
+++ b/frontend/src/protogen/redpanda/api/common/v1/errordetails_pb.ts
@@ -0,0 +1,138 @@
+// @generated by protoc-gen-es v1.6.0 with parameter "target=ts,import_extension="
+// @generated from file redpanda/api/common/v1/errordetails.proto (package redpanda.api.common.v1, syntax proto3)
+/* eslint-disable */
+// @ts-nocheck
+
+import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
+import { Any, Message, proto3 } from "@bufbuild/protobuf";
+import { Status } from "../../../../google/rpc/status_pb";
+
+/**
+ * AttemptInfo contains information about retryable actions and their specific attempts.
+ *
+ * @generated from message redpanda.api.common.v1.AttemptInfo
+ */
+export class AttemptInfo extends Message {
+ /**
+ * @generated from field: repeated redpanda.api.common.v1.AttemptInfo.Attempt attempts = 1;
+ */
+ attempts: AttemptInfo_Attempt[] = [];
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "redpanda.api.common.v1.AttemptInfo";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "attempts", kind: "message", T: AttemptInfo_Attempt, repeated: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): AttemptInfo {
+ return new AttemptInfo().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): AttemptInfo {
+ return new AttemptInfo().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): AttemptInfo {
+ return new AttemptInfo().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: AttemptInfo | PlainMessage | undefined, b: AttemptInfo | PlainMessage | undefined): boolean {
+ return proto3.util.equals(AttemptInfo, a, b);
+ }
+}
+
+/**
+ * @generated from message redpanda.api.common.v1.AttemptInfo.Attempt
+ */
+export class AttemptInfo_Attempt extends Message {
+ /**
+ * @generated from field: int32 number = 1;
+ */
+ number = 0;
+
+ /**
+ * @generated from field: google.rpc.Status status = 2;
+ */
+ status?: Status;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "redpanda.api.common.v1.AttemptInfo.Attempt";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "number", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
+ { no: 2, name: "status", kind: "message", T: Status },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): AttemptInfo_Attempt {
+ return new AttemptInfo_Attempt().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): AttemptInfo_Attempt {
+ return new AttemptInfo_Attempt().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): AttemptInfo_Attempt {
+ return new AttemptInfo_Attempt().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: AttemptInfo_Attempt | PlainMessage | undefined, b: AttemptInfo_Attempt | PlainMessage | undefined): boolean {
+ return proto3.util.equals(AttemptInfo_Attempt, a, b);
+ }
+}
+
+/**
+ * ExternalError is an error that may be returned to external users. Other
+ * errors thrown by internal systems are discarded by default, so internal
+ * errors with sensitive information are not exposed.
+ *
+ * @generated from message redpanda.api.common.v1.ExternalError
+ */
+export class ExternalError extends Message {
+ /**
+ * @generated from field: string message = 1;
+ */
+ message = "";
+
+ /**
+ * @generated from field: repeated google.protobuf.Any details = 2;
+ */
+ details: Any[] = [];
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "redpanda.api.common.v1.ExternalError";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "details", kind: "message", T: Any, repeated: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): ExternalError {
+ return new ExternalError().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): ExternalError {
+ return new ExternalError().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): ExternalError {
+ return new ExternalError().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: ExternalError | PlainMessage | undefined, b: ExternalError | PlainMessage | undefined): boolean {
+ return proto3.util.equals(ExternalError, a, b);
+ }
+}
+
diff --git a/frontend/src/protogen/redpanda/api/common/v1/linthint_pb.ts b/frontend/src/protogen/redpanda/api/common/v1/linthint_pb.ts
new file mode 100644
index 000000000..1135f6e0c
--- /dev/null
+++ b/frontend/src/protogen/redpanda/api/common/v1/linthint_pb.ts
@@ -0,0 +1,73 @@
+// @generated by protoc-gen-es v1.6.0 with parameter "target=ts,import_extension="
+// @generated from file redpanda/api/common/v1/linthint.proto (package redpanda.api.common.v1, syntax proto3)
+/* eslint-disable */
+// @ts-nocheck
+
+import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
+import { Message, proto3 } from "@bufbuild/protobuf";
+
+/**
+ * LintHint is a generic linting hint.
+ *
+ * @generated from message redpanda.api.common.v1.LintHint
+ */
+export class LintHint extends Message {
+ /**
+ * Line number of the lint.
+ *
+ * @generated from field: int32 line = 1;
+ */
+ line = 0;
+
+ /**
+ * Column number of the lint.
+ *
+ * @generated from field: int32 column = 2;
+ */
+ column = 0;
+
+ /**
+ * The hint message.
+ *
+ * @generated from field: string hint = 3;
+ */
+ hint = "";
+
+ /**
+ * Optional lint type or enum.
+ *
+ * @generated from field: string lint_type = 4;
+ */
+ lintType = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "redpanda.api.common.v1.LintHint";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "line", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
+ { no: 2, name: "column", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
+ { no: 3, name: "hint", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 4, name: "lint_type", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): LintHint {
+ return new LintHint().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): LintHint {
+ return new LintHint().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): LintHint {
+ return new LintHint().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: LintHint | PlainMessage | undefined, b: LintHint | PlainMessage | undefined): boolean {
+ return proto3.util.equals(LintHint, a, b);
+ }
+}
+
diff --git a/frontend/src/protogen/redpanda/api/common/v1alpha1/common_pb.ts b/frontend/src/protogen/redpanda/api/common/v1alpha1/common_pb.ts
new file mode 100644
index 000000000..c4db8c154
--- /dev/null
+++ b/frontend/src/protogen/redpanda/api/common/v1alpha1/common_pb.ts
@@ -0,0 +1,181 @@
+// @generated by protoc-gen-es v1.6.0 with parameter "target=ts,import_extension="
+// @generated from file redpanda/api/common/v1alpha1/common.proto (package redpanda.api.common.v1alpha1, syntax proto3)
+/* eslint-disable */
+// @ts-nocheck
+
+import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
+import { Any, Message, proto3 } from "@bufbuild/protobuf";
+import { Code } from "../../../../google/rpc/code_pb";
+
+/**
+ * @generated from enum redpanda.api.common.v1alpha1.Reason
+ */
+export enum Reason {
+ /**
+ * @generated from enum value: REASON_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * The specified resource could not be found.
+ *
+ * @generated from enum value: REASON_RESOURCE_NOT_FOUND = 1;
+ */
+ RESOURCE_NOT_FOUND = 1,
+
+ /**
+ * The input provided with the request is invalid.
+ *
+ * @generated from enum value: REASON_INVALID_INPUT = 2;
+ */
+ INVALID_INPUT = 2,
+
+ /**
+ * Authentication token is missing.
+ *
+ * @generated from enum value: REASON_NO_AUTHENTICATION_TOKEN = 3;
+ */
+ NO_AUTHENTICATION_TOKEN = 3,
+
+ /**
+ * The authentication token provided has expired.
+ *
+ * @generated from enum value: REASON_AUTHENTICATION_TOKEN_EXPIRED = 4;
+ */
+ AUTHENTICATION_TOKEN_EXPIRED = 4,
+
+ /**
+ * The authentication token provided is invalid.
+ *
+ * @generated from enum value: REASON_AUTHENTICATION_TOKEN_INVALID = 5;
+ */
+ AUTHENTICATION_TOKEN_INVALID = 5,
+
+ /**
+ * The user does not have the necessary permissions.
+ *
+ * @generated from enum value: REASON_PERMISSION_DENIED = 6;
+ */
+ PERMISSION_DENIED = 6,
+
+ /**
+ * The request cannot be completed due to server error.
+ *
+ * @generated from enum value: REASON_SERVER_ERROR = 7;
+ */
+ SERVER_ERROR = 7,
+
+ /**
+ * The request rate is too high.
+ *
+ * @generated from enum value: REASON_TOO_MANY_REQUESTS = 8;
+ */
+ TOO_MANY_REQUESTS = 8,
+
+ /**
+ * The request timed out.
+ *
+ * @generated from enum value: REASON_TIMEOUT = 9;
+ */
+ TIMEOUT = 9,
+
+ /**
+ * The feature is not configured.
+ *
+ * @generated from enum value: REASON_FEATURE_NOT_CONFIGURED = 10;
+ */
+ FEATURE_NOT_CONFIGURED = 10,
+
+ /**
+ * The feature is not supported in the requested environment.
+ *
+ * @generated from enum value: REASON_FEATURE_NOT_SUPPORTED = 11;
+ */
+ FEATURE_NOT_SUPPORTED = 11,
+}
+// Retrieve enum metadata with: proto3.getEnumType(Reason)
+proto3.util.setEnumType(Reason, "redpanda.api.common.v1alpha1.Reason", [
+ { no: 0, name: "REASON_UNSPECIFIED" },
+ { no: 1, name: "REASON_RESOURCE_NOT_FOUND" },
+ { no: 2, name: "REASON_INVALID_INPUT" },
+ { no: 3, name: "REASON_NO_AUTHENTICATION_TOKEN" },
+ { no: 4, name: "REASON_AUTHENTICATION_TOKEN_EXPIRED" },
+ { no: 5, name: "REASON_AUTHENTICATION_TOKEN_INVALID" },
+ { no: 6, name: "REASON_PERMISSION_DENIED" },
+ { no: 7, name: "REASON_SERVER_ERROR" },
+ { no: 8, name: "REASON_TOO_MANY_REQUESTS" },
+ { no: 9, name: "REASON_TIMEOUT" },
+ { no: 10, name: "REASON_FEATURE_NOT_CONFIGURED" },
+ { no: 11, name: "REASON_FEATURE_NOT_SUPPORTED" },
+]);
+
+/**
+ * Modified variant of google.rpc.Status, that uses enum instead of int32 for
+ * code, so it's nicer in REST.
+ * The `Status` type defines a logical error model that is suitable for
+ * different programming environments, including REST APIs and RPC APIs. It is
+ * used by [gRPC](https://github.com/grpc). Each `Status` message contains
+ * three pieces of data: error code, error message, and error details.
+ *
+ * You can find out more about this error model and how to work with it in the
+ * [API Design Guide](https://cloud.google.com/apis/design/errors).
+ *
+ * @generated from message redpanda.api.common.v1alpha1.ErrorStatus
+ */
+export class ErrorStatus extends Message {
+ /**
+ * The status code, which should be an enum value of
+ * [google.rpc.Code][google.rpc.Code].
+ *
+ * @generated from field: google.rpc.Code code = 1;
+ */
+ code = Code.OK;
+
+ /**
+ * A developer-facing error message, which should be in English. Any
+ * user-facing error message should be localized and sent in the
+ * [google.rpc.Status.details][google.rpc.Status.details] field, or localized
+ * by the client.
+ *
+ * @generated from field: string message = 2;
+ */
+ message = "";
+
+ /**
+ * A list of messages that carry the error details. There is a common set of
+ * message types for APIs to use.
+ *
+ * @generated from field: repeated google.protobuf.Any details = 3;
+ */
+ details: Any[] = [];
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "redpanda.api.common.v1alpha1.ErrorStatus";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "code", kind: "enum", T: proto3.getEnumType(Code) },
+ { no: 2, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 3, name: "details", kind: "message", T: Any, repeated: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): ErrorStatus {
+ return new ErrorStatus().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): ErrorStatus {
+ return new ErrorStatus().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): ErrorStatus {
+ return new ErrorStatus().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: ErrorStatus | PlainMessage | undefined, b: ErrorStatus | PlainMessage | undefined): boolean {
+ return proto3.util.equals(ErrorStatus, a, b);
+ }
+}
+
diff --git a/frontend/src/protogen/redpanda/api/common/v1alpha1/money_pb.ts b/frontend/src/protogen/redpanda/api/common/v1alpha1/money_pb.ts
new file mode 100644
index 000000000..20c72c564
--- /dev/null
+++ b/frontend/src/protogen/redpanda/api/common/v1alpha1/money_pb.ts
@@ -0,0 +1,76 @@
+// @generated by protoc-gen-es v1.6.0 with parameter "target=ts,import_extension="
+// @generated from file redpanda/api/common/v1alpha1/money.proto (package redpanda.api.common.v1alpha1, syntax proto3)
+/* eslint-disable */
+// @ts-nocheck
+
+import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
+import { Message, proto3 } from "@bufbuild/protobuf";
+
+/**
+ * @generated from enum redpanda.api.common.v1alpha1.Currency
+ */
+export enum Currency {
+ /**
+ * @generated from enum value: CURRENCY_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * @generated from enum value: CURRENCY_CURRENCY_USD_CENTS = 1;
+ */
+ CURRENCY_USD_CENTS = 1,
+}
+// Retrieve enum metadata with: proto3.getEnumType(Currency)
+proto3.util.setEnumType(Currency, "redpanda.api.common.v1alpha1.Currency", [
+ { no: 0, name: "CURRENCY_UNSPECIFIED" },
+ { no: 1, name: "CURRENCY_CURRENCY_USD_CENTS" },
+]);
+
+/**
+ * @generated from message redpanda.api.common.v1alpha1.Money
+ */
+export class Money extends Message {
+ /**
+ * Amount is a decimal number.
+ * Examples:
+ * 10
+ * 10.15
+ *
+ * @generated from field: string amount = 1;
+ */
+ amount = "";
+
+ /**
+ * @generated from field: redpanda.api.common.v1alpha1.Currency currency = 2;
+ */
+ currency = Currency.UNSPECIFIED;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "redpanda.api.common.v1alpha1.Money";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "amount", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "currency", kind: "enum", T: proto3.getEnumType(Currency) },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): Money {
+ return new Money().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): Money {
+ return new Money().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): Money {
+ return new Money().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: Money | PlainMessage | undefined, b: Money | PlainMessage | undefined): boolean {
+ return proto3.util.equals(Money, a, b);
+ }
+}
+
diff --git a/frontend/src/protogen/redpanda/api/common/v1alpha1/pagination_pb.ts b/frontend/src/protogen/redpanda/api/common/v1alpha1/pagination_pb.ts
new file mode 100644
index 000000000..6ca4d3960
--- /dev/null
+++ b/frontend/src/protogen/redpanda/api/common/v1alpha1/pagination_pb.ts
@@ -0,0 +1,56 @@
+// @generated by protoc-gen-es v1.6.0 with parameter "target=ts,import_extension="
+// @generated from file redpanda/api/common/v1alpha1/pagination.proto (package redpanda.api.common.v1alpha1, syntax proto3)
+/* eslint-disable */
+// @ts-nocheck
+
+import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
+import { Message, proto3 } from "@bufbuild/protobuf";
+
+/**
+ * KeySetPageToken represents a pagination token for KeySet pagination.
+ * It marks the beginning of a page where records start from the key that
+ * satisfies the condition key >= value_greater_equal. Records are sorted
+ * alphabetically by key in ascending order.
+ *
+ * @generated from message redpanda.api.common.v1alpha1.KeySetPageToken
+ */
+export class KeySetPageToken extends Message {
+ /**
+ * @generated from field: string key = 1;
+ */
+ key = "";
+
+ /**
+ * @generated from field: string value_greater_equal = 2;
+ */
+ valueGreaterEqual = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "redpanda.api.common.v1alpha1.KeySetPageToken";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "value_greater_equal", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): KeySetPageToken {
+ return new KeySetPageToken().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): KeySetPageToken {
+ return new KeySetPageToken().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): KeySetPageToken {
+ return new KeySetPageToken().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: KeySetPageToken | PlainMessage | undefined, b: KeySetPageToken | PlainMessage | undefined): boolean {
+ return proto3.util.equals(KeySetPageToken, a, b);
+ }
+}
+
diff --git a/proto/redpanda/api/console/v1alpha1/security.proto b/proto/redpanda/api/console/v1alpha1/security.proto
index 7c4c71840..dff41985c 100644
--- a/proto/redpanda/api/console/v1alpha1/security.proto
+++ b/proto/redpanda/api/console/v1alpha1/security.proto
@@ -11,7 +11,7 @@ message Role {
(buf.validate.field).required = true,
(buf.validate.field).string.min_len = 1,
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^[a-zA-Z0-9-_]+$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
}
@@ -22,13 +22,13 @@ message ListRolesRequest {
// Filter results only roles named with the prefix.
string name_prefix = 1 [
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^([a-zA-Z0-9-_]*)$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
// Filter results to only roles with names which contain the string.
string name_contains = 2 [
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^([a-zA-Z0-9-_]*)$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
// Return only roles assigned to this principal.
@@ -77,7 +77,7 @@ message GetRoleRequest {
(buf.validate.field).required = true,
(buf.validate.field).string.min_len = 1,
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^[a-zA-Z0-9-_]+$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
}
@@ -97,7 +97,7 @@ message DeleteRoleRequest {
(buf.validate.field).required = true,
(buf.validate.field).string.min_len = 1,
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^[a-zA-Z0-9-_]+$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
// Whether to delete the ACLs bound to the role.
@@ -120,7 +120,7 @@ message ListRoleMembersRequest {
(buf.validate.field).required = true,
(buf.validate.field).string.min_len = 1,
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^[a-zA-Z0-9-_]+$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
// Optional filter.
@@ -162,7 +162,7 @@ message UpdateRoleMembershipRequest {
(buf.validate.field).required = true,
(buf.validate.field).string.min_len = 1,
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^[a-zA-Z0-9-_]+$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
// Create the role if it doesn't already exist.
@@ -183,7 +183,7 @@ message UpdateRoleMembershipResponse {
(buf.validate.field).required = true,
(buf.validate.field).string.min_len = 1,
(buf.validate.field).string.max_len = 128,
- (buf.validate.field).string.pattern = "^[a-zA-Z0-9-_]+$"
+ (buf.validate.field).string.pattern = "^[^,=]+$"
];
// Members assigned to the role.
diff --git a/taskfiles/proto.yaml b/taskfiles/proto.yaml
index e6042dfdc..8512bae69 100644
--- a/taskfiles/proto.yaml
+++ b/taskfiles/proto.yaml
@@ -55,6 +55,7 @@ tasks:
{{ .PATH_PREFIX }} buf generate --template=proto/buf.gen.yaml
- for: { var: BUF_INPUTS }
cmd: "{{ .PATH_PREFIX }} buf generate --template={{ .ITEM }}/buf.gen.yaml {{ .ITEM }}"
+ - "{{ .PATH_PREFIX }} buf generate --template=proto/buf.gen.yaml buf.build/redpandadata/common"
- task: :backend:fmt
- task: generate-openapi3
- if [[ $CI == "true" ]]; then git diff -w --exit-code; fi