diff --git a/backend/pkg/protogen/redpanda/api/auth/v1/authorization.pb.go b/backend/pkg/protogen/redpanda/api/auth/v1/authorization.pb.go index d51ccaada7..f73e326bdc 100644 --- a/backend/pkg/protogen/redpanda/api/auth/v1/authorization.pb.go +++ b/backend/pkg/protogen/redpanda/api/auth/v1/authorization.pb.go @@ -41,6 +41,7 @@ const ( API_API_AI_AGENT API = 8 API_API_AI_GATEWAY API = 9 API_API_PROMETHEUS API = 10 + API_API_REDPANDA_SQL API = 11 ) // Enum value maps for API. @@ -57,6 +58,7 @@ var ( 8: "API_AI_AGENT", 9: "API_AI_GATEWAY", 10: "API_PROMETHEUS", + 11: "API_REDPANDA_SQL", } API_value = map[string]int32{ "API_UNSPECIFIED": 0, @@ -70,6 +72,7 @@ var ( "API_AI_AGENT": 8, "API_AI_GATEWAY": 9, "API_PROMETHEUS": 10, + "API_REDPANDA_SQL": 11, } ) @@ -241,7 +244,7 @@ var file_redpanda_api_auth_v1_authorization_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x50, 0x49, 0x52, 0x03, 0x61, 0x70, 0x69, - 0x2a, 0xea, 0x01, 0x0a, 0x03, 0x41, 0x50, 0x49, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x5f, + 0x2a, 0x80, 0x02, 0x0a, 0x03, 0x41, 0x50, 0x49, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, 0x4b, 0x41, 0x46, 0x4b, 0x41, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, @@ -255,37 +258,39 @@ var file_redpanda_api_auth_v1_authorization_proto_rawDesc = []byte{ 0x52, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x41, 0x49, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x5f, 0x41, 0x49, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x49, - 0x5f, 0x50, 0x52, 0x4f, 0x4d, 0x45, 0x54, 0x48, 0x45, 0x55, 0x53, 0x10, 0x0a, 0x2a, 0x68, 0x0a, - 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x50, - 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x45, 0x52, 0x4d, 0x49, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, - 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, - 0x02, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x03, 0x3a, 0x77, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 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, 0xe1, 0xd4, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0xf4, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, - 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x51, 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, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x3b, - 0x61, 0x75, 0x74, 0x68, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x41, 0xaa, 0x02, 0x14, 0x52, - 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x2e, 0x56, 0x31, 0xca, 0x02, 0x14, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, - 0x70, 0x69, 0x5c, 0x41, 0x75, 0x74, 0x68, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x20, 0x52, 0x65, 0x64, - 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x41, 0x75, 0x74, 0x68, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x17, - 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x41, - 0x75, 0x74, 0x68, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x5f, 0x50, 0x52, 0x4f, 0x4d, 0x45, 0x54, 0x48, 0x45, 0x55, 0x53, 0x10, 0x0a, 0x12, 0x14, 0x0a, + 0x10, 0x41, 0x50, 0x49, 0x5f, 0x52, 0x45, 0x44, 0x50, 0x41, 0x4e, 0x44, 0x41, 0x5f, 0x53, 0x51, + 0x4c, 0x10, 0x0b, 0x2a, 0x68, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, + 0x0f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, + 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x45, 0x52, 0x4d, 0x49, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x03, 0x3a, 0x77, 0x0a, + 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 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, 0xe1, + 0xd4, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, + 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0xf4, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x72, + 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x42, 0x12, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x51, 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, 0x61, 0x75, + 0x74, 0x68, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x75, 0x74, 0x68, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, + 0x41, 0x41, 0xaa, 0x02, 0x14, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41, 0x70, + 0x69, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x14, 0x52, 0x65, 0x64, 0x70, + 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x41, 0x75, 0x74, 0x68, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x20, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, + 0x41, 0x75, 0x74, 0x68, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x17, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, + 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x41, 0x75, 0x74, 0x68, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/dataplanev1alpha3connect/sql.connect.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/dataplanev1alpha3connect/sql.connect.go new file mode 100644 index 0000000000..dada438292 --- /dev/null +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/dataplanev1alpha3connect/sql.connect.go @@ -0,0 +1,212 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: redpanda/api/dataplane/v1alpha3/sql.proto + +package dataplanev1alpha3connect + +import ( + context "context" + errors "errors" + http "net/http" + strings "strings" + + connect "connectrpc.com/connect" + + v1alpha3 "github.com/redpanda-data/console/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // SQLServiceName is the fully-qualified name of the SQLService service. + SQLServiceName = "redpanda.api.dataplane.v1alpha3.SQLService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // SQLServiceListCatalogsProcedure is the fully-qualified name of the SQLService's ListCatalogs RPC. + SQLServiceListCatalogsProcedure = "/redpanda.api.dataplane.v1alpha3.SQLService/ListCatalogs" + // SQLServiceListTablesProcedure is the fully-qualified name of the SQLService's ListTables RPC. + SQLServiceListTablesProcedure = "/redpanda.api.dataplane.v1alpha3.SQLService/ListTables" + // SQLServiceDescribeTableProcedure is the fully-qualified name of the SQLService's DescribeTable + // RPC. + SQLServiceDescribeTableProcedure = "/redpanda.api.dataplane.v1alpha3.SQLService/DescribeTable" + // SQLServiceExecuteQueryProcedure is the fully-qualified name of the SQLService's ExecuteQuery RPC. + SQLServiceExecuteQueryProcedure = "/redpanda.api.dataplane.v1alpha3.SQLService/ExecuteQuery" +) + +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + sQLServiceServiceDescriptor = v1alpha3.File_redpanda_api_dataplane_v1alpha3_sql_proto.Services().ByName("SQLService") + sQLServiceListCatalogsMethodDescriptor = sQLServiceServiceDescriptor.Methods().ByName("ListCatalogs") + sQLServiceListTablesMethodDescriptor = sQLServiceServiceDescriptor.Methods().ByName("ListTables") + sQLServiceDescribeTableMethodDescriptor = sQLServiceServiceDescriptor.Methods().ByName("DescribeTable") + sQLServiceExecuteQueryMethodDescriptor = sQLServiceServiceDescriptor.Methods().ByName("ExecuteQuery") +) + +// SQLServiceClient is a client for the redpanda.api.dataplane.v1alpha3.SQLService service. +type SQLServiceClient interface { + // ListCatalogs lists all catalogs visible to the caller. + ListCatalogs(context.Context, *connect.Request[v1alpha3.ListCatalogsRequest]) (*connect.Response[v1alpha3.ListCatalogsResponse], error) + // ListTables lists tables in a catalog. + ListTables(context.Context, *connect.Request[v1alpha3.ListTablesRequest]) (*connect.Response[v1alpha3.ListTablesResponse], error) + // DescribeTable returns metadata and column shape for a single table. + DescribeTable(context.Context, *connect.Request[v1alpha3.DescribeTableRequest]) (*connect.Response[v1alpha3.DescribeTableResponse], error) + // ExecuteQuery runs a single SQL statement. Rows returned are capped + // server-side; `truncated` indicates the cap fired. + ExecuteQuery(context.Context, *connect.Request[v1alpha3.ExecuteQueryRequest]) (*connect.Response[v1alpha3.ExecuteQueryResponse], error) +} + +// NewSQLServiceClient constructs a client for the redpanda.api.dataplane.v1alpha3.SQLService +// service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for +// gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply +// the connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewSQLServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) SQLServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + return &sQLServiceClient{ + listCatalogs: connect.NewClient[v1alpha3.ListCatalogsRequest, v1alpha3.ListCatalogsResponse]( + httpClient, + baseURL+SQLServiceListCatalogsProcedure, + connect.WithSchema(sQLServiceListCatalogsMethodDescriptor), + connect.WithClientOptions(opts...), + ), + listTables: connect.NewClient[v1alpha3.ListTablesRequest, v1alpha3.ListTablesResponse]( + httpClient, + baseURL+SQLServiceListTablesProcedure, + connect.WithSchema(sQLServiceListTablesMethodDescriptor), + connect.WithClientOptions(opts...), + ), + describeTable: connect.NewClient[v1alpha3.DescribeTableRequest, v1alpha3.DescribeTableResponse]( + httpClient, + baseURL+SQLServiceDescribeTableProcedure, + connect.WithSchema(sQLServiceDescribeTableMethodDescriptor), + connect.WithClientOptions(opts...), + ), + executeQuery: connect.NewClient[v1alpha3.ExecuteQueryRequest, v1alpha3.ExecuteQueryResponse]( + httpClient, + baseURL+SQLServiceExecuteQueryProcedure, + connect.WithSchema(sQLServiceExecuteQueryMethodDescriptor), + connect.WithClientOptions(opts...), + ), + } +} + +// sQLServiceClient implements SQLServiceClient. +type sQLServiceClient struct { + listCatalogs *connect.Client[v1alpha3.ListCatalogsRequest, v1alpha3.ListCatalogsResponse] + listTables *connect.Client[v1alpha3.ListTablesRequest, v1alpha3.ListTablesResponse] + describeTable *connect.Client[v1alpha3.DescribeTableRequest, v1alpha3.DescribeTableResponse] + executeQuery *connect.Client[v1alpha3.ExecuteQueryRequest, v1alpha3.ExecuteQueryResponse] +} + +// ListCatalogs calls redpanda.api.dataplane.v1alpha3.SQLService.ListCatalogs. +func (c *sQLServiceClient) ListCatalogs(ctx context.Context, req *connect.Request[v1alpha3.ListCatalogsRequest]) (*connect.Response[v1alpha3.ListCatalogsResponse], error) { + return c.listCatalogs.CallUnary(ctx, req) +} + +// ListTables calls redpanda.api.dataplane.v1alpha3.SQLService.ListTables. +func (c *sQLServiceClient) ListTables(ctx context.Context, req *connect.Request[v1alpha3.ListTablesRequest]) (*connect.Response[v1alpha3.ListTablesResponse], error) { + return c.listTables.CallUnary(ctx, req) +} + +// DescribeTable calls redpanda.api.dataplane.v1alpha3.SQLService.DescribeTable. +func (c *sQLServiceClient) DescribeTable(ctx context.Context, req *connect.Request[v1alpha3.DescribeTableRequest]) (*connect.Response[v1alpha3.DescribeTableResponse], error) { + return c.describeTable.CallUnary(ctx, req) +} + +// ExecuteQuery calls redpanda.api.dataplane.v1alpha3.SQLService.ExecuteQuery. +func (c *sQLServiceClient) ExecuteQuery(ctx context.Context, req *connect.Request[v1alpha3.ExecuteQueryRequest]) (*connect.Response[v1alpha3.ExecuteQueryResponse], error) { + return c.executeQuery.CallUnary(ctx, req) +} + +// SQLServiceHandler is an implementation of the redpanda.api.dataplane.v1alpha3.SQLService service. +type SQLServiceHandler interface { + // ListCatalogs lists all catalogs visible to the caller. + ListCatalogs(context.Context, *connect.Request[v1alpha3.ListCatalogsRequest]) (*connect.Response[v1alpha3.ListCatalogsResponse], error) + // ListTables lists tables in a catalog. + ListTables(context.Context, *connect.Request[v1alpha3.ListTablesRequest]) (*connect.Response[v1alpha3.ListTablesResponse], error) + // DescribeTable returns metadata and column shape for a single table. + DescribeTable(context.Context, *connect.Request[v1alpha3.DescribeTableRequest]) (*connect.Response[v1alpha3.DescribeTableResponse], error) + // ExecuteQuery runs a single SQL statement. Rows returned are capped + // server-side; `truncated` indicates the cap fired. + ExecuteQuery(context.Context, *connect.Request[v1alpha3.ExecuteQueryRequest]) (*connect.Response[v1alpha3.ExecuteQueryResponse], error) +} + +// NewSQLServiceHandler builds an HTTP handler from the service implementation. It returns the path +// on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewSQLServiceHandler(svc SQLServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + sQLServiceListCatalogsHandler := connect.NewUnaryHandler( + SQLServiceListCatalogsProcedure, + svc.ListCatalogs, + connect.WithSchema(sQLServiceListCatalogsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + sQLServiceListTablesHandler := connect.NewUnaryHandler( + SQLServiceListTablesProcedure, + svc.ListTables, + connect.WithSchema(sQLServiceListTablesMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + sQLServiceDescribeTableHandler := connect.NewUnaryHandler( + SQLServiceDescribeTableProcedure, + svc.DescribeTable, + connect.WithSchema(sQLServiceDescribeTableMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + sQLServiceExecuteQueryHandler := connect.NewUnaryHandler( + SQLServiceExecuteQueryProcedure, + svc.ExecuteQuery, + connect.WithSchema(sQLServiceExecuteQueryMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + return "/redpanda.api.dataplane.v1alpha3.SQLService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case SQLServiceListCatalogsProcedure: + sQLServiceListCatalogsHandler.ServeHTTP(w, r) + case SQLServiceListTablesProcedure: + sQLServiceListTablesHandler.ServeHTTP(w, r) + case SQLServiceDescribeTableProcedure: + sQLServiceDescribeTableHandler.ServeHTTP(w, r) + case SQLServiceExecuteQueryProcedure: + sQLServiceExecuteQueryHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedSQLServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedSQLServiceHandler struct{} + +func (UnimplementedSQLServiceHandler) ListCatalogs(context.Context, *connect.Request[v1alpha3.ListCatalogsRequest]) (*connect.Response[v1alpha3.ListCatalogsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("redpanda.api.dataplane.v1alpha3.SQLService.ListCatalogs is not implemented")) +} + +func (UnimplementedSQLServiceHandler) ListTables(context.Context, *connect.Request[v1alpha3.ListTablesRequest]) (*connect.Response[v1alpha3.ListTablesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("redpanda.api.dataplane.v1alpha3.SQLService.ListTables is not implemented")) +} + +func (UnimplementedSQLServiceHandler) DescribeTable(context.Context, *connect.Request[v1alpha3.DescribeTableRequest]) (*connect.Response[v1alpha3.DescribeTableResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("redpanda.api.dataplane.v1alpha3.SQLService.DescribeTable is not implemented")) +} + +func (UnimplementedSQLServiceHandler) ExecuteQuery(context.Context, *connect.Request[v1alpha3.ExecuteQueryRequest]) (*connect.Response[v1alpha3.ExecuteQueryResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("redpanda.api.dataplane.v1alpha3.SQLService.ExecuteQuery is not implemented")) +} diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/dataplanev1alpha3connect/sql.connect.gw.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/dataplanev1alpha3connect/sql.connect.gw.go new file mode 100644 index 0000000000..61c31d29ee --- /dev/null +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/dataplanev1alpha3connect/sql.connect.gw.go @@ -0,0 +1,58 @@ +// Code generated by protoc-gen-connect-gateway. DO NOT EDIT. +// +// Source: redpanda/api/dataplane/v1alpha3/sql.proto + +package dataplanev1alpha3connect + +import ( + context "context" + fmt "fmt" + + runtime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + connect_gateway "go.vallahaye.net/connect-gateway" + + v1alpha3 "github.com/redpanda-data/console/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3" +) + +// SQLServiceGatewayServer implements the gRPC server API for the SQLService service. +type SQLServiceGatewayServer struct { + v1alpha3.UnimplementedSQLServiceServer + listCatalogs connect_gateway.UnaryHandler[v1alpha3.ListCatalogsRequest, v1alpha3.ListCatalogsResponse] + listTables connect_gateway.UnaryHandler[v1alpha3.ListTablesRequest, v1alpha3.ListTablesResponse] + describeTable connect_gateway.UnaryHandler[v1alpha3.DescribeTableRequest, v1alpha3.DescribeTableResponse] + executeQuery connect_gateway.UnaryHandler[v1alpha3.ExecuteQueryRequest, v1alpha3.ExecuteQueryResponse] +} + +// NewSQLServiceGatewayServer constructs a Connect-Gateway gRPC server for the SQLService service. +func NewSQLServiceGatewayServer(svc SQLServiceHandler, opts ...connect_gateway.HandlerOption) *SQLServiceGatewayServer { + return &SQLServiceGatewayServer{ + listCatalogs: connect_gateway.NewUnaryHandler(SQLServiceListCatalogsProcedure, svc.ListCatalogs, opts...), + listTables: connect_gateway.NewUnaryHandler(SQLServiceListTablesProcedure, svc.ListTables, opts...), + describeTable: connect_gateway.NewUnaryHandler(SQLServiceDescribeTableProcedure, svc.DescribeTable, opts...), + executeQuery: connect_gateway.NewUnaryHandler(SQLServiceExecuteQueryProcedure, svc.ExecuteQuery, opts...), + } +} + +func (s *SQLServiceGatewayServer) ListCatalogs(ctx context.Context, req *v1alpha3.ListCatalogsRequest) (*v1alpha3.ListCatalogsResponse, error) { + return s.listCatalogs(ctx, req) +} + +func (s *SQLServiceGatewayServer) ListTables(ctx context.Context, req *v1alpha3.ListTablesRequest) (*v1alpha3.ListTablesResponse, error) { + return s.listTables(ctx, req) +} + +func (s *SQLServiceGatewayServer) DescribeTable(ctx context.Context, req *v1alpha3.DescribeTableRequest) (*v1alpha3.DescribeTableResponse, error) { + return s.describeTable(ctx, req) +} + +func (s *SQLServiceGatewayServer) ExecuteQuery(ctx context.Context, req *v1alpha3.ExecuteQueryRequest) (*v1alpha3.ExecuteQueryResponse, error) { + return s.executeQuery(ctx, req) +} + +// RegisterSQLServiceHandlerGatewayServer registers the Connect handlers for the SQLService "svc" to +// "mux". +func RegisterSQLServiceHandlerGatewayServer(mux *runtime.ServeMux, svc SQLServiceHandler, opts ...connect_gateway.HandlerOption) { + if err := v1alpha3.RegisterSQLServiceHandlerServer(context.TODO(), mux, NewSQLServiceGatewayServer(svc, opts...)); err != nil { + panic(fmt.Errorf("connect-gateway: %w", err)) + } +} diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql.pb.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql.pb.go new file mode 100644 index 0000000000..5b98b22984 --- /dev/null +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql.pb.go @@ -0,0 +1,1218 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.0 +// protoc (unknown) +// source: redpanda/api/dataplane/v1alpha3/sql.proto + +package dataplanev1alpha3 + +import ( + reflect "reflect" + sync "sync" + + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" + _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + + _ "github.com/redpanda-data/console/backend/pkg/protogen/redpanda/api/auth/v1" +) + +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) +) + +// Catalog backing-storage type. Sourced from `system.catalogs.type`. +type CatalogType int32 + +const ( + CatalogType_CATALOG_TYPE_UNSPECIFIED CatalogType = 0 + CatalogType_CATALOG_TYPE_REDPANDA CatalogType = 1 +) + +// Enum value maps for CatalogType. +var ( + CatalogType_name = map[int32]string{ + 0: "CATALOG_TYPE_UNSPECIFIED", + 1: "CATALOG_TYPE_REDPANDA", + } + CatalogType_value = map[string]int32{ + "CATALOG_TYPE_UNSPECIFIED": 0, + "CATALOG_TYPE_REDPANDA": 1, + } +) + +func (x CatalogType) Enum() *CatalogType { + p := new(CatalogType) + *p = x + return p +} + +func (x CatalogType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CatalogType) Descriptor() protoreflect.EnumDescriptor { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_enumTypes[0].Descriptor() +} + +func (CatalogType) Type() protoreflect.EnumType { + return &file_redpanda_api_dataplane_v1alpha3_sql_proto_enumTypes[0] +} + +func (x CatalogType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CatalogType.Descriptor instead. +func (CatalogType) EnumDescriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{0} +} + +type Catalog struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + NamespaceName string `protobuf:"bytes,2,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` + Type CatalogType `protobuf:"varint,3,opt,name=type,proto3,enum=redpanda.api.dataplane.v1alpha3.CatalogType" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Catalog) Reset() { + *x = Catalog{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Catalog) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Catalog) ProtoMessage() {} + +func (x *Catalog) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Catalog.ProtoReflect.Descriptor instead. +func (*Catalog) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{0} +} + +func (x *Catalog) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Catalog) GetNamespaceName() string { + if x != nil { + return x.NamespaceName + } + return "" +} + +func (x *Catalog) GetType() CatalogType { + if x != nil { + return x.Type + } + return CatalogType_CATALOG_TYPE_UNSPECIFIED +} + +// Table mirrors a row from `SHOW TABLES FROM `. Backing-specific +// fields (connection_name, topic_name, *_policy) are only populated for +// Kafka-backed tables. +type Table struct { + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceName string `protobuf:"bytes,2,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + ConnectionName *string `protobuf:"bytes,4,opt,name=connection_name,json=connectionName,proto3,oneof" json:"connection_name,omitempty"` + TopicName *string `protobuf:"bytes,5,opt,name=topic_name,json=topicName,proto3,oneof" json:"topic_name,omitempty"` + SubjectName *string `protobuf:"bytes,6,opt,name=subject_name,json=subjectName,proto3,oneof" json:"subject_name,omitempty"` + LookupPolicy *string `protobuf:"bytes,7,opt,name=lookup_policy,json=lookupPolicy,proto3,oneof" json:"lookup_policy,omitempty"` + ErrorHandlingPolicy *string `protobuf:"bytes,8,opt,name=error_handling_policy,json=errorHandlingPolicy,proto3,oneof" json:"error_handling_policy,omitempty"` + StructMappingPolicy *string `protobuf:"bytes,9,opt,name=struct_mapping_policy,json=structMappingPolicy,proto3,oneof" json:"struct_mapping_policy,omitempty"` + OutputSchemaFullMessageName *string `protobuf:"bytes,10,opt,name=output_schema_full_message_name,json=outputSchemaFullMessageName,proto3,oneof" json:"output_schema_full_message_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Table) Reset() { + *x = Table{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Table) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Table) ProtoMessage() {} + +func (x *Table) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Table.ProtoReflect.Descriptor instead. +func (*Table) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{1} +} + +func (x *Table) GetNamespaceName() string { + if x != nil { + return x.NamespaceName + } + return "" +} + +func (x *Table) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Table) GetConnectionName() string { + if x != nil && x.ConnectionName != nil { + return *x.ConnectionName + } + return "" +} + +func (x *Table) GetTopicName() string { + if x != nil && x.TopicName != nil { + return *x.TopicName + } + return "" +} + +func (x *Table) GetSubjectName() string { + if x != nil && x.SubjectName != nil { + return *x.SubjectName + } + return "" +} + +func (x *Table) GetLookupPolicy() string { + if x != nil && x.LookupPolicy != nil { + return *x.LookupPolicy + } + return "" +} + +func (x *Table) GetErrorHandlingPolicy() string { + if x != nil && x.ErrorHandlingPolicy != nil { + return *x.ErrorHandlingPolicy + } + return "" +} + +func (x *Table) GetStructMappingPolicy() string { + if x != nil && x.StructMappingPolicy != nil { + return *x.StructMappingPolicy + } + return "" +} + +func (x *Table) GetOutputSchemaFullMessageName() string { + if x != nil && x.OutputSchemaFullMessageName != nil { + return *x.OutputSchemaFullMessageName + } + return "" +} + +// Column descriptor as reported by the Postgres driver. +type Column struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Postgres type name (e.g. "INT8", "TEXT", "TIMESTAMPTZ"). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Column) Reset() { + *x = Column{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Column) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Column) ProtoMessage() {} + +func (x *Column) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Column.ProtoReflect.Descriptor instead. +func (*Column) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{2} +} + +func (x *Column) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Column) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// Value is a single cell. `null_value` distinguishes SQL NULL from an +// empty string; `value` is unset when `null_value` is true. +type Value struct { + state protoimpl.MessageState `protogen:"open.v1"` + Value *string `protobuf:"bytes,1,opt,name=value,proto3,oneof" json:"value,omitempty"` + NullValue bool `protobuf:"varint,2,opt,name=null_value,json=nullValue,proto3" json:"null_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Value) Reset() { + *x = Value{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Value) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Value) ProtoMessage() {} + +func (x *Value) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Value.ProtoReflect.Descriptor instead. +func (*Value) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{3} +} + +func (x *Value) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +func (x *Value) GetNullValue() bool { + if x != nil { + return x.NullValue + } + return false +} + +type Row struct { + state protoimpl.MessageState `protogen:"open.v1"` + Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Row) Reset() { + *x = Row{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Row) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Row) ProtoMessage() {} + +func (x *Row) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Row.ProtoReflect.Descriptor instead. +func (*Row) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{4} +} + +func (x *Row) GetValues() []*Value { + if x != nil { + return x.Values + } + return nil +} + +type ListCatalogsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListCatalogsRequest) Reset() { + *x = ListCatalogsRequest{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCatalogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCatalogsRequest) ProtoMessage() {} + +func (x *ListCatalogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCatalogsRequest.ProtoReflect.Descriptor instead. +func (*ListCatalogsRequest) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{5} +} + +func (x *ListCatalogsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListCatalogsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +type ListCatalogsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Catalogs []*Catalog `protobuf:"bytes,1,rep,name=catalogs,proto3" json:"catalogs,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListCatalogsResponse) Reset() { + *x = ListCatalogsResponse{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCatalogsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCatalogsResponse) ProtoMessage() {} + +func (x *ListCatalogsResponse) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCatalogsResponse.ProtoReflect.Descriptor instead. +func (*ListCatalogsResponse) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{6} +} + +func (x *ListCatalogsResponse) GetCatalogs() []*Catalog { + if x != nil { + return x.Catalogs + } + return nil +} + +func (x *ListCatalogsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +type ListTablesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Catalog string `protobuf:"bytes,1,opt,name=catalog,proto3" json:"catalog,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional SQL LIKE pattern matched against table name (e.g. + // 'orders_%'). When unset, all tables in the catalog are returned. + Filter *string `protobuf:"bytes,4,opt,name=filter,proto3,oneof" json:"filter,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListTablesRequest) Reset() { + *x = ListTablesRequest{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListTablesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTablesRequest) ProtoMessage() {} + +func (x *ListTablesRequest) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTablesRequest.ProtoReflect.Descriptor instead. +func (*ListTablesRequest) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{7} +} + +func (x *ListTablesRequest) GetCatalog() string { + if x != nil { + return x.Catalog + } + return "" +} + +func (x *ListTablesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListTablesRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListTablesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +type ListTablesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tables []*Table `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListTablesResponse) Reset() { + *x = ListTablesResponse{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListTablesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTablesResponse) ProtoMessage() {} + +func (x *ListTablesResponse) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTablesResponse.ProtoReflect.Descriptor instead. +func (*ListTablesResponse) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{8} +} + +func (x *ListTablesResponse) GetTables() []*Table { + if x != nil { + return x.Tables + } + return nil +} + +func (x *ListTablesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +type DescribeTableRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Catalog string `protobuf:"bytes,1,opt,name=catalog,proto3" json:"catalog,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DescribeTableRequest) Reset() { + *x = DescribeTableRequest{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DescribeTableRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DescribeTableRequest) ProtoMessage() {} + +func (x *DescribeTableRequest) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DescribeTableRequest.ProtoReflect.Descriptor instead. +func (*DescribeTableRequest) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{9} +} + +func (x *DescribeTableRequest) GetCatalog() string { + if x != nil { + return x.Catalog + } + return "" +} + +func (x *DescribeTableRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type DescribeTableResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Table *Table `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"` + Columns []*Column `protobuf:"bytes,2,rep,name=columns,proto3" json:"columns,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DescribeTableResponse) Reset() { + *x = DescribeTableResponse{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DescribeTableResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DescribeTableResponse) ProtoMessage() {} + +func (x *DescribeTableResponse) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DescribeTableResponse.ProtoReflect.Descriptor instead. +func (*DescribeTableResponse) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{10} +} + +func (x *DescribeTableResponse) GetTable() *Table { + if x != nil { + return x.Table + } + return nil +} + +func (x *DescribeTableResponse) GetColumns() []*Column { + if x != nil { + return x.Columns + } + return nil +} + +type ExecuteQueryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Statement string `protobuf:"bytes,1,opt,name=statement,proto3" json:"statement,omitempty"` + // Override the server row cap for this query. When unset, the server + // default applies. + RowLimit *int32 `protobuf:"varint,2,opt,name=row_limit,json=rowLimit,proto3,oneof" json:"row_limit,omitempty"` + // Per-query timeout. When unset, the server default applies. + Timeout *durationpb.Duration `protobuf:"bytes,3,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecuteQueryRequest) Reset() { + *x = ExecuteQueryRequest{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecuteQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteQueryRequest) ProtoMessage() {} + +func (x *ExecuteQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecuteQueryRequest.ProtoReflect.Descriptor instead. +func (*ExecuteQueryRequest) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{11} +} + +func (x *ExecuteQueryRequest) GetStatement() string { + if x != nil { + return x.Statement + } + return "" +} + +func (x *ExecuteQueryRequest) GetRowLimit() int32 { + if x != nil && x.RowLimit != nil { + return *x.RowLimit + } + return 0 +} + +func (x *ExecuteQueryRequest) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +type ExecuteQueryResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Columns []*Column `protobuf:"bytes,1,rep,name=columns,proto3" json:"columns,omitempty"` + Rows []*Row `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"` + // True if the server row cap fired before the result set was + // exhausted. + Truncated bool `protobuf:"varint,3,opt,name=truncated,proto3" json:"truncated,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecuteQueryResponse) Reset() { + *x = ExecuteQueryResponse{} + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecuteQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteQueryResponse) ProtoMessage() {} + +func (x *ExecuteQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecuteQueryResponse.ProtoReflect.Descriptor instead. +func (*ExecuteQueryResponse) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP(), []int{12} +} + +func (x *ExecuteQueryResponse) GetColumns() []*Column { + if x != nil { + return x.Columns + } + return nil +} + +func (x *ExecuteQueryResponse) GetRows() []*Row { + if x != nil { + return x.Rows + } + return nil +} + +func (x *ExecuteQueryResponse) GetTruncated() bool { + if x != nil { + return x.Truncated + } + return false +} + +var File_redpanda_api_dataplane_v1alpha3_sql_proto protoreflect.FileDescriptor + +var file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDesc = []byte{ + 0x0a, 0x29, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2f, 0x73, 0x71, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x72, 0x65, 0x64, + 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 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, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, + 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, + 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd6, 0x04, 0x0a, 0x05, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, + 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x6e, + 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x04, 0x52, 0x13, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x13, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, + 0x52, 0x1b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, 0x75, + 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x66, 0x75, 0x6c, + 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x30, 0x0a, 0x06, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, + 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, + 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x45, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x3e, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x65, 0x64, 0x70, + 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0xa9, 0x01, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x8b, 0x01, 0x92, 0x41, 0x75, 0x32, 0x61, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x20, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x30, 0x2e, + 0x20, 0x55, 0x73, 0x65, 0x20, 0x2d, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x59, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x8f, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, + 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, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x84, 0x01, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, + 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, + 0x67, 0x52, 0x08, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 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, 0x85, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, + 0x01, 0x01, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x12, 0xa9, 0x01, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x8b, 0x01, 0x92, 0x41, 0x75, 0x32, 0x61, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, + 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x30, + 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x2d, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x59, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8f, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0xbf, 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, 0x12, 0x71, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x54, 0x92, + 0x41, 0x49, 0x32, 0x47, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x51, 0x4c, + 0x20, 0x4c, 0x49, 0x4b, 0x45, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x27, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x25, 0x27, 0x29, 0x2e, 0xba, 0x48, 0x05, 0x72, 0x03, + 0x18, 0xff, 0x01, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x7c, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x61, 0x62, 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, 0x62, 0x0a, 0x14, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01, 0x01, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, + 0x01, 0x52, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01, 0x01, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x98, 0x01, + 0x0a, 0x15, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, + 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, + 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, + 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xd6, 0x01, 0x0a, 0x13, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0e, 0xba, 0x48, 0x0b, 0xc8, 0x01, 0x01, 0x72, 0x06, 0x10, 0x01, 0x18, + 0x80, 0x80, 0x10, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2c, + 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x1a, 0x05, 0x18, 0x90, 0x4e, 0x28, 0x01, 0x48, 0x00, 0x52, + 0x08, 0x72, 0x6f, 0x77, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0xba, 0x48, 0x0c, 0xaa, 0x01, 0x09, + 0x22, 0x03, 0x08, 0xac, 0x02, 0x32, 0x02, 0x08, 0x01, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x6f, 0x77, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x14, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x65, + 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x38, 0x0a, + 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, + 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x52, 0x6f, + 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x2a, 0x62, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x50, 0x41, 0x4e, 0x44, 0x41, 0x10, 0x01, 0x22, 0x04, 0x08, + 0x02, 0x10, 0x02, 0x2a, 0x14, 0x43, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x49, 0x43, 0x45, 0x42, 0x45, 0x52, 0x47, 0x32, 0xce, 0x09, 0x0a, 0x0a, 0x53, 0x51, + 0x4c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xfe, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x34, 0x2e, 0x72, 0x65, 0x64, 0x70, + 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x35, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x80, 0x01, 0x92, 0x41, 0x57, 0x12, 0x0d, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x4a, 0x46, 0x0a, 0x03, 0x32, + 0x30, 0x30, 0x12, 0x3f, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x39, 0x0a, 0x37, 0x1a, 0x35, 0x2e, 0x72, + 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x0b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x73, 0x71, 0x6c, + 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x85, 0x02, 0x0a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, + 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, + 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x8d, 0x01, 0x92, 0x41, 0x53, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x4a, 0x44, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x3d, 0x0a, 0x02, 0x4f, + 0x4b, 0x12, 0x37, 0x0a, 0x35, 0x1a, 0x33, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, + 0x10, 0x0b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2f, 0x73, 0x71, 0x6c, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, + 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x12, 0xd9, 0x02, 0x0a, 0x0d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x35, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72, 0x65, 0x64, + 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xd8, 0x01, 0x92, 0x41, 0x96, 0x01, 0x12, 0x0e, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x47, 0x0a, 0x03, 0x32, 0x30, 0x30, + 0x12, 0x40, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x3a, 0x0a, 0x38, 0x1a, 0x36, 0x2e, 0x72, 0x65, 0x64, + 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x4a, 0x3b, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x34, 0x0a, 0x1a, 0x43, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x20, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x8a, + 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x0b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x73, 0x71, 0x6c, 0x2f, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x80, 0x02, + 0x0a, 0x0c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x34, + 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, + 0x57, 0x12, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x4a, 0x46, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x3f, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x39, 0x0a, + 0x37, 0x1a, 0x35, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x0b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2f, 0x73, 0x71, 0x6c, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x1a, 0x58, 0x92, 0x41, 0x55, 0x0a, 0x03, 0x53, 0x51, 0x4c, 0x12, 0x4e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x61, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, + 0x64, 0x61, 0x20, 0x53, 0x51, 0x4c, 0x20, 0x62, 0x79, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2c, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x42, 0xb7, 0x02, 0x0a, 0x23, 0x63, + 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x33, 0x42, 0x08, 0x53, 0x71, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x67, + 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, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x44, 0xaa, 0x02, 0x1f, + 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0xca, + 0x02, 0x1f, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x44, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x33, 0xe2, 0x02, 0x2b, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x5c, 0x41, 0x70, 0x69, + 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x22, 0x52, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, + 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescOnce sync.Once + file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescData = file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDesc +) + +func file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescGZIP() []byte { + file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescOnce.Do(func() { + file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescData = protoimpl.X.CompressGZIP(file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescData) + }) + return file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDescData +} + +var file_redpanda_api_dataplane_v1alpha3_sql_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_redpanda_api_dataplane_v1alpha3_sql_proto_goTypes = []any{ + (CatalogType)(0), // 0: redpanda.api.dataplane.v1alpha3.CatalogType + (*Catalog)(nil), // 1: redpanda.api.dataplane.v1alpha3.Catalog + (*Table)(nil), // 2: redpanda.api.dataplane.v1alpha3.Table + (*Column)(nil), // 3: redpanda.api.dataplane.v1alpha3.Column + (*Value)(nil), // 4: redpanda.api.dataplane.v1alpha3.Value + (*Row)(nil), // 5: redpanda.api.dataplane.v1alpha3.Row + (*ListCatalogsRequest)(nil), // 6: redpanda.api.dataplane.v1alpha3.ListCatalogsRequest + (*ListCatalogsResponse)(nil), // 7: redpanda.api.dataplane.v1alpha3.ListCatalogsResponse + (*ListTablesRequest)(nil), // 8: redpanda.api.dataplane.v1alpha3.ListTablesRequest + (*ListTablesResponse)(nil), // 9: redpanda.api.dataplane.v1alpha3.ListTablesResponse + (*DescribeTableRequest)(nil), // 10: redpanda.api.dataplane.v1alpha3.DescribeTableRequest + (*DescribeTableResponse)(nil), // 11: redpanda.api.dataplane.v1alpha3.DescribeTableResponse + (*ExecuteQueryRequest)(nil), // 12: redpanda.api.dataplane.v1alpha3.ExecuteQueryRequest + (*ExecuteQueryResponse)(nil), // 13: redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse + (*durationpb.Duration)(nil), // 14: google.protobuf.Duration +} +var file_redpanda_api_dataplane_v1alpha3_sql_proto_depIdxs = []int32{ + 0, // 0: redpanda.api.dataplane.v1alpha3.Catalog.type:type_name -> redpanda.api.dataplane.v1alpha3.CatalogType + 4, // 1: redpanda.api.dataplane.v1alpha3.Row.values:type_name -> redpanda.api.dataplane.v1alpha3.Value + 1, // 2: redpanda.api.dataplane.v1alpha3.ListCatalogsResponse.catalogs:type_name -> redpanda.api.dataplane.v1alpha3.Catalog + 2, // 3: redpanda.api.dataplane.v1alpha3.ListTablesResponse.tables:type_name -> redpanda.api.dataplane.v1alpha3.Table + 2, // 4: redpanda.api.dataplane.v1alpha3.DescribeTableResponse.table:type_name -> redpanda.api.dataplane.v1alpha3.Table + 3, // 5: redpanda.api.dataplane.v1alpha3.DescribeTableResponse.columns:type_name -> redpanda.api.dataplane.v1alpha3.Column + 14, // 6: redpanda.api.dataplane.v1alpha3.ExecuteQueryRequest.timeout:type_name -> google.protobuf.Duration + 3, // 7: redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse.columns:type_name -> redpanda.api.dataplane.v1alpha3.Column + 5, // 8: redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse.rows:type_name -> redpanda.api.dataplane.v1alpha3.Row + 6, // 9: redpanda.api.dataplane.v1alpha3.SQLService.ListCatalogs:input_type -> redpanda.api.dataplane.v1alpha3.ListCatalogsRequest + 8, // 10: redpanda.api.dataplane.v1alpha3.SQLService.ListTables:input_type -> redpanda.api.dataplane.v1alpha3.ListTablesRequest + 10, // 11: redpanda.api.dataplane.v1alpha3.SQLService.DescribeTable:input_type -> redpanda.api.dataplane.v1alpha3.DescribeTableRequest + 12, // 12: redpanda.api.dataplane.v1alpha3.SQLService.ExecuteQuery:input_type -> redpanda.api.dataplane.v1alpha3.ExecuteQueryRequest + 7, // 13: redpanda.api.dataplane.v1alpha3.SQLService.ListCatalogs:output_type -> redpanda.api.dataplane.v1alpha3.ListCatalogsResponse + 9, // 14: redpanda.api.dataplane.v1alpha3.SQLService.ListTables:output_type -> redpanda.api.dataplane.v1alpha3.ListTablesResponse + 11, // 15: redpanda.api.dataplane.v1alpha3.SQLService.DescribeTable:output_type -> redpanda.api.dataplane.v1alpha3.DescribeTableResponse + 13, // 16: redpanda.api.dataplane.v1alpha3.SQLService.ExecuteQuery:output_type -> redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse + 13, // [13:17] is the sub-list for method output_type + 9, // [9:13] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_redpanda_api_dataplane_v1alpha3_sql_proto_init() } +func file_redpanda_api_dataplane_v1alpha3_sql_proto_init() { + if File_redpanda_api_dataplane_v1alpha3_sql_proto != nil { + return + } + file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[1].OneofWrappers = []any{} + file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[3].OneofWrappers = []any{} + file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[7].OneofWrappers = []any{} + file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes[11].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDesc, + NumEnums: 1, + NumMessages: 13, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_redpanda_api_dataplane_v1alpha3_sql_proto_goTypes, + DependencyIndexes: file_redpanda_api_dataplane_v1alpha3_sql_proto_depIdxs, + EnumInfos: file_redpanda_api_dataplane_v1alpha3_sql_proto_enumTypes, + MessageInfos: file_redpanda_api_dataplane_v1alpha3_sql_proto_msgTypes, + }.Build() + File_redpanda_api_dataplane_v1alpha3_sql_proto = out.File + file_redpanda_api_dataplane_v1alpha3_sql_proto_rawDesc = nil + file_redpanda_api_dataplane_v1alpha3_sql_proto_goTypes = nil + file_redpanda_api_dataplane_v1alpha3_sql_proto_depIdxs = nil +} diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql.pb.gw.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql.pb.gw.go new file mode 100644 index 0000000000..16d7257955 --- /dev/null +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql.pb.gw.go @@ -0,0 +1,417 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: redpanda/api/dataplane/v1alpha3/sql.proto + +/* +Package dataplanev1alpha3 is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package dataplanev1alpha3 + +import ( + "context" + "errors" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var ( + _ codes.Code + _ io.Reader + _ status.Status + _ = errors.New + _ = runtime.String + _ = utilities.NewDoubleArray + _ = metadata.Join +) + +var filter_SQLService_ListCatalogs_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_SQLService_ListCatalogs_0(ctx context.Context, marshaler runtime.Marshaler, client SQLServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ListCatalogsRequest + metadata runtime.ServerMetadata + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SQLService_ListCatalogs_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.ListCatalogs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_SQLService_ListCatalogs_0(ctx context.Context, marshaler runtime.Marshaler, server SQLServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ListCatalogsRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SQLService_ListCatalogs_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.ListCatalogs(ctx, &protoReq) + return msg, metadata, err +} + +var filter_SQLService_ListTables_0 = &utilities.DoubleArray{Encoding: map[string]int{"catalog": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} + +func request_SQLService_ListTables_0(ctx context.Context, marshaler runtime.Marshaler, client SQLServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ListTablesRequest + metadata runtime.ServerMetadata + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["catalog"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "catalog") + } + protoReq.Catalog, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "catalog", err) + } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SQLService_ListTables_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.ListTables(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_SQLService_ListTables_0(ctx context.Context, marshaler runtime.Marshaler, server SQLServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ListTablesRequest + metadata runtime.ServerMetadata + err error + ) + val, ok := pathParams["catalog"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "catalog") + } + protoReq.Catalog, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "catalog", err) + } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SQLService_ListTables_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.ListTables(ctx, &protoReq) + return msg, metadata, err +} + +func request_SQLService_DescribeTable_0(ctx context.Context, marshaler runtime.Marshaler, client SQLServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DescribeTableRequest + metadata runtime.ServerMetadata + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["catalog"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "catalog") + } + protoReq.Catalog, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "catalog", err) + } + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + msg, err := client.DescribeTable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_SQLService_DescribeTable_0(ctx context.Context, marshaler runtime.Marshaler, server SQLServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DescribeTableRequest + metadata runtime.ServerMetadata + err error + ) + val, ok := pathParams["catalog"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "catalog") + } + protoReq.Catalog, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "catalog", err) + } + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + msg, err := server.DescribeTable(ctx, &protoReq) + return msg, metadata, err +} + +func request_SQLService_ExecuteQuery_0(ctx context.Context, marshaler runtime.Marshaler, client SQLServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ExecuteQueryRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + msg, err := client.ExecuteQuery(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_SQLService_ExecuteQuery_0(ctx context.Context, marshaler runtime.Marshaler, server SQLServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ExecuteQueryRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.ExecuteQuery(ctx, &protoReq) + return msg, metadata, err +} + +// RegisterSQLServiceHandlerServer registers the http handlers for service SQLService to "mux". +// UnaryRPC :call SQLServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSQLServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. +func RegisterSQLServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SQLServiceServer) error { + mux.Handle(http.MethodGet, pattern_SQLService_ListCatalogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/ListCatalogs", runtime.WithHTTPPathPattern("/v1alpha3/sql/catalogs")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SQLService_ListCatalogs_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_ListCatalogs_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_SQLService_ListTables_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/ListTables", runtime.WithHTTPPathPattern("/v1alpha3/sql/catalogs/{catalog}/tables")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SQLService_ListTables_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_ListTables_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_SQLService_DescribeTable_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/DescribeTable", runtime.WithHTTPPathPattern("/v1alpha3/sql/catalogs/{catalog}/tables/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SQLService_DescribeTable_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_DescribeTable_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_SQLService_ExecuteQuery_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/ExecuteQuery", runtime.WithHTTPPathPattern("/v1alpha3/sql/queries")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SQLService_ExecuteQuery_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_ExecuteQuery_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + + return nil +} + +// RegisterSQLServiceHandlerFromEndpoint is same as RegisterSQLServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterSQLServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.NewClient(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + return RegisterSQLServiceHandler(ctx, mux, conn) +} + +// RegisterSQLServiceHandler registers the http handlers for service SQLService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterSQLServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterSQLServiceHandlerClient(ctx, mux, NewSQLServiceClient(conn)) +} + +// RegisterSQLServiceHandlerClient registers the http handlers for service SQLService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SQLServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SQLServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "SQLServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. +func RegisterSQLServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SQLServiceClient) error { + mux.Handle(http.MethodGet, pattern_SQLService_ListCatalogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/ListCatalogs", runtime.WithHTTPPathPattern("/v1alpha3/sql/catalogs")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SQLService_ListCatalogs_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_ListCatalogs_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_SQLService_ListTables_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/ListTables", runtime.WithHTTPPathPattern("/v1alpha3/sql/catalogs/{catalog}/tables")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SQLService_ListTables_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_ListTables_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_SQLService_DescribeTable_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/DescribeTable", runtime.WithHTTPPathPattern("/v1alpha3/sql/catalogs/{catalog}/tables/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SQLService_DescribeTable_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_DescribeTable_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_SQLService_ExecuteQuery_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/redpanda.api.dataplane.v1alpha3.SQLService/ExecuteQuery", runtime.WithHTTPPathPattern("/v1alpha3/sql/queries")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SQLService_ExecuteQuery_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_SQLService_ExecuteQuery_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + return nil +} + +var ( + pattern_SQLService_ListCatalogs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1alpha3", "sql", "catalogs"}, "")) + pattern_SQLService_ListTables_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"v1alpha3", "sql", "catalogs", "catalog", "tables"}, "")) + pattern_SQLService_DescribeTable_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"v1alpha3", "sql", "catalogs", "catalog", "tables", "name"}, "")) + pattern_SQLService_ExecuteQuery_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1alpha3", "sql", "queries"}, "")) +) + +var ( + forward_SQLService_ListCatalogs_0 = runtime.ForwardResponseMessage + forward_SQLService_ListTables_0 = runtime.ForwardResponseMessage + forward_SQLService_DescribeTable_0 = runtime.ForwardResponseMessage + forward_SQLService_ExecuteQuery_0 = runtime.ForwardResponseMessage +) diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql_grpc.pb.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql_grpc.pb.go new file mode 100644 index 0000000000..bacf9c87c7 --- /dev/null +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/sql_grpc.pb.go @@ -0,0 +1,252 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc (unknown) +// source: redpanda/api/dataplane/v1alpha3/sql.proto + +package dataplanev1alpha3 + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + SQLService_ListCatalogs_FullMethodName = "/redpanda.api.dataplane.v1alpha3.SQLService/ListCatalogs" + SQLService_ListTables_FullMethodName = "/redpanda.api.dataplane.v1alpha3.SQLService/ListTables" + SQLService_DescribeTable_FullMethodName = "/redpanda.api.dataplane.v1alpha3.SQLService/DescribeTable" + SQLService_ExecuteQuery_FullMethodName = "/redpanda.api.dataplane.v1alpha3.SQLService/ExecuteQuery" +) + +// SQLServiceClient is the client API for SQLService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// SQLService provides catalog/table introspection and SQL execution +// against Redpanda SQL over the Postgres wire protocol. +type SQLServiceClient interface { + // ListCatalogs lists all catalogs visible to the caller. + ListCatalogs(ctx context.Context, in *ListCatalogsRequest, opts ...grpc.CallOption) (*ListCatalogsResponse, error) + // ListTables lists tables in a catalog. + ListTables(ctx context.Context, in *ListTablesRequest, opts ...grpc.CallOption) (*ListTablesResponse, error) + // DescribeTable returns metadata and column shape for a single table. + DescribeTable(ctx context.Context, in *DescribeTableRequest, opts ...grpc.CallOption) (*DescribeTableResponse, error) + // ExecuteQuery runs a single SQL statement. Rows returned are capped + // server-side; `truncated` indicates the cap fired. + ExecuteQuery(ctx context.Context, in *ExecuteQueryRequest, opts ...grpc.CallOption) (*ExecuteQueryResponse, error) +} + +type sQLServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewSQLServiceClient(cc grpc.ClientConnInterface) SQLServiceClient { + return &sQLServiceClient{cc} +} + +func (c *sQLServiceClient) ListCatalogs(ctx context.Context, in *ListCatalogsRequest, opts ...grpc.CallOption) (*ListCatalogsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListCatalogsResponse) + err := c.cc.Invoke(ctx, SQLService_ListCatalogs_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sQLServiceClient) ListTables(ctx context.Context, in *ListTablesRequest, opts ...grpc.CallOption) (*ListTablesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListTablesResponse) + err := c.cc.Invoke(ctx, SQLService_ListTables_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sQLServiceClient) DescribeTable(ctx context.Context, in *DescribeTableRequest, opts ...grpc.CallOption) (*DescribeTableResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DescribeTableResponse) + err := c.cc.Invoke(ctx, SQLService_DescribeTable_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sQLServiceClient) ExecuteQuery(ctx context.Context, in *ExecuteQueryRequest, opts ...grpc.CallOption) (*ExecuteQueryResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExecuteQueryResponse) + err := c.cc.Invoke(ctx, SQLService_ExecuteQuery_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// SQLServiceServer is the server API for SQLService service. +// All implementations must embed UnimplementedSQLServiceServer +// for forward compatibility. +// +// SQLService provides catalog/table introspection and SQL execution +// against Redpanda SQL over the Postgres wire protocol. +type SQLServiceServer interface { + // ListCatalogs lists all catalogs visible to the caller. + ListCatalogs(context.Context, *ListCatalogsRequest) (*ListCatalogsResponse, error) + // ListTables lists tables in a catalog. + ListTables(context.Context, *ListTablesRequest) (*ListTablesResponse, error) + // DescribeTable returns metadata and column shape for a single table. + DescribeTable(context.Context, *DescribeTableRequest) (*DescribeTableResponse, error) + // ExecuteQuery runs a single SQL statement. Rows returned are capped + // server-side; `truncated` indicates the cap fired. + ExecuteQuery(context.Context, *ExecuteQueryRequest) (*ExecuteQueryResponse, error) + mustEmbedUnimplementedSQLServiceServer() +} + +// UnimplementedSQLServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedSQLServiceServer struct{} + +func (UnimplementedSQLServiceServer) ListCatalogs(context.Context, *ListCatalogsRequest) (*ListCatalogsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCatalogs not implemented") +} +func (UnimplementedSQLServiceServer) ListTables(context.Context, *ListTablesRequest) (*ListTablesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTables not implemented") +} +func (UnimplementedSQLServiceServer) DescribeTable(context.Context, *DescribeTableRequest) (*DescribeTableResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DescribeTable not implemented") +} +func (UnimplementedSQLServiceServer) ExecuteQuery(context.Context, *ExecuteQueryRequest) (*ExecuteQueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ExecuteQuery not implemented") +} +func (UnimplementedSQLServiceServer) mustEmbedUnimplementedSQLServiceServer() {} +func (UnimplementedSQLServiceServer) testEmbeddedByValue() {} + +// UnsafeSQLServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to SQLServiceServer will +// result in compilation errors. +type UnsafeSQLServiceServer interface { + mustEmbedUnimplementedSQLServiceServer() +} + +func RegisterSQLServiceServer(s grpc.ServiceRegistrar, srv SQLServiceServer) { + // If the following call pancis, it indicates UnimplementedSQLServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&SQLService_ServiceDesc, srv) +} + +func _SQLService_ListCatalogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCatalogsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SQLServiceServer).ListCatalogs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: SQLService_ListCatalogs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SQLServiceServer).ListCatalogs(ctx, req.(*ListCatalogsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SQLService_ListTables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTablesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SQLServiceServer).ListTables(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: SQLService_ListTables_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SQLServiceServer).ListTables(ctx, req.(*ListTablesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SQLService_DescribeTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DescribeTableRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SQLServiceServer).DescribeTable(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: SQLService_DescribeTable_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SQLServiceServer).DescribeTable(ctx, req.(*DescribeTableRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SQLService_ExecuteQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExecuteQueryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SQLServiceServer).ExecuteQuery(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: SQLService_ExecuteQuery_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SQLServiceServer).ExecuteQuery(ctx, req.(*ExecuteQueryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// SQLService_ServiceDesc is the grpc.ServiceDesc for SQLService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var SQLService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "redpanda.api.dataplane.v1alpha3.SQLService", + HandlerType: (*SQLServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListCatalogs", + Handler: _SQLService_ListCatalogs_Handler, + }, + { + MethodName: "ListTables", + Handler: _SQLService_ListTables_Handler, + }, + { + MethodName: "DescribeTable", + Handler: _SQLService_DescribeTable_Handler, + }, + { + MethodName: "ExecuteQuery", + Handler: _SQLService_ExecuteQuery_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "redpanda/api/dataplane/v1alpha3/sql.proto", +} diff --git a/frontend/src/protogen/redpanda/api/auth/v1/authorization_pb.ts b/frontend/src/protogen/redpanda/api/auth/v1/authorization_pb.ts index 2d35c7c34f..0650d53dda 100644 --- a/frontend/src/protogen/redpanda/api/auth/v1/authorization_pb.ts +++ b/frontend/src/protogen/redpanda/api/auth/v1/authorization_pb.ts @@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file redpanda/api/auth/v1/authorization.proto. */ export const file_redpanda_api_auth_v1_authorization: GenFile = /*@__PURE__*/ - fileDesc("CihyZWRwYW5kYS9hcGkvYXV0aC92MS9hdXRob3JpemF0aW9uLnByb3RvEhRyZWRwYW5kYS5hcGkuYXV0aC52MSKCAQoZQXV0aG9yaXphdGlvblJlcXVpcmVtZW50cxI9ChNyZXF1aXJlZF9wZXJtaXNzaW9uGAEgASgOMiAucmVkcGFuZGEuYXBpLmF1dGgudjEuUGVybWlzc2lvbhImCgNhcGkYAiABKA4yGS5yZWRwYW5kYS5hcGkuYXV0aC52MS5BUEkq6gEKA0FQSRITCg9BUElfVU5TUEVDSUZJRUQQABINCglBUElfS0FGS0EQARIXChNBUElfU0NIRU1BX1JFR0lTVFJZEAISFgoSQVBJX1JFRFBBTkRBX0FETUlOEAMSGAoUQVBJX1JFRFBBTkRBX0NPTk5FQ1QQBBIVChFBUElfS0FGS0FfQ09OTkVDVBAFEg8KC0FQSV9DT05TT0xFEAYSEgoOQVBJX01DUF9TRVJWRVIQBxIQCgxBUElfQUlfQUdFTlQQCBISCg5BUElfQUlfR0FURVdBWRAJEhIKDkFQSV9QUk9NRVRIRVVTEAoqaAoKUGVybWlzc2lvbhIaChZQRVJNSVNTSU9OX1VOU1BFQ0lGSUVEEAASEwoPUEVSTUlTU0lPTl9WSUVXEAESEwoPUEVSTUlTU0lPTl9FRElUEAISFAoQUEVSTUlTU0lPTl9BRE1JThADOncKDWF1dGhvcml6YXRpb24SHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxjh1AMgASgLMi8ucmVkcGFuZGEuYXBpLmF1dGgudjEuQXV0aG9yaXphdGlvblJlcXVpcmVtZW50c1INYXV0aG9yaXphdGlvbmIGcHJvdG8z", [file_google_protobuf_descriptor]); + fileDesc("CihyZWRwYW5kYS9hcGkvYXV0aC92MS9hdXRob3JpemF0aW9uLnByb3RvEhRyZWRwYW5kYS5hcGkuYXV0aC52MSKCAQoZQXV0aG9yaXphdGlvblJlcXVpcmVtZW50cxI9ChNyZXF1aXJlZF9wZXJtaXNzaW9uGAEgASgOMiAucmVkcGFuZGEuYXBpLmF1dGgudjEuUGVybWlzc2lvbhImCgNhcGkYAiABKA4yGS5yZWRwYW5kYS5hcGkuYXV0aC52MS5BUEkqgAIKA0FQSRITCg9BUElfVU5TUEVDSUZJRUQQABINCglBUElfS0FGS0EQARIXChNBUElfU0NIRU1BX1JFR0lTVFJZEAISFgoSQVBJX1JFRFBBTkRBX0FETUlOEAMSGAoUQVBJX1JFRFBBTkRBX0NPTk5FQ1QQBBIVChFBUElfS0FGS0FfQ09OTkVDVBAFEg8KC0FQSV9DT05TT0xFEAYSEgoOQVBJX01DUF9TRVJWRVIQBxIQCgxBUElfQUlfQUdFTlQQCBISCg5BUElfQUlfR0FURVdBWRAJEhIKDkFQSV9QUk9NRVRIRVVTEAoSFAoQQVBJX1JFRFBBTkRBX1NRTBALKmgKClBlcm1pc3Npb24SGgoWUEVSTUlTU0lPTl9VTlNQRUNJRklFRBAAEhMKD1BFUk1JU1NJT05fVklFVxABEhMKD1BFUk1JU1NJT05fRURJVBACEhQKEFBFUk1JU1NJT05fQURNSU4QAzp3Cg1hdXRob3JpemF0aW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMY4dQDIAEoCzIvLnJlZHBhbmRhLmFwaS5hdXRoLnYxLkF1dGhvcml6YXRpb25SZXF1aXJlbWVudHNSDWF1dGhvcml6YXRpb25iBnByb3RvMw", [file_google_protobuf_descriptor]); /** * @generated from message redpanda.api.auth.v1.AuthorizationRequirements @@ -100,6 +100,11 @@ export enum API { * @generated from enum value: API_PROMETHEUS = 10; */ API_PROMETHEUS = 10, + + /** + * @generated from enum value: API_REDPANDA_SQL = 11; + */ + API_REDPANDA_SQL = 11, } /** diff --git a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/sql-SQLService_connectquery.ts b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/sql-SQLService_connectquery.ts new file mode 100644 index 0000000000..730685262a --- /dev/null +++ b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/sql-SQLService_connectquery.ts @@ -0,0 +1,34 @@ +// @generated by protoc-gen-connect-query v2.0.1 with parameter "target=ts,js_import_style=legacy_commonjs" +// @generated from file redpanda/api/dataplane/v1alpha3/sql.proto (package redpanda.api.dataplane.v1alpha3, syntax proto3) +/* eslint-disable */ + +import { SQLService } from "./sql_pb"; + +/** + * ListCatalogs lists all catalogs visible to the caller. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.ListCatalogs + */ +export const listCatalogs = SQLService.method.listCatalogs; + +/** + * ListTables lists tables in a catalog. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.ListTables + */ +export const listTables = SQLService.method.listTables; + +/** + * DescribeTable returns metadata and column shape for a single table. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.DescribeTable + */ +export const describeTable = SQLService.method.describeTable; + +/** + * ExecuteQuery runs a single SQL statement. Rows returned are capped + * server-side; `truncated` indicates the cap fired. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.ExecuteQuery + */ +export const executeQuery = SQLService.method.executeQuery; diff --git a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/sql_pb.ts b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/sql_pb.ts new file mode 100644 index 0000000000..4e31be3f5e --- /dev/null +++ b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/sql_pb.ts @@ -0,0 +1,457 @@ +// @generated by protoc-gen-es v2.2.5 with parameter "target=ts" +// @generated from file redpanda/api/dataplane/v1alpha3/sql.proto (package redpanda.api.dataplane.v1alpha3, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import { file_buf_validate_validate } from "../../../../buf/validate/validate_pb"; +import { file_google_api_annotations } from "../../../../google/api/annotations_pb"; +import type { Duration } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_duration } from "@bufbuild/protobuf/wkt"; +import { file_protoc_gen_openapiv2_options_annotations } from "../../../../protoc-gen-openapiv2/options/annotations_pb"; +import { file_redpanda_api_auth_v1_authorization } from "../../auth/v1/authorization_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file redpanda/api/dataplane/v1alpha3/sql.proto. + */ +export const file_redpanda_api_dataplane_v1alpha3_sql: GenFile = /*@__PURE__*/ + fileDesc("CilyZWRwYW5kYS9hcGkvZGF0YXBsYW5lL3YxYWxwaGEzL3NxbC5wcm90bxIfcmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMyJrCgdDYXRhbG9nEgwKBG5hbWUYASABKAkSFgoObmFtZXNwYWNlX25hbWUYAiABKAkSOgoEdHlwZRgDIAEoDjIsLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQ2F0YWxvZ1R5cGUixAMKBVRhYmxlEhYKDm5hbWVzcGFjZV9uYW1lGAIgASgJEgwKBG5hbWUYAyABKAkSHAoPY29ubmVjdGlvbl9uYW1lGAQgASgJSACIAQESFwoKdG9waWNfbmFtZRgFIAEoCUgBiAEBEhkKDHN1YmplY3RfbmFtZRgGIAEoCUgCiAEBEhoKDWxvb2t1cF9wb2xpY3kYByABKAlIA4gBARIiChVlcnJvcl9oYW5kbGluZ19wb2xpY3kYCCABKAlIBIgBARIiChVzdHJ1Y3RfbWFwcGluZ19wb2xpY3kYCSABKAlIBYgBARIsCh9vdXRwdXRfc2NoZW1hX2Z1bGxfbWVzc2FnZV9uYW1lGAogASgJSAaIAQFCEgoQX2Nvbm5lY3Rpb25fbmFtZUINCgtfdG9waWNfbmFtZUIPCg1fc3ViamVjdF9uYW1lQhAKDl9sb29rdXBfcG9saWN5QhgKFl9lcnJvcl9oYW5kbGluZ19wb2xpY3lCGAoWX3N0cnVjdF9tYXBwaW5nX3BvbGljeUIiCiBfb3V0cHV0X3NjaGVtYV9mdWxsX21lc3NhZ2VfbmFtZUoECAEQAlINZGF0YWJhc2VfbmFtZSIkCgZDb2x1bW4SDAoEbmFtZRgBIAEoCRIMCgR0eXBlGAIgASgJIjkKBVZhbHVlEhIKBXZhbHVlGAEgASgJSACIAQESEgoKbnVsbF92YWx1ZRgCIAEoCEIICgZfdmFsdWUiPQoDUm93EjYKBnZhbHVlcxgBIAMoCzImLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuVmFsdWUiywEKE0xpc3RDYXRhbG9nc1JlcXVlc3QSnwEKCXBhZ2Vfc2l6ZRgBIAEoBUKLAZJBdTJhTGltaXQgdGhlIHBhZ2luYXRlZCByZXNwb25zZSB0byBhIG51bWJlciBvZiBpdGVtcy4gRGVmYXVsdHMgdG8gMTAwLiBVc2UgLTEgdG8gZGlzYWJsZSBwYWdpbmF0aW9uLlkAAAAAAECPQGkAAAAAAADwv7pIEBoOGOgHKP///////////wESEgoKcGFnZV90b2tlbhgCIAEoCSJrChRMaXN0Q2F0YWxvZ3NSZXNwb25zZRI6CghjYXRhbG9ncxgBIAMoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQ2F0YWxvZxIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAki3wIKEUxpc3RUYWJsZXNSZXF1ZXN0Eh4KB2NhdGFsb2cYASABKAlCDbpICsgBAXIFEAEY/wESnwEKCXBhZ2Vfc2l6ZRgCIAEoBUKLAZJBdTJhTGltaXQgdGhlIHBhZ2luYXRlZCByZXNwb25zZSB0byBhIG51bWJlciBvZiBpdGVtcy4gRGVmYXVsdHMgdG8gMTAwLiBVc2UgLTEgdG8gZGlzYWJsZSBwYWdpbmF0aW9uLlkAAAAAAECPQGkAAAAAAADwv7pIEBoOGOgHKP///////////wESEgoKcGFnZV90b2tlbhgDIAEoCRJpCgZmaWx0ZXIYBCABKAlCVJJBSTJHT3B0aW9uYWwgU1FMIExJS0UgcGF0dGVybiBtYXRjaGVkIGFnYWluc3QgdGFibGUgbmFtZSAoZS5nLiAnb3JkZXJzXyUnKS66SAVyAxj/AUgAiAEBQgkKB19maWx0ZXIiZQoSTGlzdFRhYmxlc1Jlc3BvbnNlEjYKBnRhYmxlcxgBIAMoCzImLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuVGFibGUSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIlMKFERlc2NyaWJlVGFibGVSZXF1ZXN0Eh4KB2NhdGFsb2cYASABKAlCDbpICsgBAXIFEAEY/wESGwoEbmFtZRgCIAEoCUINukgKyAEBcgUQARj/ASKIAQoVRGVzY3JpYmVUYWJsZVJlc3BvbnNlEjUKBXRhYmxlGAEgASgLMiYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5UYWJsZRI4Cgdjb2x1bW5zGAIgAygLMicucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5Db2x1bW4iuAEKE0V4ZWN1dGVRdWVyeVJlcXVlc3QSIQoJc3RhdGVtZW50GAEgASgJQg66SAvIAQFyBhABGICAEBIiCglyb3dfbGltaXQYAiABKAVCCrpIBxoFGJBOKAFIAIgBARJACgd0aW1lb3V0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQg+6SAyqAQkiAwisAjICCAFIAYgBAUIMCgpfcm93X2xpbWl0QgoKCF90aW1lb3V0IpcBChRFeGVjdXRlUXVlcnlSZXNwb25zZRI4Cgdjb2x1bW5zGAEgAygLMicucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5Db2x1bW4SMgoEcm93cxgCIAMoCzIkLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuUm93EhEKCXRydW5jYXRlZBgDIAEoCCpiCgtDYXRhbG9nVHlwZRIcChhDQVRBTE9HX1RZUEVfVU5TUEVDSUZJRUQQABIZChVDQVRBTE9HX1RZUEVfUkVEUEFOREEQASIECAIQAioUQ0FUQUxPR19UWVBFX0lDRUJFUkcyzgkKClNRTFNlcnZpY2US/gEKDExpc3RDYXRhbG9ncxI0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdENhdGFsb2dzUmVxdWVzdBo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdENhdGFsb2dzUmVzcG9uc2UigAGSQVcSDUxpc3QgY2F0YWxvZ3NKRgoDMjAwEj8KAk9LEjkKNxo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdENhdGFsb2dzUmVzcG9uc2WKph0ECAEQC4LT5JMCGBIWL3YxYWxwaGEzL3NxbC9jYXRhbG9ncxKFAgoKTGlzdFRhYmxlcxIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdFRhYmxlc1JlcXVlc3QaMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RUYWJsZXNSZXNwb25zZSKNAZJBUxILTGlzdCB0YWJsZXNKRAoDMjAwEj0KAk9LEjcKNRozLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdFRhYmxlc1Jlc3BvbnNliqYdBAgBEAuC0+STAikSJy92MWFscGhhMy9zcWwvY2F0YWxvZ3Mve2NhdGFsb2d9L3RhYmxlcxLZAgoNRGVzY3JpYmVUYWJsZRI1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuRGVzY3JpYmVUYWJsZVJlcXVlc3QaNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkRlc2NyaWJlVGFibGVSZXNwb25zZSLYAZJBlgESDkRlc2NyaWJlIHRhYmxlSkcKAzIwMBJACgJPSxI6CjgaNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkRlc2NyaWJlVGFibGVSZXNwb25zZUo7CgM0MDQSNAoaQ2F0YWxvZyBvciB0YWJsZSBub3QgZm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXOKph0ECAEQC4LT5JMCMBIuL3YxYWxwaGEzL3NxbC9jYXRhbG9ncy97Y2F0YWxvZ30vdGFibGVzL3tuYW1lfRKAAgoMRXhlY3V0ZVF1ZXJ5EjQucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5FeGVjdXRlUXVlcnlSZXF1ZXN0GjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5FeGVjdXRlUXVlcnlSZXNwb25zZSKCAZJBVxINRXhlY3V0ZSBxdWVyeUpGCgMyMDASPwoCT0sSOQo3GjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5FeGVjdXRlUXVlcnlSZXNwb25zZYqmHQQIARALgtPkkwIaOgEqIhUvdjFhbHBoYTMvc3FsL3F1ZXJpZXMaWJJBVQoDU1FMEk5JbnRlcmFjdCB3aXRoIFJlZHBhbmRhIFNRTCBieSBicm93c2luZyBjYXRhbG9ncywgdGFibGVzIGFuZCBleGVjdXRpbmcgcXVlcmllcy5iBnByb3RvMw", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_duration, file_protoc_gen_openapiv2_options_annotations, file_redpanda_api_auth_v1_authorization]); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.Catalog + */ +export type Catalog = Message<"redpanda.api.dataplane.v1alpha3.Catalog"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: string namespace_name = 2; + */ + namespaceName: string; + + /** + * @generated from field: redpanda.api.dataplane.v1alpha3.CatalogType type = 3; + */ + type: CatalogType; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.Catalog. + * Use `create(CatalogSchema)` to create a new message. + */ +export const CatalogSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 0); + +/** + * Table mirrors a row from `SHOW TABLES FROM `. Backing-specific + * fields (connection_name, topic_name, *_policy) are only populated for + * Kafka-backed tables. + * + * @generated from message redpanda.api.dataplane.v1alpha3.Table + */ +export type Table = Message<"redpanda.api.dataplane.v1alpha3.Table"> & { + /** + * @generated from field: string namespace_name = 2; + */ + namespaceName: string; + + /** + * @generated from field: string name = 3; + */ + name: string; + + /** + * @generated from field: optional string connection_name = 4; + */ + connectionName?: string; + + /** + * @generated from field: optional string topic_name = 5; + */ + topicName?: string; + + /** + * @generated from field: optional string subject_name = 6; + */ + subjectName?: string; + + /** + * @generated from field: optional string lookup_policy = 7; + */ + lookupPolicy?: string; + + /** + * @generated from field: optional string error_handling_policy = 8; + */ + errorHandlingPolicy?: string; + + /** + * @generated from field: optional string struct_mapping_policy = 9; + */ + structMappingPolicy?: string; + + /** + * @generated from field: optional string output_schema_full_message_name = 10; + */ + outputSchemaFullMessageName?: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.Table. + * Use `create(TableSchema)` to create a new message. + */ +export const TableSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 1); + +/** + * Column descriptor as reported by the Postgres driver. + * + * @generated from message redpanda.api.dataplane.v1alpha3.Column + */ +export type Column = Message<"redpanda.api.dataplane.v1alpha3.Column"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * Postgres type name (e.g. "INT8", "TEXT", "TIMESTAMPTZ"). + * + * @generated from field: string type = 2; + */ + type: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.Column. + * Use `create(ColumnSchema)` to create a new message. + */ +export const ColumnSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 2); + +/** + * Value is a single cell. `null_value` distinguishes SQL NULL from an + * empty string; `value` is unset when `null_value` is true. + * + * @generated from message redpanda.api.dataplane.v1alpha3.Value + */ +export type Value = Message<"redpanda.api.dataplane.v1alpha3.Value"> & { + /** + * @generated from field: optional string value = 1; + */ + value?: string; + + /** + * @generated from field: bool null_value = 2; + */ + nullValue: boolean; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.Value. + * Use `create(ValueSchema)` to create a new message. + */ +export const ValueSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 3); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.Row + */ +export type Row = Message<"redpanda.api.dataplane.v1alpha3.Row"> & { + /** + * @generated from field: repeated redpanda.api.dataplane.v1alpha3.Value values = 1; + */ + values: Value[]; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.Row. + * Use `create(RowSchema)` to create a new message. + */ +export const RowSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 4); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.ListCatalogsRequest + */ +export type ListCatalogsRequest = Message<"redpanda.api.dataplane.v1alpha3.ListCatalogsRequest"> & { + /** + * @generated from field: int32 page_size = 1; + */ + pageSize: number; + + /** + * @generated from field: string page_token = 2; + */ + pageToken: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.ListCatalogsRequest. + * Use `create(ListCatalogsRequestSchema)` to create a new message. + */ +export const ListCatalogsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 5); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.ListCatalogsResponse + */ +export type ListCatalogsResponse = Message<"redpanda.api.dataplane.v1alpha3.ListCatalogsResponse"> & { + /** + * @generated from field: repeated redpanda.api.dataplane.v1alpha3.Catalog catalogs = 1; + */ + catalogs: Catalog[]; + + /** + * @generated from field: string next_page_token = 2; + */ + nextPageToken: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.ListCatalogsResponse. + * Use `create(ListCatalogsResponseSchema)` to create a new message. + */ +export const ListCatalogsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 6); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.ListTablesRequest + */ +export type ListTablesRequest = Message<"redpanda.api.dataplane.v1alpha3.ListTablesRequest"> & { + /** + * @generated from field: string catalog = 1; + */ + catalog: string; + + /** + * @generated from field: int32 page_size = 2; + */ + pageSize: number; + + /** + * @generated from field: string page_token = 3; + */ + pageToken: string; + + /** + * Optional SQL LIKE pattern matched against table name (e.g. + * 'orders_%'). When unset, all tables in the catalog are returned. + * + * @generated from field: optional string filter = 4; + */ + filter?: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.ListTablesRequest. + * Use `create(ListTablesRequestSchema)` to create a new message. + */ +export const ListTablesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 7); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.ListTablesResponse + */ +export type ListTablesResponse = Message<"redpanda.api.dataplane.v1alpha3.ListTablesResponse"> & { + /** + * @generated from field: repeated redpanda.api.dataplane.v1alpha3.Table tables = 1; + */ + tables: Table[]; + + /** + * @generated from field: string next_page_token = 2; + */ + nextPageToken: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.ListTablesResponse. + * Use `create(ListTablesResponseSchema)` to create a new message. + */ +export const ListTablesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 8); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.DescribeTableRequest + */ +export type DescribeTableRequest = Message<"redpanda.api.dataplane.v1alpha3.DescribeTableRequest"> & { + /** + * @generated from field: string catalog = 1; + */ + catalog: string; + + /** + * @generated from field: string name = 2; + */ + name: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.DescribeTableRequest. + * Use `create(DescribeTableRequestSchema)` to create a new message. + */ +export const DescribeTableRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 9); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.DescribeTableResponse + */ +export type DescribeTableResponse = Message<"redpanda.api.dataplane.v1alpha3.DescribeTableResponse"> & { + /** + * @generated from field: redpanda.api.dataplane.v1alpha3.Table table = 1; + */ + table?: Table; + + /** + * @generated from field: repeated redpanda.api.dataplane.v1alpha3.Column columns = 2; + */ + columns: Column[]; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.DescribeTableResponse. + * Use `create(DescribeTableResponseSchema)` to create a new message. + */ +export const DescribeTableResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 10); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.ExecuteQueryRequest + */ +export type ExecuteQueryRequest = Message<"redpanda.api.dataplane.v1alpha3.ExecuteQueryRequest"> & { + /** + * @generated from field: string statement = 1; + */ + statement: string; + + /** + * Override the server row cap for this query. When unset, the server + * default applies. + * + * @generated from field: optional int32 row_limit = 2; + */ + rowLimit?: number; + + /** + * Per-query timeout. When unset, the server default applies. + * + * @generated from field: optional google.protobuf.Duration timeout = 3; + */ + timeout?: Duration; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.ExecuteQueryRequest. + * Use `create(ExecuteQueryRequestSchema)` to create a new message. + */ +export const ExecuteQueryRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 11); + +/** + * @generated from message redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse + */ +export type ExecuteQueryResponse = Message<"redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse"> & { + /** + * @generated from field: repeated redpanda.api.dataplane.v1alpha3.Column columns = 1; + */ + columns: Column[]; + + /** + * @generated from field: repeated redpanda.api.dataplane.v1alpha3.Row rows = 2; + */ + rows: Row[]; + + /** + * True if the server row cap fired before the result set was + * exhausted. + * + * @generated from field: bool truncated = 3; + */ + truncated: boolean; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse. + * Use `create(ExecuteQueryResponseSchema)` to create a new message. + */ +export const ExecuteQueryResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_sql, 12); + +/** + * Catalog backing-storage type. Sourced from `system.catalogs.type`. + * + * @generated from enum redpanda.api.dataplane.v1alpha3.CatalogType + */ +export enum CatalogType { + /** + * @generated from enum value: CATALOG_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: CATALOG_TYPE_REDPANDA = 1; + */ + REDPANDA = 1, +} + +/** + * Describes the enum redpanda.api.dataplane.v1alpha3.CatalogType. + */ +export const CatalogTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_redpanda_api_dataplane_v1alpha3_sql, 0); + +/** + * SQLService provides catalog/table introspection and SQL execution + * against Redpanda SQL over the Postgres wire protocol. + * + * @generated from service redpanda.api.dataplane.v1alpha3.SQLService + */ +export const SQLService: GenService<{ + /** + * ListCatalogs lists all catalogs visible to the caller. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.ListCatalogs + */ + listCatalogs: { + methodKind: "unary"; + input: typeof ListCatalogsRequestSchema; + output: typeof ListCatalogsResponseSchema; + }, + /** + * ListTables lists tables in a catalog. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.ListTables + */ + listTables: { + methodKind: "unary"; + input: typeof ListTablesRequestSchema; + output: typeof ListTablesResponseSchema; + }, + /** + * DescribeTable returns metadata and column shape for a single table. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.DescribeTable + */ + describeTable: { + methodKind: "unary"; + input: typeof DescribeTableRequestSchema; + output: typeof DescribeTableResponseSchema; + }, + /** + * ExecuteQuery runs a single SQL statement. Rows returned are capped + * server-side; `truncated` indicates the cap fired. + * + * @generated from rpc redpanda.api.dataplane.v1alpha3.SQLService.ExecuteQuery + */ + executeQuery: { + methodKind: "unary"; + input: typeof ExecuteQueryRequestSchema; + output: typeof ExecuteQueryResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_redpanda_api_dataplane_v1alpha3_sql, 0); + diff --git a/proto/gen/openapi/openapi.v1alpha2.json b/proto/gen/openapi/openapi.v1alpha2.json index b1c74c7eab..8a4eb90cb4 100644 --- a/proto/gen/openapi/openapi.v1alpha2.json +++ b/proto/gen/openapi/openapi.v1alpha2.json @@ -1 +1 @@ -{"components":{"schemas":{"ACL.Operation":{"description":"The operation that is allowed or denied (e.g. READ).","enum":["OPERATION_ANY","OPERATION_ALL","OPERATION_READ","OPERATION_WRITE","OPERATION_CREATE","OPERATION_DELETE","OPERATION_ALTER","OPERATION_DESCRIBE","OPERATION_CLUSTER_ACTION","OPERATION_DESCRIBE_CONFIGS","OPERATION_ALTER_CONFIGS","OPERATION_IDEMPOTENT_WRITE","OPERATION_CREATE_TOKENS","OPERATION_DESCRIBE_TOKENS"],"type":"string"},"Action":{"enum":["ACTION_PREPARE","ACTION_EXECUTE","ACTION_FINISH","ACTION_CANCEL"],"type":"string"},"BadRequest":{"description":"Describes violations in a client request. This error type focuses on the\nsyntactic aspects of the request.","properties":{"field_violations":{"description":"Describes all violations in a client request.","items":{"$ref":"#/components/schemas/FieldViolation"},"type":"array"}},"title":"BadRequest","type":"object"},"Config":{"properties":{"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"ConfigAlterOperation":{"enum":["CONFIG_ALTER_OPERATION_SET","CONFIG_ALTER_OPERATION_DELETE","CONFIG_ALTER_OPERATION_APPEND","CONFIG_ALTER_OPERATION_SUBTRACT"],"type":"string"},"ConfigSource":{"enum":["CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG","CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG","CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG","CONFIG_SOURCE_STATIC_BROKER_CONFIG","CONFIG_SOURCE_DEFAULT_CONFIG","CONFIG_SOURCE_DYNAMIC_BROKER_LOGGER_CONFIG"],"type":"string"},"ConfigSynonym":{"properties":{"name":{"type":"string"},"source":{"$ref":"#/components/schemas/ConfigSource"},"value":{"nullable":true,"type":"string"}},"type":"object"},"ConfigType":{"enum":["CONFIG_TYPE_BOOLEAN","CONFIG_TYPE_STRING","CONFIG_TYPE_INT","CONFIG_TYPE_SHORT","CONFIG_TYPE_LONG","CONFIG_TYPE_DOUBLE","CONFIG_TYPE_LIST","CONFIG_TYPE_CLASS","CONFIG_TYPE_PASSWORD"],"type":"string"},"Configuration":{"properties":{"config_synonyms":{"description":"If no config value is set at the topic level, it will inherit the value\nset at the broker or cluster level. `name` is the corresponding config\nkey whose value is inherited. `source` indicates whether the inherited\nconfig is default, broker, etc.","items":{"$ref":"#/components/schemas/ConfigSynonym"},"type":"array"},"documentation":{"description":"Config documentation.","nullable":true,"type":"string"},"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"read_only":{"description":"Whether the config is read-only, or is dynamic and can be altered.","type":"boolean"},"sensitive":{"description":"Whether this is a sensitive config key and value.","type":"boolean"},"source":{"$ref":"#/components/schemas/ConfigSource"},"type":{"$ref":"#/components/schemas/ConfigType"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"ConnectCluster":{"properties":{"address":{"description":"The host address of the Kafka Connect cluster.","type":"string"},"info":{"$ref":"#/components/schemas/ConnectCluster.Info"},"name":{"description":"Unique name of connect cluster. For Redpanda Cloud, the value is `redpanda`.","type":"string"},"plugins":{"items":{"$ref":"#/components/schemas/ConnectorPlugin"},"type":"array"}},"type":"object"},"ConnectCluster.Info":{"properties":{"commit":{"description":"The git commit ID of the connect worker source code.","type":"string"},"kafka_cluster_id":{"description":"Cluster ID.","type":"string"},"version":{"description":"Connect worker version.","type":"string"}},"type":"object"},"Connector":{"properties":{"state":{"description":"State of the connector instance.","type":"string"},"trace":{"description":"String value of stack trace.","type":"string"},"worker_id":{"description":"ID of worker that the connector is assigned to.","type":"string"}},"type":"object"},"ConnectorError":{"properties":{"content":{"description":"Detailed description of the error.","type":"string"},"title":{"description":"Short description of the error.","type":"string"},"type":{"$ref":"#/components/schemas/ConnectorError.Type"}},"title":"ConnectorError is the error of a connector, this is holistic error\nabstraction, made parsing the error trace of connector or Task","type":"object"},"ConnectorError.Type":{"description":"Error level.","enum":["TYPE_ERROR","TYPE_WARNING"],"type":"string"},"ConnectorHolisticState":{"description":"State of a connector or one of its tasks, as described in the [Kafka Connect documentation](https://kafka.apache.org/documentation.html#connect_administration). Takes into account not just the state of the connector instance itself, but also the tasks within the connector.\n\n - CONNECTOR_HOLISTIC_STATE_PAUSED: The connector or task has been administratively paused.\n - CONNECTOR_HOLISTIC_STATE_RESTARTING: The connector or task is restarting.\n - CONNECTOR_HOLISTIC_STATE_DESTROYED: The connector is destroyed, regardless of any tasks.\n - CONNECTOR_HOLISTIC_STATE_STOPPED: The connector or task has been stopped.\n - CONNECTOR_HOLISTIC_STATE_UNASSIGNED: - The connector or task has not yet been assigned to a worker,\n- THe connector is running, but there are unassigned tasks.\n - CONNECTOR_HOLISTIC_STATE_HEALTHY: The connector is running, \u003e 0 tasks, all of them in running state.\n - CONNECTOR_HOLISTIC_STATE_UNHEALTHY: - The connector has failed,\n- The connector is running, but has no tasks,\n- Connector is running and has tasks, but all tasks have failed.\n - CONNECTOR_HOLISTIC_STATE_DEGRADED: The connector is running and has tasks, and at least one task, but not all, have failed.\n - CONNECTOR_HOLISTIC_STATE_UNKNOWN: The connector or task state could not be determined.","enum":["CONNECTOR_HOLISTIC_STATE_PAUSED","CONNECTOR_HOLISTIC_STATE_RESTARTING","CONNECTOR_HOLISTIC_STATE_DESTROYED","CONNECTOR_HOLISTIC_STATE_STOPPED","CONNECTOR_HOLISTIC_STATE_UNASSIGNED","CONNECTOR_HOLISTIC_STATE_HEALTHY","CONNECTOR_HOLISTIC_STATE_UNHEALTHY","CONNECTOR_HOLISTIC_STATE_DEGRADED","CONNECTOR_HOLISTIC_STATE_UNKNOWN"],"type":"string"},"ConnectorInfoStatus":{"properties":{"info":{"$ref":"#/components/schemas/ConnectorSpec"},"name":{"description":"Name of connector.","type":"string"},"status":{"$ref":"#/components/schemas/ConnectorStatus"}},"type":"object"},"ConnectorPlugin":{"properties":{"class":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ConnectorSpec":{"description":"Connector specifications as defined in the Kafka Connect\nAPI. You may include this in the request body when creating a new connector.","properties":{"config":{"additionalProperties":{"type":"string"},"description":"Connector configuration properties.","type":"object"},"name":{"description":"Name of connector.","type":"string"},"tasks":{"items":{"$ref":"#/components/schemas/TaskInfo"},"readOnly":true,"type":"array"},"type":{"readOnly":true,"type":"string"}},"required":["name","config"],"type":"object"},"ConnectorStatus":{"properties":{"connector":{"$ref":"#/components/schemas/Connector"},"errors":{"description":"List of parsed connectors' and tasks' errors.","items":{"$ref":"#/components/schemas/ConnectorError"},"type":"array"},"holistic_state":{"$ref":"#/components/schemas/ConnectorHolisticState"},"name":{"description":"Name of connector.","type":"string"},"tasks":{"description":"Status of connector tasks. For more information, see the [https://docs.redpanda.com/current/deploy/deployment-option/cloud/managed-connectors/monitor-connectors/#connector-tasks](Monitor Connectors) documentation.","items":{"$ref":"#/components/schemas/TaskStatus"},"type":"array"},"type":{"description":"Type of connector (sink or source).","type":"string"}},"type":"object"},"CreateACLRequest":{"properties":{"host":{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.\nFor requests with resource_type CLUSTER, this will default to \"kafka-cluster\".","type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"required":["resource_type","resource_pattern_type","principal","host","operation","permission_type"],"type":"object"},"CreateACLResponse":{"type":"object"},"CreateConnectSecretBody":{"description":"CreateConnectSecretRequest is the request of CreateConnectSecret.","properties":{"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"name":{"description":"Name of connector.","type":"string"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["name","secret_data"],"type":"object"},"CreateConnectSecretResponse":{"description":"CreateConnectSecretResponse is the response of CreateConnectSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"CreateConnectorResponse":{"properties":{"connector":{"$ref":"#/components/schemas/ConnectorSpec"}},"type":"object"},"CreatePipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"CreateSecretRequest":{"description":"CreateSecretRequest is the request of CreateSecret.","properties":{"id":{"description":"Secret identifier.","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes","type":"array"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["secret_data"],"type":"object"},"CreateSecretResponse":{"description":"CreateSecretResponse is the response of CreateSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"CreateTopicRequest.Topic":{"properties":{"configs":{"description":"An array of key-value config pairs for a topic.\nThese correspond to Kafka topic-level configs.","items":{"$ref":"#/components/schemas/Config"},"type":"array"},"name":{"description":"Name of topic.","type":"string"},"partition_count":{"description":"The number of partitions to give the topic. If specifying\npartitions manually (see `replica_assignments`), set to -1.\nOr, to use the cluster default partition count, set to null.","format":"int32","nullable":true,"type":"integer"},"replica_assignments":{"description":"Manually specify broker ID assignments for partition replicas. If manually assigning replicas, both `replication_factor` and\n`partition_count` must be -1.","items":{"$ref":"#/components/schemas/ReplicaAssignment"},"type":"array"},"replication_factor":{"description":"The number of replicas every partition must have.\nIf specifying partitions manually (see `replica_assignments`), set to -1.\nOr, to use the cluster default replication factor, set to null.","format":"int32","nullable":true,"type":"integer"}},"type":"object"},"CreateTopicResponse":{"properties":{"name":{"description":"Name of topic.","type":"string"},"partition_count":{"description":"The number of partitions created for the topic.\nThis field has a default value of -1, which may be returned if the broker\ndoes not support v5+ of this request which added support for returning\nthis information.","format":"int32","type":"integer"},"replication_factor":{"description":"The number of replicas per topic partition.\nThis field has a default of -1, which may be returned if the broker\ndoes not support v5+ of this request which added support for returning\nthis information.","format":"int32","type":"integer"}},"type":"object"},"CreateUserRequest.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"description":"Username.","type":"string"},"password":{"description":"Password.","type":"string"}},"type":"object"},"CreateUserResponse":{"properties":{"user":{"$ref":"#/components/schemas/CreateUserResponse.User"}},"type":"object"},"CreateUserResponse.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"title":"Name of newly-created user","type":"string"}},"type":"object"},"DeleteACLsRequest.Filter":{"properties":{"host":{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","nullable":true,"type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","nullable":true,"type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.","nullable":true,"type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"required":["resource_type","resource_pattern_type","operation","permission_type"],"type":"object"},"DeleteACLsResponse":{"properties":{"matching_acls":{"items":{"$ref":"#/components/schemas/MatchingACL"},"type":"array"}},"type":"object"},"DeleteConnectSecretResponse":{"description":"DeleteConnectSecretResponse is the response of DeleteConnectSecret.","type":"object"},"DeleteMountTaskResponse":{"type":"object"},"DeletePipelineResponse":{"type":"object"},"DeleteSecretResponse":{"description":"DeleteSecretResponse is the response of DeleteSecret.","type":"object"},"DeleteTopicResponse":{"type":"object"},"DeleteTransformResponse":{"type":"object"},"DeleteUserResponse":{"type":"object"},"DeployTransformRequest":{"description":"Metadata required to deploy a new Wasm\ntransform in a Redpanda cluster.","properties":{"environment_variables":{"description":"The environment variables you want to apply to your transform's environment","items":{"$ref":"#/components/schemas/EnvironmentVariable"},"type":"array"},"input_topic_name":{"description":"The input topic to apply the transform to.","example":"orders","type":"string"},"name":{"description":"Name of the transform.","example":"redact-payment-details-in-orders","type":"string"},"output_topic_names":{"description":"Output topic to write the transform results to.","example":"orders-redacted","items":{"type":"string"},"type":"array"}},"required":["name","input_topic_name","output_topic_names"],"type":"object"},"EnvironmentVariable":{"properties":{"key":{"description":"The key of your environment variable.","example":"LOG_LEVEL","type":"string"},"value":{"description":"The value of your environment variable.","example":"DEBUG","type":"string"}},"required":["key","value"],"type":"object"},"ErrorInfo":{"description":"Describes the cause of the error with structured details.\n\nExample of an error when contacting the \"pubsub.googleapis.com\" API when it\nis not enabled:\n\n { \"reason\": \"API_DISABLED\"\n \"domain\": \"googleapis.com\"\n \"metadata\": {\n \"resource\": \"projects/123\",\n \"service\": \"pubsub.googleapis.com\"\n }\n }\n\nThis response indicates that the pubsub.googleapis.com API is not enabled.\n\nExample of an error that is returned when attempting to create a Spanner\ninstance in a region that is out of stock:\n\n { \"reason\": \"STOCKOUT\"\n \"domain\": \"spanner.googleapis.com\",\n \"metadata\": {\n \"availableRegions\": \"us-central1,us-east2\"\n }\n }","properties":{"domain":{"description":"The logical grouping to which the \"reason\" belongs. The error domain\nis typically the registered service name of the tool or product that\ngenerates the error. Example: \"pubsub.googleapis.com\". If the error is\ngenerated by some common infrastructure, the error domain must be a\nglobally unique value that identifies the infrastructure. For Google API\ninfrastructure, the error domain is \"googleapis.com\".","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"Additional structured details about this error.\n\nKeys must match a regular expression of `[a-z][a-zA-Z0-9-_]+` but should\nideally be lowerCamelCase. Also, they must be limited to 64 characters in\nlength. When identifying the current value of an exceeded limit, the units\nshould be contained in the key, not the value. For example, rather than\n`{\"instanceLimit\": \"100/request\"}`, should be returned as,\n`{\"instanceLimitPerRequest\": \"100\"}`, if the client exceeds the number of\ninstances that can be created in a single (batch) request.","type":"object"},"reason":{"description":"The reason of the error. This is a constant value that identifies the\nproximate cause of the error. Error reasons are unique within a particular\ndomain of errors. This should be at most 63 characters and match a\nregular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`, which represents\nUPPER_SNAKE_CASE.","type":"string"}},"title":"ErrorInfo","type":"object"},"FieldViolation":{"description":"A message type used to describe a single bad request field.","properties":{"description":{"description":"A description of why the request element is bad.","type":"string"},"field":{"description":"A path that leads to a field in the request body. The value will be a\nsequence of dot-separated identifiers that identify a protocol buffer\nfield.\n\nConsider the following:\n\n message CreateContactRequest {\n message EmailAddress {\n enum Type {\n TYPE_UNSPECIFIED = 0;\n HOME = 1;\n WORK = 2;\n }\n\n optional string email = 1;\n repeated EmailType type = 2;\n }\n\n string full_name = 1;\n repeated EmailAddress email_addresses = 2;\n }\n\nIn this example, in proto `field` could take one of the following values:\n\n* `full_name` for a violation in the `full_name` value\n* `email_addresses[0].email` for a violation in the `email` field of the\n first `email_addresses` message\n* `email_addresses[2].type[1]` for a violation in the second `type`\n value in the third `email_addresses` message.\n\nIn JSON, the same values are represented as:\n\n* `fullName` for a violation in the `fullName` value\n* `emailAddresses[0].email` for a violation in the `email` field of the\n first `emailAddresses` message\n* `emailAddresses[2].type[1]` for a violation in the second `type`\n value in the third `emailAddresses` message.","type":"string"},"localized_message":{"$ref":"#/components/schemas/LocalizedMessage"},"reason":{"description":"The reason of the field-level error. This is a constant value that\nidentifies the proximate cause of the field-level error. It should\nuniquely identify the type of the FieldViolation within the scope of the\ngoogle.rpc.ErrorInfo.domain. This should be at most 63\ncharacters and match a regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`,\nwhich represents UPPER_SNAKE_CASE.","type":"string"}},"type":"object"},"GetConnectClusterResponse":{"properties":{"cluster":{"$ref":"#/components/schemas/ConnectCluster"}},"type":"object"},"GetConnectSecretResponse":{"description":"GetConnectSecretResponse is the response of GetConnectSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"GetConnectorConfigResponse":{"properties":{"config":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"},"GetConnectorResponse":{"properties":{"connector":{"$ref":"#/components/schemas/ConnectorSpec"}},"type":"object"},"GetConnectorStatusResponse":{"properties":{"status":{"$ref":"#/components/schemas/ConnectorStatus"}},"type":"object"},"GetMountTaskResponse":{"properties":{"task":{"$ref":"#/components/schemas/MountTask"}},"type":"object"},"GetPipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"GetPipelineServiceConfigSchemaResponse":{"properties":{"config_schema":{"description":"JSON schema of the configuration components that are allowed for Connect pipelines.","type":"string"}},"type":"object"},"GetPipelinesBySecretsResponse":{"properties":{"pipelines_for_secret":{"items":{"$ref":"#/components/schemas/PipelinesForSecret"},"type":"array"}},"type":"object"},"GetPipelinesForSecretResponse":{"properties":{"pipelines_for_secret":{"$ref":"#/components/schemas/PipelinesForSecret"}},"type":"object"},"GetSecretResponse":{"description":"GetSecretResponse is the response of GetSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"GetTopicConfigurationsResponse":{"properties":{"configurations":{"items":{"$ref":"#/components/schemas/Configuration"},"type":"array"}},"type":"object"},"GetTransformResponse":{"properties":{"transform":{"$ref":"#/components/schemas/TransformMetadata"}},"type":"object"},"Help":{"description":"Provides links to documentation or for performing an out of band action.\n\nFor example, if a quota check failed with an error indicating the calling\nproject hasn't enabled the accessed service, this can contain a URL pointing\ndirectly to the right place in the developer console to flip the bit.","properties":{"links":{"description":"URL(s) pointing to additional information on handling the current error.","items":{"$ref":"#/components/schemas/Link"},"type":"array"}},"title":"Help","type":"object"},"Link":{"description":"Describes a URL link.","properties":{"description":{"description":"Describes what the link offers.","type":"string"},"url":{"description":"The URL of the link.","type":"string"}},"type":"object"},"ListACLsRequest.Filter":{"properties":{"host":{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","nullable":true,"type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","nullable":true,"type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.","nullable":true,"type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"type":"object"},"ListACLsResponse":{"properties":{"resources":{"items":{"$ref":"#/components/schemas/Resource"},"type":"array"}},"type":"object"},"ListConnectClustersResponse":{"properties":{"clusters":{"items":{"$ref":"#/components/schemas/ConnectCluster"},"type":"array"}},"type":"object"},"ListConnectSecretsResponse":{"description":"ListConnectSecretsResponse is the response of ListConnectSecrets.","properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"secrets":{"description":"Secrets retrieved.","items":{"$ref":"#/components/schemas/Secret"},"type":"array"}},"type":"object"},"ListConnectorTopicsResponse":{"properties":{"topics":{"description":"Topic names.","items":{"type":"string"},"type":"array"}},"type":"object"},"ListConnectorsResponse":{"properties":{"connectors":{"description":"List of connectors, where the parent key is the connector name.","items":{"$ref":"#/components/schemas/ConnectorInfoStatus"},"type":"array"},"next_page_token":{"description":"Page Token to fetch the next page. The value can be used as page_token in the next call to this endpoint.","type":"string"}},"type":"object"},"ListMountTasksResponse":{"properties":{"tasks":{"items":{"$ref":"#/components/schemas/MountTask"},"type":"array"}},"type":"object"},"ListMountableTopicsResponse":{"properties":{"topics":{"items":{"$ref":"#/components/schemas/TopicLocation"},"type":"array"}},"type":"object"},"ListPipelinesRequest.Filter":{"properties":{"name_contains":{"description":"Substring match on pipeline name. Case-sensitive.","type":"string"}},"type":"object"},"ListPipelinesResponse":{"properties":{"next_page_token":{"type":"string"},"pipelines":{"items":{"$ref":"#/components/schemas/Pipeline"},"type":"array"}},"type":"object"},"ListSecretScopesResponse":{"description":"ListSecretScopesResponse is the response of ListSecretScopes.","properties":{"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"type":"array"}},"type":"object"},"ListSecretsFilter":{"description":"ListSecretsFilter are the filter options for listing secrets.","properties":{"labels[string][string]":{"additionalProperties":{"type":"string"},"description":"The secret labels to search for.","type":"object"},"name_contains":{"description":"Substring match on secret name. Case-sensitive.","type":"string"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes to search for","type":"array"}},"type":"object"},"ListSecretsResponse":{"description":"ListSecretsResponse is the response of ListSecrets.","properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"secrets":{"description":"Secrets retrieved.","items":{"$ref":"#/components/schemas/Secret"},"type":"array"}},"type":"object"},"ListTopicsRequest.Filter":{"properties":{"name_contains":{"description":"Substring match on topic name. Case-sensitive.","type":"string"}},"type":"object"},"ListTopicsResponse":{"properties":{"next_page_token":{"type":"string"},"topics":{"items":{"$ref":"#/components/schemas/ListTopicsResponse.Topic"},"type":"array"}},"type":"object"},"ListTopicsResponse.Topic":{"properties":{"internal":{"description":"Whether topic is internal only.","type":"boolean"},"name":{"description":"Topic name.","type":"string"},"partition_count":{"description":"Topic partition count.","format":"int32","type":"integer"},"replication_factor":{"description":"Topic replication factor.","format":"int32","type":"integer"}},"type":"object"},"ListTransformsRequest.Filter":{"properties":{"name_contains":{"description":"Substring match on transform name. Case-sensitive.","type":"string"}},"type":"object"},"ListTransformsResponse":{"properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"transforms":{"items":{"$ref":"#/components/schemas/TransformMetadata"},"type":"array"}},"type":"object"},"ListUsersRequest.Filter":{"properties":{"name":{"description":"Username.","type":"string"},"name_contains":{"description":"Substring match on username. Case-sensitive.","type":"string"}},"type":"object"},"ListUsersResponse":{"properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"users":{"items":{"$ref":"#/components/schemas/ListUsersResponse.User"},"type":"array"}},"type":"object"},"ListUsersResponse.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"description":"Username.","type":"string"}},"type":"object"},"LocalizedMessage":{"description":"Provides a localized error message that is safe to return to the user\nwhich can be attached to an RPC error.","properties":{"locale":{"title":"The locale used following the specification defined at\nhttps://www.rfc-editor.org/rfc/bcp/bcp47.txt.\nExamples are: \"en-US\", \"fr-CH\", \"es-MX\"","type":"string"},"message":{"description":"The localized error message in the above locale.","type":"string"}},"type":"object"},"MatchingACL":{"properties":{"error":{"$ref":"#/components/schemas/rpc.Status"},"host":{"description":"The host address to use for this ACL.","type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies.","type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.","type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"type":"object"},"MountTask":{"properties":{"id":{"description":"Unique identifier for this mount task.","format":"int32","type":"integer"},"state":{"$ref":"#/components/schemas/MountTask.State"},"topics":{"description":"List of topics that are being mounted or unmounted.","items":{"$ref":"#/components/schemas/MountTask.Topic"},"type":"array"},"type":{"$ref":"#/components/schemas/MountTask.Type"}},"type":"object"},"MountTask.State":{"description":" - STATE_PLANNED: Planned: The mount task has been created and is awaiting further actions.\n - STATE_PREPARING: Preparing: The mount task is gathering resources and preparing for execution.\n - STATE_PREPARED: Prepared: All preparations are complete, and the mount task is ready to be executed.\n - STATE_EXECUTING: Executing: The mount task is actively transferring or transforming data.\n - STATE_EXECUTED: Executed: The core mount task actions are complete, but the mount task has not yet cut over or finalized.\n - STATE_CUT_OVER: Cut Over: The mount task has reached a critical point where ownership is transferred or final adjustments are made.\n - STATE_FINISHED: Finished: The mount task has been successfully completed, and no further actions are required.\n - STATE_CANCELING: Canceling: The mount task is in the process of being canceled, and rollback or cleanup actions may be in progress.\n - STATE_CANCELLED: Cancelled: The mount task has been fully canceled, and no further actions will be taken.","enum":["STATE_PLANNED","STATE_PREPARING","STATE_PREPARED","STATE_EXECUTING","STATE_EXECUTED","STATE_CUT_OVER","STATE_FINISHED","STATE_CANCELING","STATE_CANCELLED"],"type":"string"},"MountTask.Topic":{"properties":{"source_topic_reference":{"description":"The topic reference in the object storage bucket.\nThis field is only set for tasks of type MOUNT.","type":"string"},"topic_reference":{"description":"The topic reference within the current cluster, which may be either a simple topic name or a full reference\nin the form: cluster-uuid/topic-name/revision.","type":"string"}},"type":"object"},"MountTask.Type":{"description":" - TYPE_MOUNT: Mount represents the process of making topics available in a cluster by loading them from object storage.\n - TYPE_UNMOUNT: Unmount represents the process of offloading topics back to object storage.","enum":["TYPE_MOUNT","TYPE_UNMOUNT"],"type":"string"},"MountTopicsResponse":{"properties":{"mount_task_id":{"format":"int32","title":"ID of mount","type":"integer"}},"type":"object"},"Options":{"properties":{"include_tasks":{"description":"Restart connector's tasks.","type":"boolean"},"only_failed":{"description":"Restart only connectors that have failed.","type":"boolean"}},"type":"object"},"PartitionStatus":{"enum":["PARTITION_STATUS_RUNNING","PARTITION_STATUS_INACTIVE","PARTITION_STATUS_ERRORED","PARTITION_STATUS_UNKNOWN"],"type":"string"},"PartitionTransformStatus":{"properties":{"broker_id":{"format":"int32","type":"integer"},"lag":{"format":"int32","type":"integer"},"partition_id":{"format":"int32","type":"integer"},"status":{"$ref":"#/components/schemas/PartitionStatus"}},"type":"object"},"PermissionType":{"description":"Whether the operation should be allowed or denied.","enum":["PERMISSION_TYPE_ANY","PERMISSION_TYPE_DENY","PERMISSION_TYPE_ALLOW"],"type":"string"},"Pipeline":{"description":"Defines the pipeline resource.","properties":{"config_yaml":{"description":"The Redpanda Connect pipeline configuration in YAML format. See the [Redpanda Connect Configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) documentation for more details.","title":"The pipeline configuration in YAML.\nSee https://docs.redpanda.com/redpanda-connect/configuration/about/","type":"string"},"description":{"description":"Optional pipeline description.","type":"string"},"display_name":{"description":"User-friendly pipeline name.","type":"string"},"id":{"description":"Pipeline ID.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/ServiceAccount"},"state":{"$ref":"#/components/schemas/Pipeline.State"},"status":{"$ref":"#/components/schemas/Pipeline.Status"}},"required":["id","display_name","config_yaml"],"type":"object"},"Pipeline.State":{"description":"State of the pipeline.\n\n - STATE_STARTING: The pipeline is starting.\n - STATE_RUNNING: The pipeline is running.\n - STATE_STOPPING: The pipeline is in the process of stopping.\n - STATE_STOPPED: The pipeline is stopped and in paused state.\n - STATE_ERROR: The pipeline encountered an error. See [Error Handling](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/error_handling/) for further guidance.\n - STATE_COMPLETED: The pipeline has completed the job successfully.","enum":["STATE_STARTING","STATE_RUNNING","STATE_STOPPING","STATE_STOPPED","STATE_ERROR","STATE_COMPLETED"],"type":"string"},"Pipeline.Status":{"description":"Pipeline status may contain an error message.","properties":{"error":{"type":"string"}},"type":"object"},"PipelineCreate":{"description":"PipelineCreate contains the details for the pipeline creation request.","properties":{"config_yaml":{"description":"The Redpanda Connect pipeline configuration in YAML format. See the [Redpanda Connect Configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) documentation for more details.","type":"string"},"description":{"description":"Pipeline description.","type":"string"},"display_name":{"description":"User-friendly pipeline name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/ServiceAccount"}},"required":["display_name","config_yaml"],"type":"object"},"PipelineUpdate":{"properties":{"config_yaml":{"description":"The Redpanda Connect pipeline configuration in YAML format. See the [Redpanda Connect Configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) documentation for more details.","type":"string"},"description":{"description":"Pipeline description.","type":"string"},"display_name":{"description":"User-friendly pipeline name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/ServiceAccount"}},"required":["display_name","config_yaml"],"type":"object"},"PipelinesForSecret":{"properties":{"pipelines":{"items":{"$ref":"#/components/schemas/Pipeline"},"type":"array"},"secret_id":{"type":"string"}},"type":"object"},"Policy":{"properties":{"host":{"description":"The host address for this ACL.","type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies.","type":"string"}},"type":"object"},"QuotaFailure":{"description":"Describes how a quota check failed.\n\nFor example if a daily limit was exceeded for the calling project,\na service could respond with a QuotaFailure detail containing the project\nid and the description of the quota limit that was exceeded. If the\ncalling project hasn't enabled the service in the developer console, then\na service could respond with the project id and set `service_disabled`\nto true.\n\nAlso see RetryInfo and Help types for other details about handling a\nquota failure.","properties":{"violations":{"description":"Describes all quota violations.","items":{"$ref":"#/components/schemas/QuotaFailure.Violation"},"type":"array"}},"title":"QuotaFailure","type":"object"},"QuotaFailure.Violation":{"description":"A message type used to describe a single quota violation. For example, a\ndaily quota or a custom quota that was exceeded.","properties":{"api_service":{"description":"The API Service from which the `QuotaFailure.Violation` orginates. In\nsome cases, Quota issues originate from an API Service other than the one\nthat was called. In other words, a dependency of the called API Service\ncould be the cause of the `QuotaFailure`, and this field would have the\ndependency API service name.\n\nFor example, if the called API is Kubernetes Engine API\n(container.googleapis.com), and a quota violation occurs in the\nKubernetes Engine API itself, this field would be\n\"container.googleapis.com\". On the other hand, if the quota violation\noccurs when the Kubernetes Engine API creates VMs in the Compute Engine\nAPI (compute.googleapis.com), this field would be\n\"compute.googleapis.com\".","type":"string"},"description":{"description":"A description of how the quota check failed. Clients can use this\ndescription to find more about the quota configuration in the service's\npublic documentation, or find the relevant quota limit to adjust through\ndeveloper console.\n\nFor example: \"Service disabled\" or \"Daily Limit for read operations\nexceeded\".","type":"string"},"future_quota_value":{"description":"The new quota value being rolled out at the time of the violation. At the\ncompletion of the rollout, this value will be enforced in place of\nquota_value. If no rollout is in progress at the time of the violation,\nthis field is not set.\n\nFor example, if at the time of the violation a rollout is in progress\nchanging the number of CPUs quota from 10 to 20, 20 would be the value of\nthis field.","format":"int64","nullable":true,"type":"string"},"quota_dimensions":{"additionalProperties":{"type":"string"},"description":"The dimensions of the violated quota. Every non-global quota is enforced\non a set of dimensions. While quota metric defines what to count, the\ndimensions specify for what aspects the counter should be increased.\n\nFor example, the quota \"CPUs per region per VM family\" enforces a limit\non the metric \"compute.googleapis.com/cpus_per_vm_family\" on dimensions\n\"region\" and \"vm_family\". And if the violation occurred in region\n\"us-central1\" and for VM family \"n1\", the quota_dimensions would be,\n\n{\n \"region\": \"us-central1\",\n \"vm_family\": \"n1\",\n}\n\nWhen a quota is enforced globally, the quota_dimensions would always be\nempty.","type":"object"},"quota_id":{"description":"The id of the violated quota. Also know as \"limit name\", this is the\nunique identifier of a quota in the context of an API service.\n\nFor example, \"CPUS-PER-VM-FAMILY-per-project-region\".","type":"string"},"quota_metric":{"description":"The metric of the violated quota. A quota metric is a named counter to\nmeasure usage, such as API requests or CPUs. When an activity occurs in a\nservice, such as Virtual Machine allocation, one or more quota metrics\nmay be affected.\n\nFor example, \"compute.googleapis.com/cpus_per_vm_family\",\n\"storage.googleapis.com/internet_egress_bandwidth\".","type":"string"},"quota_value":{"description":"The enforced quota value at the time of the `QuotaFailure`.\n\nFor example, if the enforced quota value at the time of the\n`QuotaFailure` on the number of CPUs is \"10\", then the value of this\nfield would reflect this quantity.","format":"int64","type":"string"},"subject":{"description":"The subject on which the quota check failed.\nFor example, \"clientip:\u003cip address of client\u003e\" or \"project:\u003cGoogle\ndeveloper project id\u003e\".","type":"string"}},"type":"object"},"ReplicaAssignment":{"properties":{"partition_id":{"description":"A partition to create.","format":"int32","type":"integer"},"replica_ids":{"description":"The broker IDs the partition replicas are assigned to.","items":{"format":"int32","type":"integer"},"type":"array"}},"type":"object"},"Resource":{"properties":{"acls":{"items":{"$ref":"#/components/schemas/Policy"},"type":"array"},"resource_name":{"description":"The name of the resource this ACL targets.","type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"type":"object"},"ResourcePatternType":{"description":"The pattern to use for matching the specified resource_name\n(any, exact match, literal, or prefixed).","enum":["RESOURCE_PATTERN_TYPE_ANY","RESOURCE_PATTERN_TYPE_MATCH","RESOURCE_PATTERN_TYPE_LITERAL","RESOURCE_PATTERN_TYPE_PREFIXED"],"type":"string"},"ResourceType":{"description":"The type of resource (topic, consumer group, etc.) this\nACL targets.","enum":["RESOURCE_TYPE_ANY","RESOURCE_TYPE_TOPIC","RESOURCE_TYPE_GROUP","RESOURCE_TYPE_CLUSTER","RESOURCE_TYPE_TRANSACTIONAL_ID","RESOURCE_TYPE_DELEGATION_TOKEN","RESOURCE_TYPE_USER"],"type":"string"},"Resources":{"properties":{"cpu_shares":{"description":"`cpu_shares` is a string specifying the amount of CPU to allocate for the\npipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable\nunits include:\n- Decimal SI units: \"m\" (e.g., \"500m\" for 500 millicores, \"2\" for 2 cores)\nCPU shares can be specified in millicores (1 core = 1000 millicores).\nIf you don't specify a unit, the value is interpreted as the number of cores.","type":"string"},"memory_shares":{"description":"`memory_shares` is a string specifying the amount of memory to allocate for\nthe pipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable units\ninclude:\n- Decimal SI units: \"K\", \"M\", \"G\", \"T\", \"P\", \"E\" (e.g., \"128M\" for 128\n megabytes)\n- Binary SI units: \"Ki\", \"Mi\", \"Gi\", \"Ti\", \"Pi\", \"Ei\" (e.g., \"512Mi\" for\n512 mebibytes) If you don't specify a unit, the value is interpreted as\nbytes.","type":"string"}},"required":["memory_shares","cpu_shares"],"type":"object"},"SASLMechanism":{"description":"SASL mechanism to use for authentication.","enum":["SASL_MECHANISM_SCRAM_SHA_256","SASL_MECHANISM_SCRAM_SHA_512"],"type":"string"},"Scope":{"description":"Defines the scope of a secret.","enum":["SCOPE_REDPANDA_CONNECT"],"type":"string"},"Secret":{"description":"Defines the secret resource.","properties":{"id":{"description":"Secret identifier.","readOnly":true,"type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes","type":"array"}},"type":"object"},"ServiceAccount":{"properties":{"client_id":{"type":"string"},"client_secret":{"type":"string"}},"type":"object"},"SetConfiguration":{"properties":{"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"SetTopicConfigurationsResponse":{"properties":{"configurations":{"description":"Topic's complete set of configurations after this update.","items":{"$ref":"#/components/schemas/Configuration"},"type":"array"}},"type":"object"},"StartPipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"StopPipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"TaskInfo":{"properties":{"connector":{"description":"Name of connector.","type":"string"},"task":{"description":"The connector task ID.","format":"int32","type":"integer"}},"type":"object"},"TaskStatus":{"properties":{"id":{"description":"The connector task ID.","format":"int32","type":"integer"},"state":{"description":"State of connector task.","type":"string"},"trace":{"description":"String value of stack trace.","type":"string"},"worker_id":{"description":"ID of worker that the task is assigned to.","type":"string"}},"type":"object"},"TopicLocation":{"properties":{"name":{"description":"Topic name.","type":"string"},"topic_location":{"description":"Full reference for the unmounted topic in this format: `topic-name/cluster-uuid/revision`.\nUse this as unique identifier for mounting a topic if there are multiple topics available\nwith the same name.","type":"string"}},"type":"object"},"TopicMount":{"description":"TopicMount defines the migration of a topic from the cloud storage into this cluster,\nso that it becomes available via the Kafka API.","properties":{"alias":{"description":"Alias may be provided to mount the topic under a different name. Leave\nblank to re-use the source topic name. The alias does not persist if you\nunmount the topic again.","type":"string"},"source_topic_reference":{"description":"The topic name or full reference of the topic to mount. The full reference\nmust be used in case the same topic exists more than once. This may be the case if\nthe same topic has been unmounted multiple times. List all mountable topics to\nfind the full reference (contains topic name, cluster uuid and revision).","type":"string"}},"required":["source_topic_reference"],"type":"object"},"TransformMetadata":{"properties":{"environment_variables":{"description":"The environment variables you want to apply to your transform's environment","items":{"$ref":"#/components/schemas/EnvironmentVariable"},"type":"array"},"input_topic_name":{"description":"Input topic to apply the transform to.","type":"string"},"name":{"description":"Name of transform.","type":"string"},"output_topic_names":{"description":"Output topics to write the transform results to.","items":{"type":"string"},"type":"array"},"statuses":{"items":{"$ref":"#/components/schemas/PartitionTransformStatus"},"type":"array"}},"type":"object"},"UnmountTopicsResponse":{"properties":{"mount_task_id":{"format":"int32","title":"ID of unmount","type":"integer"}},"type":"object"},"UpdateConfiguration":{"properties":{"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"operation":{"$ref":"#/components/schemas/ConfigAlterOperation"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"UpdateConnectSecretBody":{"description":"UpdateConnectSecretRequest is the request of UpdateConnectSecret.","properties":{"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["secret_data"],"type":"object"},"UpdateConnectSecretResponse":{"description":"UpdateConnectSecretResponse is the response of UpdateConnectSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"UpdateMountTaskBody":{"properties":{"action":{"$ref":"#/components/schemas/Action"}},"required":["action"],"type":"object"},"UpdateMountTaskResponse":{"type":"object"},"UpdatePipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"UpdateSecretBody":{"description":"UpdateSecretRequest is the request of UpdateSecret.","properties":{"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes","type":"array"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["secret_data"],"type":"object"},"UpdateSecretResponse":{"description":"UpdateSecretResponse is the response of UpdateSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"UpdateTopicConfigurationsResponse":{"properties":{"configurations":{"description":"Topic's complete set of configurations after applying this partial patch.","items":{"$ref":"#/components/schemas/Configuration"},"type":"array"}},"type":"object"},"UpdateUserRequest.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"description":"Username.","type":"string"},"password":{"description":"Password.","type":"string"}},"type":"object"},"UpdateUserResponse":{"properties":{"user":{"$ref":"#/components/schemas/UpdateUserResponse.User"}},"type":"object"},"UpdateUserResponse.User":{"description":"Updated user's name and SASL mechanism.","properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"type":"string"}},"type":"object"},"UpsertConnectorResponse":{"properties":{"connector":{"$ref":"#/components/schemas/ConnectorSpec"}},"type":"object"},"rpc.Status":{"description":"The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"RPC status code, as described [here](https://github.com/googleapis/googleapis/blob/b4c238feaa1097c53798ed77035bbfeb7fc72e96/google/rpc/code.proto#L32).","enum":["OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","UNAUTHENTICATED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS"],"format":"int32","type":"string"},"details":{"items":{"description":"Details of the error.","oneOf":[{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.BadRequest"],"type":"string"}}},{"$ref":"#/components/schemas/BadRequest"}]},{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.ErrorInfo"],"type":"string"}}},{"$ref":"#/components/schemas/ErrorInfo"}]},{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.QuotaFailure"],"type":"string"}}},{"$ref":"#/components/schemas/QuotaFailure"}]},{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.Help"],"type":"string"}}},{"$ref":"#/components/schemas/Help"}]}]},"type":"array"},"message":{"description":"Detailed error message. No compatibility guarantees are given for the text contained in this message.","type":"string"}},"type":"object"}},"securitySchemes":{"auth0":{"description":"RedpandaCloud","flows":{"implicit":{"authorizationUrl":"https://auth.prd.cloud.redpanda.com/oauth/authorize","scopes":{},"x-client-id":"dQjapNIAHhF7EQqQToRla3yEII9sUSap"}},"type":"oauth2"}}},"info":{"title":"Redpanda Cloud Data Plane API","version":"v1alpha2"},"openapi":"3.0.3","paths":{"/v1alpha2/acls":{"delete":{"description":"Delete all ACLs that match the filter criteria. The `filter.` query string parameters find matching ACLs that meet all specified conditions.","operationId":"ACLService_DeleteACLs","parameters":[{"description":"The type of resource (topic, consumer group, etc.) this\nACL targets.","in":"query","name":"filter.resource_type","required":true,"schema":{"enum":["RESOURCE_TYPE_ANY","RESOURCE_TYPE_TOPIC","RESOURCE_TYPE_GROUP","RESOURCE_TYPE_CLUSTER","RESOURCE_TYPE_TRANSACTIONAL_ID","RESOURCE_TYPE_DELEGATION_TOKEN","RESOURCE_TYPE_USER"],"type":"string"}},{"description":"The name of the resource this ACL targets.","in":"query","name":"filter.resource_name","schema":{"type":"string"}},{"description":"The pattern to use for matching the specified resource_name\n(any, exact match, literal, or prefixed).","in":"query","name":"filter.resource_pattern_type","required":true,"schema":{"enum":["RESOURCE_PATTERN_TYPE_ANY","RESOURCE_PATTERN_TYPE_MATCH","RESOURCE_PATTERN_TYPE_LITERAL","RESOURCE_PATTERN_TYPE_PREFIXED"],"type":"string"}},{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","in":"query","name":"filter.principal","schema":{"type":"string"}},{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","in":"query","name":"filter.host","schema":{"type":"string"}},{"description":"The operation that is allowed or denied (e.g. READ).","in":"query","name":"filter.operation","required":true,"schema":{"enum":["OPERATION_ANY","OPERATION_ALL","OPERATION_READ","OPERATION_WRITE","OPERATION_CREATE","OPERATION_DELETE","OPERATION_ALTER","OPERATION_DESCRIBE","OPERATION_CLUSTER_ACTION","OPERATION_DESCRIBE_CONFIGS","OPERATION_ALTER_CONFIGS","OPERATION_IDEMPOTENT_WRITE","OPERATION_CREATE_TOKENS","OPERATION_DESCRIBE_TOKENS"],"type":"string"}},{"description":"Whether the operation should be allowed or denied.","in":"query","name":"filter.permission_type","required":true,"schema":{"enum":["PERMISSION_TYPE_ANY","PERMISSION_TYPE_DENY","PERMISSION_TYPE_ALLOW"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteACLsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete ACLs","tags":["Redpanda ACLs (v1alpha2)"]},"get":{"description":"List all ACLs. The `filter.` query string parameters find matching ACLs that meet all specified conditions.","operationId":"ACLService_ListACLs","parameters":[{"description":"The type of resource (topic, consumer group, etc.) this\nACL targets.","in":"query","name":"filter.resource_type","schema":{"enum":["RESOURCE_TYPE_ANY","RESOURCE_TYPE_TOPIC","RESOURCE_TYPE_GROUP","RESOURCE_TYPE_CLUSTER","RESOURCE_TYPE_TRANSACTIONAL_ID","RESOURCE_TYPE_DELEGATION_TOKEN","RESOURCE_TYPE_USER"],"type":"string"}},{"description":"The name of the resource this ACL targets.","in":"query","name":"filter.resource_name","schema":{"type":"string"}},{"description":"The pattern to use for matching the specified resource_name\n(any, exact match, literal, or prefixed).","in":"query","name":"filter.resource_pattern_type","schema":{"enum":["RESOURCE_PATTERN_TYPE_ANY","RESOURCE_PATTERN_TYPE_MATCH","RESOURCE_PATTERN_TYPE_LITERAL","RESOURCE_PATTERN_TYPE_PREFIXED"],"type":"string"}},{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","in":"query","name":"filter.principal","schema":{"type":"string"}},{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","in":"query","name":"filter.host","schema":{"type":"string"}},{"description":"The operation that is allowed or denied (e.g. READ).","in":"query","name":"filter.operation","schema":{"enum":["OPERATION_ANY","OPERATION_ALL","OPERATION_READ","OPERATION_WRITE","OPERATION_CREATE","OPERATION_DELETE","OPERATION_ALTER","OPERATION_DESCRIBE","OPERATION_CLUSTER_ACTION","OPERATION_DESCRIBE_CONFIGS","OPERATION_ALTER_CONFIGS","OPERATION_IDEMPOTENT_WRITE","OPERATION_CREATE_TOKENS","OPERATION_DESCRIBE_TOKENS"],"type":"string"}},{"description":"Whether the operation should be allowed or denied.","in":"query","name":"filter.permission_type","schema":{"enum":["PERMISSION_TYPE_ANY","PERMISSION_TYPE_DENY","PERMISSION_TYPE_ALLOW"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListACLsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List ACLs","tags":["Redpanda ACLs (v1alpha2)"]},"post":{"description":"Create a new ACL.","operationId":"ACLService_CreateACL","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateACLRequest"}}},"required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateACLResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create ACL","tags":["Redpanda ACLs (v1alpha2)"]}},"/v1alpha2/cloud-storage/mount-tasks":{"get":{"description":"This operation retrieves the status of a task responsible for mounting or unmounting topics. It provides details on the task’s type (mount or unmount), its current state, and the topics involved.","operationId":"CloudStorageService_ListMountTasks","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMountTasksResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Retrieve the mount task status","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/mount-tasks/{id}":{"delete":{"description":"Delete a mount or unmount by ID.","operationId":"CloudStorageService_DeleteMountTask","parameters":[{"description":"Unique identifier of the mount or unmount task to delete.","in":"path","name":"id","required":true,"schema":{"format":"int32","type":"integer"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteMountTaskResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete a mount or unmount","tags":["Cloud Storage (v1alpha2)"]},"get":{"description":"Retrieves the status of a mount or unmount by ID. The response provides details on the operation type (mount or unmount), its current state, and the topics involved. Use the ID returned when you start the mount or unmount, or use the ListMountTasks endpoint to retrieve a list of IDs.","operationId":"CloudStorageService_GetMountTask","parameters":[{"description":"Unique identifier of the mount or unmount task to retrieve.","in":"path","name":"id","required":true,"schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMountTaskResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get the status of a mount or unmount by ID","tags":["Cloud Storage (v1alpha2)"]},"post":{"description":"This operation allows performing an action on an ongoing mount task.","operationId":"CloudStorageService_UpdateMountTask","parameters":[{"description":"ID is the unique identifier of the mount or unmount to update.","in":"path","name":"id","required":true,"schema":{"format":"int32","type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMountTaskBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMountTaskResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update a mount or unmount","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/topics/mount":{"post":{"description":"Attach mountable topics from object storage to a cluster, making them available for consumption and production again. Mounting a topic reloads its data and state to the local brokers, allowing active use of the topic.","operationId":"CloudStorageService_MountTopics","requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TopicMount"},"required":["topics"],"type":"array"}}},"required":true,"x-originalParamName":"topics"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MountTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Mount topics from object storage","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/topics/mountable":{"get":{"description":"Retrieve all topics that are currently unmounted and available to be mounted to the cluster. These topics reside in object storage and can be mounted for consumption or production within the cluster.","operationId":"CloudStorageService_ListMountableTopics","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMountableTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List mountable topics","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/topics/unmount":{"post":{"description":"Unmount topics to object storage, freeing up all local cluster resources. Once you unmount a topic, it can no longer be consumed or produced to. It detaches from the active cluster while its data remains safely stored in the external object storage.","operationId":"CloudStorageService_UnmountTopics","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"string"},"required":["topics"],"type":"array"}}},"description":"List of topics to unmount.","required":true,"x-originalParamName":"topics"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnmountTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Unmount topics to object storage","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters":{"get":{"description":"List connect clusters available for being consumed by the console's kafka-connect service.","operationId":"KafkaConnectService_ListConnectClusters","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectClustersResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List connect clusters","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}":{"get":{"description":"Get information about an available Kafka Connect cluster.","operationId":"KafkaConnectService_GetConnectCluster","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectCluster"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Connect cluster not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connect cluster","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors":{"get":{"description":"List connectors managed by the Kafka Connect service.","operationId":"KafkaConnectService_ListConnectors","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Value of the next_page_token field returned by the previous response. If not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectorsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List connectors","tags":["Kafka Connect (v1alpha2)"]},"post":{"description":"Create a connector with the specified configuration.","operationId":"KafkaConnectService_CreateConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"required":true,"x-originalParamName":"connector"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}":{"delete":{"description":"Delete a connector. This operation force stops all tasks and also deletes the connector configuration.","operationId":"KafkaConnectService_DeleteConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete connector","tags":["Kafka Connect (v1alpha2)"]},"get":{"description":"Get information about a connector in a specific cluster.","operationId":"KafkaConnectService_GetConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/config":{"get":{"description":"Get the configuration for the connector.","operationId":"KafkaConnectService_GetConnectorConfig","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connector configuration","tags":["Kafka Connect (v1alpha2)"]},"put":{"description":"Update the configuration for an existing connector with the specified name, or create a new connector using the given configuration. Returns information about the connector after the change has been made.","operationId":"KafkaConnectService_UpsertConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector. If a connector with this name does not already exist, a new connector is created.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"required":["config"],"type":"object"}}},"description":"Connector configuration property.","required":true,"x-originalParamName":"config"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"Updated"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Upsert connector configuration","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/pause":{"put":{"description":"Pause the connector and its tasks, which stops messages from processing until the connector is resumed. This call is asynchronous and may take some time to process.","operationId":"KafkaConnectService_PauseConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{}}},"description":"Pause request accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Pause connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/restart":{"post":{"description":"Triggers a connector restart. You must specify whether or not tasks are also restarted, and whether only failed connectors are restarted.","operationId":"KafkaConnectService_RestartConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Options"}}},"required":true,"x-originalParamName":"options"},"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Restart connector request success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Restart connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/resume":{"put":{"description":"Resume a paused connector and its tasks, and resumes message processing. This call is asynchronous and may take some time to process. If the connector was not paused, this operation does not do anything.","operationId":"KafkaConnectService_ResumeConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{}}},"description":"Resume request accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Resume connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/status":{"get":{"description":"Gets the current status of the connector, including the state for each of its tasks, error information, etc.","operationId":"KafkaConnectService_GetConnectorStatus","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorStatus"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connector status","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/stop":{"put":{"description":"Stops a connector, but does not delete it. All tasks for the connector are shut down completely. This call is asynchronous and may take some time to process.","operationId":"KafkaConnectService_StopConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{}}},"description":"Request accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stop connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/topics":{"get":{"description":"Returns a list of connector topic names. If the connector is inactive, this call returns an empty list.","operationId":"KafkaConnectService_ListConnectorTopics","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectorTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List connector topics","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/topics/reset":{"put":{"description":"Resets the set of topic names that the connector is using.","operationId":"KafkaConnectService_ResetConnectorTopics","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector using the topics to be reset.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Reset connector topics","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/secrets":{"get":{"description":"List Kafka Connect cluster secrets. Optional: filter based on secret name and labels.","operationId":"SecretService_ListConnectSecrets","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Substring match on secret name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.labels[string][string]","schema":{"type":"string"}},{"description":"Secret scopes to search for","in":"query","name":"filter.scopes","schema":{"items":{"enum":["SCOPE_REDPANDA_CONNECT"],"type":"string"},"type":"array"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSecretsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Connect Cluster Secrets","tags":["Secrets (v1alpha2)"]},"post":{"description":"Create a Kafka Connect cluster secret.","operationId":"SecretService_CreateConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConnectSecretBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"Secret created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Connect Cluster Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/secrets/{id}":{"delete":{"description":"Delete a Kafka Connect cluster secret.","operationId":"SecretService_DeleteConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"ID of the secret to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Secret deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Connect Cluster Secret","tags":["Secrets (v1alpha2)"]},"get":{"description":"Get a specific Kafka Connect cluster secret.","operationId":"SecretService_GetConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"The ID of the secret to retrieve.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Connect Cluster Secret","tags":["Secrets (v1alpha2)"]},"put":{"description":"Update a Kafka Connect cluster secret.","operationId":"SecretService_UpdateConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"ID of the secret to update.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectSecretBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update Connect Cluster Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/redpanda-connect/config-schema":{"get":{"description":"The configuration schema includes available [components and processors](https://docs.redpanda.com/redpanda-cloud/develop/connect/components/about) in this Redpanda Connect instance.","operationId":"PipelineService_GetPipelineServiceConfigSchema","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPipelineServiceConfigSchemaResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Retrieve the schema for Redpanda Connect pipeline configurations.","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines":{"get":{"description":"List Redpanda Connect pipelines. Optional: filter based on pipeline name.","operationId":"PipelineService_ListPipelines","parameters":[{"description":"Substring match on pipeline name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPipelinesResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Redpanda Connect pipelines","tags":["Redpanda Connect Pipeline (v1alpha2)"]},"post":{"description":"Create a new Redpanda Connect pipeline.","operationId":"PipelineService_CreatePipeline","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineCreate"}}},"required":true,"x-originalParamName":"pipeline"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines-by-secrets":{"get":{"description":"Get Redpanda Connect pipelines by secrets.","operationId":"PipelineService_GetPipelinesBySecrets","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPipelinesBySecretsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Redpanda Connect pipelines by secrets","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines-for-secret":{"get":{"description":"Get Redpanda Connect pipelines for a given secret.","operationId":"PipelineService_GetPipelinesForSecret","parameters":[{"description":"Secret ID.","in":"query","name":"secret_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPipelinesForSecretResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Redpanda Connect pipelines for secret","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines/{id}":{"delete":{"description":"Delete a Redpanda Connect pipeline.","operationId":"PipelineService_DeletePipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]},"get":{"description":"Get a specific Redpanda Connect pipeline.","operationId":"PipelineService_GetPipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]},"put":{"description":"Update the [configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) of a Redpanda Connect pipeline.","operationId":"PipelineService_UpdatePipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineUpdate"}}},"required":true,"x-originalParamName":"pipeline"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines/{id}/start":{"put":{"description":"Start a stopped Redpanda Connect pipeline.","operationId":"PipelineService_StartPipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"Started"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Start a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines/{id}/stop":{"put":{"description":"Stop a running Redpanda Connect pipeline.","operationId":"PipelineService_StopPipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"Stopped"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stops a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/secret-scopes":{"get":{"description":"List supported secret scopes.","operationId":"SecretService_ListSecretScopes","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSecretScopesResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Secret Scopes","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/secrets":{"get":{"description":"List secrets. Optional: filter based on secret name and labels.","operationId":"SecretService_ListSecrets","parameters":[{"description":"Substring match on secret name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.labels[string]","schema":{"type":"string"}},{"description":"Secret scopes to search for","in":"query","name":"filter.scopes","schema":{"items":{"enum":["SCOPE_REDPANDA_CONNECT"],"type":"string"},"type":"array"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSecretsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Secrets","tags":["Secrets (v1alpha2)"]},"post":{"description":"Create a secret.","operationId":"SecretService_CreateSecret","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecretRequest"}}},"description":"CreateSecretRequest is the request of CreateSecret.","required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"Secret created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/secrets/{id}":{"delete":{"description":"Delete a secret.","operationId":"SecretService_DeleteSecret","parameters":[{"description":"The id of the secret to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Secret deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Secret","tags":["Secrets (v1alpha2)"]},"get":{"description":"Get a secret.","operationId":"SecretService_GetSecret","parameters":[{"description":"The id of the secret to retrieve.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Secret","tags":["Secrets (v1alpha2)"]},"put":{"description":"Update a secret.","operationId":"SecretService_UpdateSecret","parameters":[{"description":"Secret identifier.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSecretBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/topics":{"get":{"description":"List topics, with partition count and replication factor. Optional: filter based on topic name.","operationId":"TopicService_ListTopics","parameters":[{"description":"Substring match on topic name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response. If not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Topics","tags":["Topics (v1alpha2)"]},"post":{"description":"Create a [topic](https://docs.redpanda.com/current/deploy/deployment-option/cloud/create-topic/).","operationId":"TopicService_CreateTopic","parameters":[{"description":"If true, makes this request a dry run; everything is validated but\nno topics are actually created.","in":"query","name":"validate_only","schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicRequest.Topic"}}},"description":"The topic to create.","required":true,"x-originalParamName":"topic"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicResponse"}}},"description":"Topic created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Topic","tags":["Topics (v1alpha2)"]}},"/v1alpha2/topics/{name}":{"delete":{"description":"Delete the Kafka topic with the requested name.","operationId":"TopicService_DeleteTopic","parameters":[{"description":"Topic name.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Topic deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Requested topic does not exist"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Topic","tags":["Topics (v1alpha2)"]}},"/v1alpha2/topics/{topic_name}/configurations":{"get":{"description":"Get key-value configs for a topic.","operationId":"TopicService_GetTopicConfigurations","parameters":[{"description":"Topic name","in":"path","name":"topic_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTopicConfigurationsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Topic Configurations","tags":["Topics (v1alpha2)"]},"patch":{"description":"Update a subset of the topic configurations.","operationId":"TopicService_UpdateTopicConfigurations","parameters":[{"description":"Topic name","in":"path","name":"topic_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UpdateConfiguration"},"type":"array"}}},"required":true,"x-originalParamName":"configurations"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTopicConfigurationsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update Topic Configuration","tags":["Topics (v1alpha2)"]},"put":{"description":"Update the entire set of key-value configurations for a topic. Config entries that are not provided in the request are removed and will fall back to their default values.","operationId":"TopicService_SetTopicConfigurations","parameters":[{"description":"Name of topic.","in":"path","name":"topic_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SetConfiguration"},"type":"array"}}},"required":true,"x-originalParamName":"configurations"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetTopicConfigurationsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Set Topic Configurations","tags":["Topics (v1alpha2)"]}},"/v1alpha2/transforms":{"get":{"description":"Retrieve a list of Wasm transforms. Optional: filter based on transform name.","operationId":"TransformService_ListTransforms","parameters":[{"description":"Substring match on transform name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"next_page_token":"","transforms":[{"environment_variables":[],"input_topic_name":"topic1","name":"transform1","output_topic_names":["output-topic11","output-topic12"],"statuses":[{"broker_id":1,"lag":1,"partition_id":1,"status":"PARTITION_STATUS_RUNNING"}]},{"environment_variables":[],"input_topic_name":"topic2","name":"transform2","output_topic_names":["output-topic21","output-topic22"],"statuses":[{"broker_id":2,"lag":2,"partition_id":2,"status":"PARTITION_STATUS_RUNNING"}]}]},"schema":{"$ref":"#/components/schemas/ListTransformsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Transforms","tags":["WASM Transforms (v1alpha2)"]},"put":{"description":"Initiate deployment of a new Wasm transform. This endpoint uses multipart/form-data encoding. Following deployment, a brief period is required before the Wasm transform becomes operational. Monitor the partition statuses to check whether the transform is active. This usually takes around 3s, but no longer than 10s.","operationId":"TransformService_DeployTransform","requestBody":{"content":{"multipart/form-data":{"schema":{"example":"{\"name\":\"redact-orders\",\"input_topic_name\":\"orders\",\"output_topic_names\":[\"orders-redacted\"],\"environment_variables\":[{\"key\":\"LOGGER_LEVEL\",\"value\":\"DEBUG\"}]}","properties":{"metadata":{"$ref":"#/components/schemas/DeployTransformRequest"},"wasm_binary":{"description":"Binary file containing the compiled WASM transform. The maximum size for this file is 10MiB.","format":"binary","type":"string"}},"type":"object"}}},"description":"Transform metadata as well as the WASM binary","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransformMetadata"}}},"description":"Created"}},"summary":"Deploy Transform","tags":["WASM Transforms (v1alpha2)"]}},"/v1alpha2/transforms/{name}":{"delete":{"description":"Delete a Wasm transform with the requested name.","operationId":"TransformService_DeleteTransform","parameters":[{"description":"Name of transform.","example":{"name":"transform1"},"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"example":{},"schema":{}}},"description":"Transform deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Transform","tags":["WASM Transforms (v1alpha2)"]},"get":{"description":"Get a specific Wasm transform.","operationId":"TransformService_GetTransform","parameters":[{"description":"Name of transform.","example":{"name":"transform1"},"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"transform":{"environment_variables":[],"input_topic_name":"topic1","name":"transform1","output_topic_names":["output-topic1","output-topic2"],"statuses":[{"broker_id":1,"lag":1,"partition_id":1,"status":"PARTITION_STATUS_RUNNING"}]}},"schema":{"$ref":"#/components/schemas/GetTransformResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Transform","tags":["WASM Transforms (v1alpha2)"]}},"/v1alpha2/users":{"get":{"description":"List users. Optional: filter based on username.","operationId":"UserService_ListUsers","parameters":[{"description":"Username.","in":"query","name":"filter.name","schema":{"type":"string"}},{"description":"Substring match on username. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"next_page_token":"","users":[{"name":"payment-service"},{"name":"jane"}]},"schema":{"$ref":"#/components/schemas/ListUsersResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Users","tags":["Redpanda Users (v1alpha2)"]},"post":{"description":"Create a new user.","operationId":"UserService_CreateUser","requestBody":{"content":{"application/json":{"example":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","name":"payment-service","password":"secure-password"},"schema":{"$ref":"#/components/schemas/CreateUserRequest.User"}}},"required":true,"x-originalParamName":"user"},"responses":{"201":{"content":{"application/json":{"example":{"user":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","name":"payment-service"}},"schema":{"$ref":"#/components/schemas/CreateUserRequest.User"}}},"description":"User created"},"400":{"content":{"application/json":{"example":{"code":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","domain":"redpanda.com/dataplane","metadata":{},"reason":"REASON_INVALID_INPUT"},{"@type":"type.googleapis.com/google.rpc.BadRequest","field_violations":[{"description":"value length must be at least 3 characters","field":"user.password","localized_message":null,"reason":""},{"description":"value is required","field":"user.mechanism","localized_message":null,"reason":""}]}],"message":"provided parameters are invalid"},"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Bad request. Check API documentation and update request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create User","tags":["Redpanda Users (v1alpha2)"]}},"/v1alpha2/users/{name}":{"delete":{"description":"Delete the specified user","operationId":"UserService_DeleteUser","parameters":[{"description":"Username","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"example":{},"schema":{}}},"description":"User deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"example":{"code":"NOT_FOUND","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","domain":"redpanda.com/dataplane","metadata":{},"reason":"REASON_RESOURCE_NOT_FOUND"}],"message":"user not found"},"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete User","tags":["Redpanda Users (v1alpha2)"]}},"/v1alpha2/users/{user.name}":{"put":{"description":"Update a user's credentials.","operationId":"UserService_UpdateUser","parameters":[{"description":"Username.","in":"path","name":"user.name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"user":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","password":"new-password"}},"schema":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"password":{"description":"Password.","type":"string"}},"type":"object"}}},"required":true,"x-originalParamName":"user"},"responses":{"200":{"content":{"application/json":{"example":{"user":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","name":"payment-service"}},"schema":{"$ref":"#/components/schemas/UpdateUserResponse.User"}}},"description":"OK"},"400":{"content":{"application/json":{"example":{"code":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","domain":"redpanda.com/dataplane","metadata":{},"reason":"REASON_INVALID_INPUT"},{"@type":"type.googleapis.com/google.rpc.BadRequest","field_violations":[{"description":"value length must be at least 3 characters","field":"user.password","localized_message":null,"reason":""},{"description":"value is required","field":"user.mechanism","localized_message":null,"reason":""}]}],"message":"provided parameters are invalid"},"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Bad request. Check API documentation and update request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update User","tags":["Redpanda Users (v1alpha2)"]}}},"security":[{"auth0":[]}],"servers":[{"description":"Data Plane API","url":"{dataplane_api_url}","variables":{"dataplane_api_url":{"default":"https://{dataplane_api_url}","description":"Find the Data Plane API base URL of a cluster by calling the Get Cluster endpoint of the Control Plane API. The dataplane_api.url field is returned in the response body.\u003cbr\u003e\u003cbr\u003e\n\t\t\t\t\tExample (Dedicated): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.fmc.prd.cloud.redpanda.com\"\u003cbr\u003e\n\t\t\t\t\tExample (BYOC): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.byoc.prd.cloud.redpanda.com\""}}}],"tags":[{"description":"Manage Redpanda access control lists (ACLs). See [Redpanda Cloud Authorization](https://docs.redpanda.com/redpanda-cloud/security/authorization/cloud-authorization/) for more information.","name":"Redpanda ACLs (v1alpha2)"},{"description":"Manage Redpanda topics stored in object storage. See: [Mountable Topics](https://docs.redpanda.com/redpanda-cloud/manage/mountable-topics/)","name":"Cloud Storage (v1alpha2)"},{"description":"Manage Wasm transforms in Redpanda.","name":"WASM Transforms (v1alpha2)"},{"description":"Manage [connectors](https://docs.redpanda.com/redpanda-cloud/develop/managed-connectors/) and interact with the Kafka Connect API.","name":"Kafka Connect (v1alpha2)"},{"description":"Create and manage [Redpanda Connect](https://docs.redpanda.com/redpanda-cloud/develop/connect/about) pipelines and their configurations.","name":"Redpanda Connect Pipeline (v1alpha2)"},{"description":"Manage [secrets](https://docs.redpanda.com/redpanda-cloud/security/secrets) for Redpanda Cloud.","name":"Secrets (v1alpha2)"},{"description":"Manage Redpanda topics.","name":"Topics (v1alpha2)"},{"description":"Manage Redpanda users. To manage access, see the Data Plane [ACL endpoints](https://docs.redpanda.com/api/cloud-dataplane-api/#get-/v1alpha2/acls).","name":"Redpanda Users (v1alpha2)"}]} \ No newline at end of file +{"components":{"schemas":{"ACL.Operation":{"description":"The operation that is allowed or denied (e.g. READ).","enum":["OPERATION_ANY","OPERATION_ALL","OPERATION_READ","OPERATION_WRITE","OPERATION_CREATE","OPERATION_DELETE","OPERATION_ALTER","OPERATION_DESCRIBE","OPERATION_CLUSTER_ACTION","OPERATION_DESCRIBE_CONFIGS","OPERATION_ALTER_CONFIGS","OPERATION_IDEMPOTENT_WRITE","OPERATION_CREATE_TOKENS","OPERATION_DESCRIBE_TOKENS"],"type":"string"},"Action":{"enum":["ACTION_PREPARE","ACTION_EXECUTE","ACTION_FINISH","ACTION_CANCEL"],"type":"string"},"BadRequest":{"description":"Describes violations in a client request. This error type focuses on the\nsyntactic aspects of the request.","properties":{"field_violations":{"description":"Describes all violations in a client request.","items":{"$ref":"#/components/schemas/FieldViolation"},"type":"array"}},"title":"BadRequest","type":"object"},"Config":{"properties":{"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"ConfigAlterOperation":{"enum":["CONFIG_ALTER_OPERATION_SET","CONFIG_ALTER_OPERATION_DELETE","CONFIG_ALTER_OPERATION_APPEND","CONFIG_ALTER_OPERATION_SUBTRACT"],"type":"string"},"ConfigSource":{"enum":["CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG","CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG","CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG","CONFIG_SOURCE_STATIC_BROKER_CONFIG","CONFIG_SOURCE_DEFAULT_CONFIG","CONFIG_SOURCE_DYNAMIC_BROKER_LOGGER_CONFIG"],"type":"string"},"ConfigSynonym":{"properties":{"name":{"type":"string"},"source":{"$ref":"#/components/schemas/ConfigSource"},"value":{"nullable":true,"type":"string"}},"type":"object"},"ConfigType":{"enum":["CONFIG_TYPE_BOOLEAN","CONFIG_TYPE_STRING","CONFIG_TYPE_INT","CONFIG_TYPE_SHORT","CONFIG_TYPE_LONG","CONFIG_TYPE_DOUBLE","CONFIG_TYPE_LIST","CONFIG_TYPE_CLASS","CONFIG_TYPE_PASSWORD"],"type":"string"},"Configuration":{"properties":{"config_synonyms":{"description":"If no config value is set at the topic level, it will inherit the value\nset at the broker or cluster level. `name` is the corresponding config\nkey whose value is inherited. `source` indicates whether the inherited\nconfig is default, broker, etc.","items":{"$ref":"#/components/schemas/ConfigSynonym"},"type":"array"},"documentation":{"description":"Config documentation.","nullable":true,"type":"string"},"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"read_only":{"description":"Whether the config is read-only, or is dynamic and can be altered.","type":"boolean"},"sensitive":{"description":"Whether this is a sensitive config key and value.","type":"boolean"},"source":{"$ref":"#/components/schemas/ConfigSource"},"type":{"$ref":"#/components/schemas/ConfigType"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"ConnectCluster":{"properties":{"address":{"description":"The host address of the Kafka Connect cluster.","type":"string"},"info":{"$ref":"#/components/schemas/ConnectCluster.Info"},"name":{"description":"Unique name of connect cluster. For Redpanda Cloud, the value is `redpanda`.","type":"string"},"plugins":{"items":{"$ref":"#/components/schemas/ConnectorPlugin"},"type":"array"}},"type":"object"},"ConnectCluster.Info":{"properties":{"commit":{"description":"The git commit ID of the connect worker source code.","type":"string"},"kafka_cluster_id":{"description":"Cluster ID.","type":"string"},"version":{"description":"Connect worker version.","type":"string"}},"type":"object"},"Connector":{"properties":{"state":{"description":"State of the connector instance.","type":"string"},"trace":{"description":"String value of stack trace.","type":"string"},"worker_id":{"description":"ID of worker that the connector is assigned to.","type":"string"}},"type":"object"},"ConnectorError":{"properties":{"content":{"description":"Detailed description of the error.","type":"string"},"title":{"description":"Short description of the error.","type":"string"},"type":{"$ref":"#/components/schemas/ConnectorError.Type"}},"title":"ConnectorError is the error of a connector, this is holistic error\nabstraction, made parsing the error trace of connector or Task","type":"object"},"ConnectorError.Type":{"description":"Error level.","enum":["TYPE_ERROR","TYPE_WARNING"],"type":"string"},"ConnectorHolisticState":{"description":"State of a connector or one of its tasks, as described in the [Kafka Connect documentation](https://kafka.apache.org/documentation.html#connect_administration). Takes into account not just the state of the connector instance itself, but also the tasks within the connector.\n\n - CONNECTOR_HOLISTIC_STATE_PAUSED: The connector or task has been administratively paused.\n - CONNECTOR_HOLISTIC_STATE_RESTARTING: The connector or task is restarting.\n - CONNECTOR_HOLISTIC_STATE_DESTROYED: The connector is destroyed, regardless of any tasks.\n - CONNECTOR_HOLISTIC_STATE_STOPPED: The connector or task has been stopped.\n - CONNECTOR_HOLISTIC_STATE_UNASSIGNED: - The connector or task has not yet been assigned to a worker,\n- THe connector is running, but there are unassigned tasks.\n - CONNECTOR_HOLISTIC_STATE_HEALTHY: The connector is running, \u003e 0 tasks, all of them in running state.\n - CONNECTOR_HOLISTIC_STATE_UNHEALTHY: - The connector has failed,\n- The connector is running, but has no tasks,\n- Connector is running and has tasks, but all tasks have failed.\n - CONNECTOR_HOLISTIC_STATE_DEGRADED: The connector is running and has tasks, and at least one task, but not all, have failed.\n - CONNECTOR_HOLISTIC_STATE_UNKNOWN: The connector or task state could not be determined.","enum":["CONNECTOR_HOLISTIC_STATE_PAUSED","CONNECTOR_HOLISTIC_STATE_RESTARTING","CONNECTOR_HOLISTIC_STATE_DESTROYED","CONNECTOR_HOLISTIC_STATE_STOPPED","CONNECTOR_HOLISTIC_STATE_UNASSIGNED","CONNECTOR_HOLISTIC_STATE_HEALTHY","CONNECTOR_HOLISTIC_STATE_UNHEALTHY","CONNECTOR_HOLISTIC_STATE_DEGRADED","CONNECTOR_HOLISTIC_STATE_UNKNOWN"],"type":"string"},"ConnectorInfoStatus":{"properties":{"info":{"$ref":"#/components/schemas/ConnectorSpec"},"name":{"description":"Name of connector.","type":"string"},"status":{"$ref":"#/components/schemas/ConnectorStatus"}},"type":"object"},"ConnectorPlugin":{"properties":{"class":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ConnectorSpec":{"description":"Connector specifications as defined in the Kafka Connect\nAPI. You may include this in the request body when creating a new connector.","properties":{"config":{"additionalProperties":{"type":"string"},"description":"Connector configuration properties.","type":"object"},"name":{"description":"Name of connector.","type":"string"},"tasks":{"items":{"$ref":"#/components/schemas/TaskInfo"},"readOnly":true,"type":"array"},"type":{"readOnly":true,"type":"string"}},"required":["name","config"],"type":"object"},"ConnectorStatus":{"properties":{"connector":{"$ref":"#/components/schemas/Connector"},"errors":{"description":"List of parsed connectors' and tasks' errors.","items":{"$ref":"#/components/schemas/ConnectorError"},"type":"array"},"holistic_state":{"$ref":"#/components/schemas/ConnectorHolisticState"},"name":{"description":"Name of connector.","type":"string"},"tasks":{"description":"Status of connector tasks. For more information, see the [https://docs.redpanda.com/current/deploy/deployment-option/cloud/managed-connectors/monitor-connectors/#connector-tasks](Monitor Connectors) documentation.","items":{"$ref":"#/components/schemas/TaskStatus"},"type":"array"},"type":{"description":"Type of connector (sink or source).","type":"string"}},"type":"object"},"CreateACLRequest":{"properties":{"host":{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.\nFor requests with resource_type CLUSTER, this will default to \"kafka-cluster\".","type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"required":["resource_type","resource_pattern_type","principal","host","operation","permission_type"],"type":"object"},"CreateACLResponse":{"type":"object"},"CreateConnectSecretBody":{"description":"CreateConnectSecretRequest is the request of CreateConnectSecret.","properties":{"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"name":{"description":"Name of connector.","type":"string"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["name","secret_data"],"type":"object"},"CreateConnectSecretResponse":{"description":"CreateConnectSecretResponse is the response of CreateConnectSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"CreateConnectorResponse":{"properties":{"connector":{"$ref":"#/components/schemas/ConnectorSpec"}},"type":"object"},"CreatePipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"CreateSecretRequest":{"description":"CreateSecretRequest is the request of CreateSecret.","properties":{"id":{"description":"Secret identifier.","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes","type":"array"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["secret_data"],"type":"object"},"CreateSecretResponse":{"description":"CreateSecretResponse is the response of CreateSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"CreateTopicRequest.Topic":{"properties":{"configs":{"description":"An array of key-value config pairs for a topic.\nThese correspond to Kafka topic-level configs.","items":{"$ref":"#/components/schemas/Config"},"type":"array"},"name":{"description":"Name of topic.","type":"string"},"partition_count":{"description":"The number of partitions to give the topic. If specifying\npartitions manually (see `replica_assignments`), set to -1.\nOr, to use the cluster default partition count, set to null.","format":"int32","nullable":true,"type":"integer"},"replica_assignments":{"description":"Manually specify broker ID assignments for partition replicas. If manually assigning replicas, both `replication_factor` and\n`partition_count` must be -1.","items":{"$ref":"#/components/schemas/ReplicaAssignment"},"type":"array"},"replication_factor":{"description":"The number of replicas every partition must have.\nIf specifying partitions manually (see `replica_assignments`), set to -1.\nOr, to use the cluster default replication factor, set to null.","format":"int32","nullable":true,"type":"integer"}},"type":"object"},"CreateTopicResponse":{"properties":{"name":{"description":"Name of topic.","type":"string"},"partition_count":{"description":"The number of partitions created for the topic.\nThis field has a default value of -1, which may be returned if the broker\ndoes not support v5+ of this request which added support for returning\nthis information.","format":"int32","type":"integer"},"replication_factor":{"description":"The number of replicas per topic partition.\nThis field has a default of -1, which may be returned if the broker\ndoes not support v5+ of this request which added support for returning\nthis information.","format":"int32","type":"integer"}},"type":"object"},"CreateUserRequest.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"description":"Username.","type":"string"},"password":{"description":"Password.","type":"string"}},"type":"object"},"CreateUserResponse":{"properties":{"user":{"$ref":"#/components/schemas/CreateUserResponse.User"}},"type":"object"},"CreateUserResponse.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"title":"Name of newly-created user","type":"string"}},"type":"object"},"DeleteACLsRequest.Filter":{"properties":{"host":{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","nullable":true,"type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","nullable":true,"type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.","nullable":true,"type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"required":["resource_type","resource_pattern_type","operation","permission_type"],"type":"object"},"DeleteACLsResponse":{"properties":{"matching_acls":{"items":{"$ref":"#/components/schemas/MatchingACL"},"type":"array"}},"type":"object"},"DeleteConnectSecretResponse":{"description":"DeleteConnectSecretResponse is the response of DeleteConnectSecret.","type":"object"},"DeleteMountTaskResponse":{"type":"object"},"DeletePipelineResponse":{"type":"object"},"DeleteSecretResponse":{"description":"DeleteSecretResponse is the response of DeleteSecret.","type":"object"},"DeleteTopicResponse":{"type":"object"},"DeleteTransformResponse":{"type":"object"},"DeleteUserResponse":{"type":"object"},"DeployTransformRequest":{"description":"Metadata required to deploy a new Wasm\ntransform in a Redpanda cluster.","properties":{"environment_variables":{"description":"The environment variables you want to apply to your transform's environment","items":{"$ref":"#/components/schemas/EnvironmentVariable"},"type":"array"},"input_topic_name":{"description":"The input topic to apply the transform to.","example":"orders","type":"string"},"name":{"description":"Name of the transform.","example":"redact-payment-details-in-orders","type":"string"},"output_topic_names":{"description":"Output topic to write the transform results to.","example":"orders-redacted","items":{"type":"string"},"type":"array"}},"required":["name","input_topic_name","output_topic_names"],"type":"object"},"EnvironmentVariable":{"properties":{"key":{"description":"The key of your environment variable.","example":"LOG_LEVEL","type":"string"},"value":{"description":"The value of your environment variable.","example":"DEBUG","type":"string"}},"required":["key","value"],"type":"object"},"ErrorInfo":{"description":"Describes the cause of the error with structured details.\n\nExample of an error when contacting the \"pubsub.googleapis.com\" API when it\nis not enabled:\n\n { \"reason\": \"API_DISABLED\"\n \"domain\": \"googleapis.com\"\n \"metadata\": {\n \"resource\": \"projects/123\",\n \"service\": \"pubsub.googleapis.com\"\n }\n }\n\nThis response indicates that the pubsub.googleapis.com API is not enabled.\n\nExample of an error that is returned when attempting to create a Spanner\ninstance in a region that is out of stock:\n\n { \"reason\": \"STOCKOUT\"\n \"domain\": \"spanner.googleapis.com\",\n \"metadata\": {\n \"availableRegions\": \"us-central1,us-east2\"\n }\n }","properties":{"domain":{"description":"The logical grouping to which the \"reason\" belongs. The error domain\nis typically the registered service name of the tool or product that\ngenerates the error. Example: \"pubsub.googleapis.com\". If the error is\ngenerated by some common infrastructure, the error domain must be a\nglobally unique value that identifies the infrastructure. For Google API\ninfrastructure, the error domain is \"googleapis.com\".","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"Additional structured details about this error.\n\nKeys must match a regular expression of `[a-z][a-zA-Z0-9-_]+` but should\nideally be lowerCamelCase. Also, they must be limited to 64 characters in\nlength. When identifying the current value of an exceeded limit, the units\nshould be contained in the key, not the value. For example, rather than\n`{\"instanceLimit\": \"100/request\"}`, should be returned as,\n`{\"instanceLimitPerRequest\": \"100\"}`, if the client exceeds the number of\ninstances that can be created in a single (batch) request.","type":"object"},"reason":{"description":"The reason of the error. This is a constant value that identifies the\nproximate cause of the error. Error reasons are unique within a particular\ndomain of errors. This should be at most 63 characters and match a\nregular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`, which represents\nUPPER_SNAKE_CASE.","type":"string"}},"title":"ErrorInfo","type":"object"},"FieldViolation":{"description":"A message type used to describe a single bad request field.","properties":{"description":{"description":"A description of why the request element is bad.","type":"string"},"field":{"description":"A path that leads to a field in the request body. The value will be a\nsequence of dot-separated identifiers that identify a protocol buffer\nfield.\n\nConsider the following:\n\n message CreateContactRequest {\n message EmailAddress {\n enum Type {\n TYPE_UNSPECIFIED = 0;\n HOME = 1;\n WORK = 2;\n }\n\n optional string email = 1;\n repeated EmailType type = 2;\n }\n\n string full_name = 1;\n repeated EmailAddress email_addresses = 2;\n }\n\nIn this example, in proto `field` could take one of the following values:\n\n* `full_name` for a violation in the `full_name` value\n* `email_addresses[0].email` for a violation in the `email` field of the\n first `email_addresses` message\n* `email_addresses[2].type[1]` for a violation in the second `type`\n value in the third `email_addresses` message.\n\nIn JSON, the same values are represented as:\n\n* `fullName` for a violation in the `fullName` value\n* `emailAddresses[0].email` for a violation in the `email` field of the\n first `emailAddresses` message\n* `emailAddresses[2].type[1]` for a violation in the second `type`\n value in the third `emailAddresses` message.","type":"string"},"localized_message":{"$ref":"#/components/schemas/LocalizedMessage"},"reason":{"description":"The reason of the field-level error. This is a constant value that\nidentifies the proximate cause of the field-level error. It should\nuniquely identify the type of the FieldViolation within the scope of the\ngoogle.rpc.ErrorInfo.domain. This should be at most 63\ncharacters and match a regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`,\nwhich represents UPPER_SNAKE_CASE.","type":"string"}},"type":"object"},"GetConnectClusterResponse":{"properties":{"cluster":{"$ref":"#/components/schemas/ConnectCluster"}},"type":"object"},"GetConnectSecretResponse":{"description":"GetConnectSecretResponse is the response of GetConnectSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"GetConnectorConfigResponse":{"properties":{"config":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"},"GetConnectorResponse":{"properties":{"connector":{"$ref":"#/components/schemas/ConnectorSpec"}},"type":"object"},"GetConnectorStatusResponse":{"properties":{"status":{"$ref":"#/components/schemas/ConnectorStatus"}},"type":"object"},"GetMountTaskResponse":{"properties":{"task":{"$ref":"#/components/schemas/MountTask"}},"type":"object"},"GetPipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"GetPipelineServiceConfigSchemaResponse":{"properties":{"config_schema":{"description":"JSON schema of the configuration components that are allowed for Connect pipelines.","type":"string"}},"type":"object"},"GetPipelinesBySecretsResponse":{"properties":{"pipelines_for_secret":{"items":{"$ref":"#/components/schemas/PipelinesForSecret"},"type":"array"}},"type":"object"},"GetPipelinesForSecretResponse":{"properties":{"pipelines_for_secret":{"$ref":"#/components/schemas/PipelinesForSecret"}},"type":"object"},"GetSecretResponse":{"description":"GetSecretResponse is the response of GetSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"GetTopicConfigurationsResponse":{"properties":{"configurations":{"items":{"$ref":"#/components/schemas/Configuration"},"type":"array"}},"type":"object"},"GetTransformResponse":{"properties":{"transform":{"$ref":"#/components/schemas/TransformMetadata"}},"type":"object"},"Help":{"description":"Provides links to documentation or for performing an out of band action.\n\nFor example, if a quota check failed with an error indicating the calling\nproject hasn't enabled the accessed service, this can contain a URL pointing\ndirectly to the right place in the developer console to flip the bit.","properties":{"links":{"description":"URL(s) pointing to additional information on handling the current error.","items":{"$ref":"#/components/schemas/Link"},"type":"array"}},"title":"Help","type":"object"},"Link":{"description":"Describes a URL link.","properties":{"description":{"description":"Describes what the link offers.","type":"string"},"url":{"description":"The URL of the link.","type":"string"}},"type":"object"},"ListACLsRequest.Filter":{"properties":{"host":{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","nullable":true,"type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","nullable":true,"type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.","nullable":true,"type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"type":"object"},"ListACLsResponse":{"properties":{"resources":{"items":{"$ref":"#/components/schemas/Resource"},"type":"array"}},"type":"object"},"ListConnectClustersResponse":{"properties":{"clusters":{"items":{"$ref":"#/components/schemas/ConnectCluster"},"type":"array"}},"type":"object"},"ListConnectSecretsResponse":{"description":"ListConnectSecretsResponse is the response of ListConnectSecrets.","properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"secrets":{"description":"Secrets retrieved.","items":{"$ref":"#/components/schemas/Secret"},"type":"array"}},"type":"object"},"ListConnectorTopicsResponse":{"properties":{"topics":{"description":"Topic names.","items":{"type":"string"},"type":"array"}},"type":"object"},"ListConnectorsResponse":{"properties":{"connectors":{"description":"List of connectors, where the parent key is the connector name.","items":{"$ref":"#/components/schemas/ConnectorInfoStatus"},"type":"array"},"next_page_token":{"description":"Page Token to fetch the next page. The value can be used as page_token in the next call to this endpoint.","type":"string"}},"type":"object"},"ListMountTasksResponse":{"properties":{"tasks":{"items":{"$ref":"#/components/schemas/MountTask"},"type":"array"}},"type":"object"},"ListMountableTopicsResponse":{"properties":{"topics":{"items":{"$ref":"#/components/schemas/TopicLocation"},"type":"array"}},"type":"object"},"ListPipelinesRequest.Filter":{"properties":{"name_contains":{"description":"Substring match on pipeline name. Case-sensitive.","type":"string"}},"type":"object"},"ListPipelinesResponse":{"properties":{"next_page_token":{"type":"string"},"pipelines":{"items":{"$ref":"#/components/schemas/Pipeline"},"type":"array"}},"type":"object"},"ListSecretScopesResponse":{"description":"ListSecretScopesResponse is the response of ListSecretScopes.","properties":{"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"type":"array"}},"type":"object"},"ListSecretsFilter":{"description":"ListSecretsFilter are the filter options for listing secrets.","properties":{"labels[string][string]":{"additionalProperties":{"type":"string"},"description":"The secret labels to search for.","type":"object"},"name_contains":{"description":"Substring match on secret name. Case-sensitive.","type":"string"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes to search for","type":"array"}},"type":"object"},"ListSecretsResponse":{"description":"ListSecretsResponse is the response of ListSecrets.","properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"secrets":{"description":"Secrets retrieved.","items":{"$ref":"#/components/schemas/Secret"},"type":"array"}},"type":"object"},"ListTopicsRequest.Filter":{"properties":{"name_contains":{"description":"Substring match on topic name. Case-sensitive.","type":"string"}},"type":"object"},"ListTopicsResponse":{"properties":{"next_page_token":{"type":"string"},"topics":{"items":{"$ref":"#/components/schemas/ListTopicsResponse.Topic"},"type":"array"}},"type":"object"},"ListTopicsResponse.Topic":{"properties":{"internal":{"description":"Whether topic is internal only.","type":"boolean"},"name":{"description":"Topic name.","type":"string"},"partition_count":{"description":"Topic partition count.","format":"int32","type":"integer"},"replication_factor":{"description":"Topic replication factor.","format":"int32","type":"integer"}},"type":"object"},"ListTransformsRequest.Filter":{"properties":{"name_contains":{"description":"Substring match on transform name. Case-sensitive.","type":"string"}},"type":"object"},"ListTransformsResponse":{"properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"transforms":{"items":{"$ref":"#/components/schemas/TransformMetadata"},"type":"array"}},"type":"object"},"ListUsersRequest.Filter":{"properties":{"name":{"description":"Username.","type":"string"},"name_contains":{"description":"Substring match on username. Case-sensitive.","type":"string"}},"type":"object"},"ListUsersResponse":{"properties":{"next_page_token":{"description":"Token to retrieve the next page.","type":"string"},"users":{"items":{"$ref":"#/components/schemas/ListUsersResponse.User"},"type":"array"}},"type":"object"},"ListUsersResponse.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"description":"Username.","type":"string"}},"type":"object"},"LocalizedMessage":{"description":"Provides a localized error message that is safe to return to the user\nwhich can be attached to an RPC error.","properties":{"locale":{"title":"The locale used following the specification defined at\nhttps://www.rfc-editor.org/rfc/bcp/bcp47.txt.\nExamples are: \"en-US\", \"fr-CH\", \"es-MX\"","type":"string"},"message":{"description":"The localized error message in the above locale.","type":"string"}},"type":"object"},"MatchingACL":{"properties":{"error":{"$ref":"#/components/schemas/rpc.Status"},"host":{"description":"The host address to use for this ACL.","type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies.","type":"string"},"resource_name":{"description":"The name of the resource this ACL targets.","type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"type":"object"},"MountTask":{"properties":{"id":{"description":"Unique identifier for this mount task.","format":"int32","type":"integer"},"state":{"$ref":"#/components/schemas/MountTask.State"},"topics":{"description":"List of topics that are being mounted or unmounted.","items":{"$ref":"#/components/schemas/MountTask.Topic"},"type":"array"},"type":{"$ref":"#/components/schemas/MountTask.Type"}},"type":"object"},"MountTask.State":{"description":" - STATE_PLANNED: Planned: The mount task has been created and is awaiting further actions.\n - STATE_PREPARING: Preparing: The mount task is gathering resources and preparing for execution.\n - STATE_PREPARED: Prepared: All preparations are complete, and the mount task is ready to be executed.\n - STATE_EXECUTING: Executing: The mount task is actively transferring or transforming data.\n - STATE_EXECUTED: Executed: The core mount task actions are complete, but the mount task has not yet cut over or finalized.\n - STATE_CUT_OVER: Cut Over: The mount task has reached a critical point where ownership is transferred or final adjustments are made.\n - STATE_FINISHED: Finished: The mount task has been successfully completed, and no further actions are required.\n - STATE_CANCELING: Canceling: The mount task is in the process of being canceled, and rollback or cleanup actions may be in progress.\n - STATE_CANCELLED: Cancelled: The mount task has been fully canceled, and no further actions will be taken.","enum":["STATE_PLANNED","STATE_PREPARING","STATE_PREPARED","STATE_EXECUTING","STATE_EXECUTED","STATE_CUT_OVER","STATE_FINISHED","STATE_CANCELING","STATE_CANCELLED"],"type":"string"},"MountTask.Topic":{"properties":{"source_topic_reference":{"description":"The topic reference in the object storage bucket.\nThis field is only set for tasks of type MOUNT.","type":"string"},"topic_reference":{"description":"The topic reference within the current cluster, which may be either a simple topic name or a full reference\nin the form: cluster-uuid/topic-name/revision.","type":"string"}},"type":"object"},"MountTask.Type":{"description":" - TYPE_MOUNT: Mount represents the process of making topics available in a cluster by loading them from object storage.\n - TYPE_UNMOUNT: Unmount represents the process of offloading topics back to object storage.","enum":["TYPE_MOUNT","TYPE_UNMOUNT"],"type":"string"},"MountTopicsResponse":{"properties":{"mount_task_id":{"format":"int32","title":"ID of mount","type":"integer"}},"type":"object"},"Options":{"properties":{"include_tasks":{"description":"Restart connector's tasks.","type":"boolean"},"only_failed":{"description":"Restart only connectors that have failed.","type":"boolean"}},"type":"object"},"PartitionStatus":{"enum":["PARTITION_STATUS_RUNNING","PARTITION_STATUS_INACTIVE","PARTITION_STATUS_ERRORED","PARTITION_STATUS_UNKNOWN"],"type":"string"},"PartitionTransformStatus":{"properties":{"broker_id":{"format":"int32","type":"integer"},"lag":{"format":"int32","type":"integer"},"partition_id":{"format":"int32","type":"integer"},"status":{"$ref":"#/components/schemas/PartitionStatus"}},"type":"object"},"PermissionType":{"description":"Whether the operation should be allowed or denied.","enum":["PERMISSION_TYPE_ANY","PERMISSION_TYPE_DENY","PERMISSION_TYPE_ALLOW"],"type":"string"},"Pipeline":{"description":"Defines the pipeline resource.","properties":{"config_yaml":{"description":"The Redpanda Connect pipeline configuration in YAML format. See the [Redpanda Connect Configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) documentation for more details.","title":"The pipeline configuration in YAML.\nSee https://docs.redpanda.com/redpanda-connect/configuration/about/","type":"string"},"description":{"description":"Optional pipeline description.","type":"string"},"display_name":{"description":"User-friendly pipeline name.","type":"string"},"id":{"description":"Pipeline ID.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/ServiceAccount"},"state":{"$ref":"#/components/schemas/Pipeline.State"},"status":{"$ref":"#/components/schemas/Pipeline.Status"}},"required":["id","display_name","config_yaml"],"type":"object"},"Pipeline.State":{"description":"State of the pipeline.\n\n - STATE_STARTING: The pipeline is starting.\n - STATE_RUNNING: The pipeline is running.\n - STATE_STOPPING: The pipeline is in the process of stopping.\n - STATE_STOPPED: The pipeline is stopped and in paused state.\n - STATE_ERROR: The pipeline encountered an error. See [Error Handling](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/error_handling/) for further guidance.\n - STATE_COMPLETED: The pipeline has completed the job successfully.","enum":["STATE_STARTING","STATE_RUNNING","STATE_STOPPING","STATE_STOPPED","STATE_ERROR","STATE_COMPLETED"],"type":"string"},"Pipeline.Status":{"description":"Pipeline status may contain an error message.","properties":{"error":{"type":"string"}},"type":"object"},"PipelineCreate":{"description":"PipelineCreate contains the details for the pipeline creation request.","properties":{"config_yaml":{"description":"The Redpanda Connect pipeline configuration in YAML format. See the [Redpanda Connect Configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) documentation for more details.","type":"string"},"description":{"description":"Pipeline description.","type":"string"},"display_name":{"description":"User-friendly pipeline name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/ServiceAccount"}},"required":["display_name","config_yaml"],"type":"object"},"PipelineUpdate":{"properties":{"config_yaml":{"description":"The Redpanda Connect pipeline configuration in YAML format. See the [Redpanda Connect Configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) documentation for more details.","type":"string"},"description":{"description":"Pipeline description.","type":"string"},"display_name":{"description":"User-friendly pipeline name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/ServiceAccount"}},"required":["display_name","config_yaml"],"type":"object"},"PipelinesForSecret":{"properties":{"pipelines":{"items":{"$ref":"#/components/schemas/Pipeline"},"type":"array"},"secret_id":{"type":"string"}},"type":"object"},"Policy":{"properties":{"host":{"description":"The host address for this ACL.","type":"string"},"operation":{"$ref":"#/components/schemas/ACL.Operation"},"permission_type":{"$ref":"#/components/schemas/PermissionType"},"principal":{"description":"The user for whom this ACL applies.","type":"string"}},"type":"object"},"QuotaFailure":{"description":"Describes how a quota check failed.\n\nFor example if a daily limit was exceeded for the calling project,\na service could respond with a QuotaFailure detail containing the project\nid and the description of the quota limit that was exceeded. If the\ncalling project hasn't enabled the service in the developer console, then\na service could respond with the project id and set `service_disabled`\nto true.\n\nAlso see RetryInfo and Help types for other details about handling a\nquota failure.","properties":{"violations":{"description":"Describes all quota violations.","items":{"$ref":"#/components/schemas/QuotaFailure.Violation"},"type":"array"}},"title":"QuotaFailure","type":"object"},"QuotaFailure.Violation":{"description":"A message type used to describe a single quota violation. For example, a\ndaily quota or a custom quota that was exceeded.","properties":{"api_service":{"description":"The API Service from which the `QuotaFailure.Violation` orginates. In\nsome cases, Quota issues originate from an API Service other than the one\nthat was called. In other words, a dependency of the called API Service\ncould be the cause of the `QuotaFailure`, and this field would have the\ndependency API service name.\n\nFor example, if the called API is Kubernetes Engine API\n(container.googleapis.com), and a quota violation occurs in the\nKubernetes Engine API itself, this field would be\n\"container.googleapis.com\". On the other hand, if the quota violation\noccurs when the Kubernetes Engine API creates VMs in the Compute Engine\nAPI (compute.googleapis.com), this field would be\n\"compute.googleapis.com\".","type":"string"},"description":{"description":"A description of how the quota check failed. Clients can use this\ndescription to find more about the quota configuration in the service's\npublic documentation, or find the relevant quota limit to adjust through\ndeveloper console.\n\nFor example: \"Service disabled\" or \"Daily Limit for read operations\nexceeded\".","type":"string"},"future_quota_value":{"description":"The new quota value being rolled out at the time of the violation. At the\ncompletion of the rollout, this value will be enforced in place of\nquota_value. If no rollout is in progress at the time of the violation,\nthis field is not set.\n\nFor example, if at the time of the violation a rollout is in progress\nchanging the number of CPUs quota from 10 to 20, 20 would be the value of\nthis field.","format":"int64","nullable":true,"type":"string"},"quota_dimensions":{"additionalProperties":{"type":"string"},"description":"The dimensions of the violated quota. Every non-global quota is enforced\non a set of dimensions. While quota metric defines what to count, the\ndimensions specify for what aspects the counter should be increased.\n\nFor example, the quota \"CPUs per region per VM family\" enforces a limit\non the metric \"compute.googleapis.com/cpus_per_vm_family\" on dimensions\n\"region\" and \"vm_family\". And if the violation occurred in region\n\"us-central1\" and for VM family \"n1\", the quota_dimensions would be,\n\n{\n \"region\": \"us-central1\",\n \"vm_family\": \"n1\",\n}\n\nWhen a quota is enforced globally, the quota_dimensions would always be\nempty.","type":"object"},"quota_id":{"description":"The id of the violated quota. Also know as \"limit name\", this is the\nunique identifier of a quota in the context of an API service.\n\nFor example, \"CPUS-PER-VM-FAMILY-per-project-region\".","type":"string"},"quota_metric":{"description":"The metric of the violated quota. A quota metric is a named counter to\nmeasure usage, such as API requests or CPUs. When an activity occurs in a\nservice, such as Virtual Machine allocation, one or more quota metrics\nmay be affected.\n\nFor example, \"compute.googleapis.com/cpus_per_vm_family\",\n\"storage.googleapis.com/internet_egress_bandwidth\".","type":"string"},"quota_value":{"description":"The enforced quota value at the time of the `QuotaFailure`.\n\nFor example, if the enforced quota value at the time of the\n`QuotaFailure` on the number of CPUs is \"10\", then the value of this\nfield would reflect this quantity.","format":"int64","type":"string"},"subject":{"description":"The subject on which the quota check failed.\nFor example, \"clientip:\u003cip address of client\u003e\" or \"project:\u003cGoogle\ndeveloper project id\u003e\".","type":"string"}},"type":"object"},"ReplicaAssignment":{"properties":{"partition_id":{"description":"A partition to create.","format":"int32","type":"integer"},"replica_ids":{"description":"The broker IDs the partition replicas are assigned to.","items":{"format":"int32","type":"integer"},"type":"array"}},"type":"object"},"Resource":{"properties":{"acls":{"items":{"$ref":"#/components/schemas/Policy"},"type":"array"},"resource_name":{"description":"The name of the resource this ACL targets.","type":"string"},"resource_pattern_type":{"$ref":"#/components/schemas/ResourcePatternType"},"resource_type":{"$ref":"#/components/schemas/ResourceType"}},"type":"object"},"ResourcePatternType":{"description":"The pattern to use for matching the specified resource_name\n(any, exact match, literal, or prefixed).","enum":["RESOURCE_PATTERN_TYPE_ANY","RESOURCE_PATTERN_TYPE_MATCH","RESOURCE_PATTERN_TYPE_LITERAL","RESOURCE_PATTERN_TYPE_PREFIXED"],"type":"string"},"ResourceType":{"description":"The type of resource (topic, consumer group, etc.) this\nACL targets.","enum":["RESOURCE_TYPE_ANY","RESOURCE_TYPE_TOPIC","RESOURCE_TYPE_GROUP","RESOURCE_TYPE_CLUSTER","RESOURCE_TYPE_TRANSACTIONAL_ID","RESOURCE_TYPE_DELEGATION_TOKEN","RESOURCE_TYPE_USER"],"type":"string"},"Resources":{"properties":{"cpu_shares":{"description":"`cpu_shares` is a string specifying the amount of CPU to allocate for the\npipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable\nunits include:\n- Decimal SI units: \"m\" (e.g., \"500m\" for 500 millicores, \"2\" for 2 cores)\nCPU shares can be specified in millicores (1 core = 1000 millicores).\nIf you don't specify a unit, the value is interpreted as the number of cores.","type":"string"},"memory_shares":{"description":"`memory_shares` is a string specifying the amount of memory to allocate for\nthe pipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable units\ninclude:\n- Decimal SI units: \"K\", \"M\", \"G\", \"T\", \"P\", \"E\" (e.g., \"128M\" for 128\n megabytes)\n- Binary SI units: \"Ki\", \"Mi\", \"Gi\", \"Ti\", \"Pi\", \"Ei\" (e.g., \"512Mi\" for\n512 mebibytes) If you don't specify a unit, the value is interpreted as\nbytes.","type":"string"}},"required":["memory_shares","cpu_shares"],"type":"object"},"SASLMechanism":{"description":"SASL mechanism to use for authentication.","enum":["SASL_MECHANISM_SCRAM_SHA_256","SASL_MECHANISM_SCRAM_SHA_512"],"type":"string"},"Scope":{"description":"Defines the scope of a secret.","enum":["SCOPE_REDPANDA_CONNECT"],"type":"string"},"Secret":{"description":"Defines the secret resource.","properties":{"id":{"description":"Secret identifier.","readOnly":true,"type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes","type":"array"}},"type":"object"},"ServiceAccount":{"properties":{"client_id":{"type":"string"},"client_secret":{"type":"string"}},"type":"object"},"SetConfiguration":{"properties":{"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"SetTopicConfigurationsResponse":{"properties":{"configurations":{"description":"Topic's complete set of configurations after this update.","items":{"$ref":"#/components/schemas/Configuration"},"type":"array"}},"type":"object"},"StartPipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"StopPipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"TaskInfo":{"properties":{"connector":{"description":"Name of connector.","type":"string"},"task":{"description":"The connector task ID.","format":"int32","type":"integer"}},"type":"object"},"TaskStatus":{"properties":{"id":{"description":"The connector task ID.","format":"int32","type":"integer"},"state":{"description":"State of connector task.","type":"string"},"trace":{"description":"String value of stack trace.","type":"string"},"worker_id":{"description":"ID of worker that the task is assigned to.","type":"string"}},"type":"object"},"TopicLocation":{"properties":{"name":{"description":"Topic name.","type":"string"},"topic_location":{"description":"Full reference for the unmounted topic in this format: `topic-name/cluster-uuid/revision`.\nUse this as unique identifier for mounting a topic if there are multiple topics available\nwith the same name.","type":"string"}},"type":"object"},"TopicMount":{"description":"TopicMount defines the migration of a topic from the cloud storage into this cluster,\nso that it becomes available via the Kafka API.","properties":{"alias":{"description":"Alias may be provided to mount the topic under a different name. Leave\nblank to re-use the source topic name. The alias does not persist if you\nunmount the topic again.","type":"string"},"source_topic_reference":{"description":"The topic name or full reference of the topic to mount. The full reference\nmust be used in case the same topic exists more than once. This may be the case if\nthe same topic has been unmounted multiple times. List all mountable topics to\nfind the full reference (contains topic name, cluster uuid and revision).","type":"string"}},"required":["source_topic_reference"],"type":"object"},"TransformMetadata":{"properties":{"environment_variables":{"description":"The environment variables you want to apply to your transform's environment","items":{"$ref":"#/components/schemas/EnvironmentVariable"},"type":"array"},"input_topic_name":{"description":"Input topic to apply the transform to.","type":"string"},"name":{"description":"Name of transform.","type":"string"},"output_topic_names":{"description":"Output topics to write the transform results to.","items":{"type":"string"},"type":"array"},"statuses":{"items":{"$ref":"#/components/schemas/PartitionTransformStatus"},"type":"array"}},"type":"object"},"UnmountTopicsResponse":{"properties":{"mount_task_id":{"format":"int32","title":"ID of unmount","type":"integer"}},"type":"object"},"UpdateConfiguration":{"properties":{"name":{"description":"A topic-level config key (e.g. `segment.bytes`).","type":"string"},"operation":{"$ref":"#/components/schemas/ConfigAlterOperation"},"value":{"description":"A topic-level config value (e.g. 1073741824).","nullable":true,"type":"string"}},"type":"object"},"UpdateConnectSecretBody":{"description":"UpdateConnectSecretRequest is the request of UpdateConnectSecret.","properties":{"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["secret_data"],"type":"object"},"UpdateConnectSecretResponse":{"description":"UpdateConnectSecretResponse is the response of UpdateConnectSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"UpdateMountTaskBody":{"properties":{"action":{"$ref":"#/components/schemas/Action"}},"required":["action"],"type":"object"},"UpdateMountTaskResponse":{"type":"object"},"UpdatePipelineResponse":{"properties":{"pipeline":{"$ref":"#/components/schemas/Pipeline"}},"type":"object"},"UpdateSecretBody":{"description":"UpdateSecretRequest is the request of UpdateSecret.","properties":{"labels":{"additionalProperties":{"type":"string"},"description":"Secret labels.","type":"object"},"scopes":{"items":{"$ref":"#/components/schemas/Scope"},"title":"Secret scopes","type":"array"},"secret_data":{"description":"The secret data. Must be Base64-encoded.","format":"byte","type":"string"}},"required":["secret_data"],"type":"object"},"UpdateSecretResponse":{"description":"UpdateSecretResponse is the response of UpdateSecret.","properties":{"secret":{"$ref":"#/components/schemas/Secret"}},"type":"object"},"UpdateTopicConfigurationsResponse":{"properties":{"configurations":{"description":"Topic's complete set of configurations after applying this partial patch.","items":{"$ref":"#/components/schemas/Configuration"},"type":"array"}},"type":"object"},"UpdateUserRequest.User":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"description":"Username.","type":"string"},"password":{"description":"Password.","type":"string"}},"type":"object"},"UpdateUserResponse":{"properties":{"user":{"$ref":"#/components/schemas/UpdateUserResponse.User"}},"type":"object"},"UpdateUserResponse.User":{"description":"Updated user's name and SASL mechanism.","properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"name":{"type":"string"}},"type":"object"},"UpsertConnectorResponse":{"properties":{"connector":{"$ref":"#/components/schemas/ConnectorSpec"}},"type":"object"},"rpc.Status":{"description":"The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"RPC status code, as described [here](https://github.com/googleapis/googleapis/blob/b4c238feaa1097c53798ed77035bbfeb7fc72e96/google/rpc/code.proto#L32).","enum":["OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","UNAUTHENTICATED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS"],"format":"int32","type":"string"},"details":{"items":{"description":"Details of the error.","oneOf":[{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.BadRequest"],"type":"string"}}},{"$ref":"#/components/schemas/BadRequest"}]},{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.ErrorInfo"],"type":"string"}}},{"$ref":"#/components/schemas/ErrorInfo"}]},{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.QuotaFailure"],"type":"string"}}},{"$ref":"#/components/schemas/QuotaFailure"}]},{"allOf":[{"properties":{"@type":{"description":"Fully qualified protobuf type name of the underlying response, prefixed with `type.googleapis.com/`.","enum":["type.googleapis.com/google.rpc.Help"],"type":"string"}}},{"$ref":"#/components/schemas/Help"}]}]},"type":"array"},"message":{"description":"Detailed error message. No compatibility guarantees are given for the text contained in this message.","type":"string"}},"type":"object"}},"securitySchemes":{"auth0":{"description":"RedpandaCloud","flows":{"implicit":{"authorizationUrl":"https://auth.prd.cloud.redpanda.com/oauth/authorize","scopes":{},"x-client-id":"dQjapNIAHhF7EQqQToRla3yEII9sUSap"}},"type":"oauth2"}}},"info":{"title":"Redpanda Cloud Data Plane API","version":"v1alpha2"},"openapi":"3.0.3","paths":{"/v1alpha2/acls":{"delete":{"description":"Delete all ACLs that match the filter criteria. The `filter.` query string parameters find matching ACLs that meet all specified conditions.","operationId":"ACLService_DeleteACLs","parameters":[{"description":"The type of resource (topic, consumer group, etc.) this\nACL targets.","in":"query","name":"filter.resource_type","required":true,"schema":{"enum":["RESOURCE_TYPE_ANY","RESOURCE_TYPE_TOPIC","RESOURCE_TYPE_GROUP","RESOURCE_TYPE_CLUSTER","RESOURCE_TYPE_TRANSACTIONAL_ID","RESOURCE_TYPE_DELEGATION_TOKEN","RESOURCE_TYPE_USER"],"type":"string"}},{"description":"The name of the resource this ACL targets.","in":"query","name":"filter.resource_name","schema":{"type":"string"}},{"description":"The pattern to use for matching the specified resource_name\n(any, exact match, literal, or prefixed).","in":"query","name":"filter.resource_pattern_type","required":true,"schema":{"enum":["RESOURCE_PATTERN_TYPE_ANY","RESOURCE_PATTERN_TYPE_MATCH","RESOURCE_PATTERN_TYPE_LITERAL","RESOURCE_PATTERN_TYPE_PREFIXED"],"type":"string"}},{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","in":"query","name":"filter.principal","schema":{"type":"string"}},{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","in":"query","name":"filter.host","schema":{"type":"string"}},{"description":"The operation that is allowed or denied (e.g. READ).","in":"query","name":"filter.operation","required":true,"schema":{"enum":["OPERATION_ANY","OPERATION_ALL","OPERATION_READ","OPERATION_WRITE","OPERATION_CREATE","OPERATION_DELETE","OPERATION_ALTER","OPERATION_DESCRIBE","OPERATION_CLUSTER_ACTION","OPERATION_DESCRIBE_CONFIGS","OPERATION_ALTER_CONFIGS","OPERATION_IDEMPOTENT_WRITE","OPERATION_CREATE_TOKENS","OPERATION_DESCRIBE_TOKENS"],"type":"string"}},{"description":"Whether the operation should be allowed or denied.","in":"query","name":"filter.permission_type","required":true,"schema":{"enum":["PERMISSION_TYPE_ANY","PERMISSION_TYPE_DENY","PERMISSION_TYPE_ALLOW"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteACLsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete ACLs","tags":["Redpanda ACLs (v1alpha2)"]},"get":{"description":"List all ACLs. The `filter.` query string parameters find matching ACLs that meet all specified conditions.","operationId":"ACLService_ListACLs","parameters":[{"description":"The type of resource (topic, consumer group, etc.) this\nACL targets.","in":"query","name":"filter.resource_type","schema":{"enum":["RESOURCE_TYPE_ANY","RESOURCE_TYPE_TOPIC","RESOURCE_TYPE_GROUP","RESOURCE_TYPE_CLUSTER","RESOURCE_TYPE_TRANSACTIONAL_ID","RESOURCE_TYPE_DELEGATION_TOKEN","RESOURCE_TYPE_USER"],"type":"string"}},{"description":"The name of the resource this ACL targets.","in":"query","name":"filter.resource_name","schema":{"type":"string"}},{"description":"The pattern to use for matching the specified resource_name\n(any, exact match, literal, or prefixed).","in":"query","name":"filter.resource_pattern_type","schema":{"enum":["RESOURCE_PATTERN_TYPE_ANY","RESOURCE_PATTERN_TYPE_MATCH","RESOURCE_PATTERN_TYPE_LITERAL","RESOURCE_PATTERN_TYPE_PREFIXED"],"type":"string"}},{"description":"The user for whom this ACL applies. With the Kafka simple\nauthorizer, you must include the prefix \"User:\" with the user name.","in":"query","name":"filter.principal","schema":{"type":"string"}},{"description":"The host address to use for this ACL. To allow a principal\naccess from multiple hosts, you must create an ACL for each host.","in":"query","name":"filter.host","schema":{"type":"string"}},{"description":"The operation that is allowed or denied (e.g. READ).","in":"query","name":"filter.operation","schema":{"enum":["OPERATION_ANY","OPERATION_ALL","OPERATION_READ","OPERATION_WRITE","OPERATION_CREATE","OPERATION_DELETE","OPERATION_ALTER","OPERATION_DESCRIBE","OPERATION_CLUSTER_ACTION","OPERATION_DESCRIBE_CONFIGS","OPERATION_ALTER_CONFIGS","OPERATION_IDEMPOTENT_WRITE","OPERATION_CREATE_TOKENS","OPERATION_DESCRIBE_TOKENS"],"type":"string"}},{"description":"Whether the operation should be allowed or denied.","in":"query","name":"filter.permission_type","schema":{"enum":["PERMISSION_TYPE_ANY","PERMISSION_TYPE_DENY","PERMISSION_TYPE_ALLOW"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListACLsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List ACLs","tags":["Redpanda ACLs (v1alpha2)"]},"post":{"description":"Create a new ACL.","operationId":"ACLService_CreateACL","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateACLRequest"}}},"required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateACLResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create ACL","tags":["Redpanda ACLs (v1alpha2)"]}},"/v1alpha2/cloud-storage/mount-tasks":{"get":{"description":"This operation retrieves the status of a task responsible for mounting or unmounting topics. It provides details on the task’s type (mount or unmount), its current state, and the topics involved.","operationId":"CloudStorageService_ListMountTasks","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMountTasksResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Retrieve the mount task status","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/mount-tasks/{id}":{"delete":{"description":"Delete a mount or unmount by ID.","operationId":"CloudStorageService_DeleteMountTask","parameters":[{"description":"Unique identifier of the mount or unmount task to delete.","in":"path","name":"id","required":true,"schema":{"format":"int32","type":"integer"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteMountTaskResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete a mount or unmount","tags":["Cloud Storage (v1alpha2)"]},"get":{"description":"Retrieves the status of a mount or unmount by ID. The response provides details on the operation type (mount or unmount), its current state, and the topics involved. Use the ID returned when you start the mount or unmount, or use the ListMountTasks endpoint to retrieve a list of IDs.","operationId":"CloudStorageService_GetMountTask","parameters":[{"description":"Unique identifier of the mount or unmount task to retrieve.","in":"path","name":"id","required":true,"schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMountTaskResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get the status of a mount or unmount by ID","tags":["Cloud Storage (v1alpha2)"]},"post":{"description":"This operation allows performing an action on an ongoing mount task.","operationId":"CloudStorageService_UpdateMountTask","parameters":[{"description":"ID is the unique identifier of the mount or unmount to update.","in":"path","name":"id","required":true,"schema":{"format":"int32","type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMountTaskBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMountTaskResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update a mount or unmount","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/topics/mount":{"post":{"description":"Attach mountable topics from object storage to a cluster, making them available for consumption and production again. Mounting a topic reloads its data and state to the local brokers, allowing active use of the topic.","operationId":"CloudStorageService_MountTopics","requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TopicMount"},"required":["topics"],"type":"array"}}},"required":true,"x-originalParamName":"topics"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MountTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Mount topics from object storage","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/topics/mountable":{"get":{"description":"Retrieve all topics that are currently unmounted and available to be mounted to the cluster. These topics reside in object storage and can be mounted for consumption or production within the cluster.","operationId":"CloudStorageService_ListMountableTopics","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMountableTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List mountable topics","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/cloud-storage/topics/unmount":{"post":{"description":"Unmount topics to object storage, freeing up all local cluster resources. Once you unmount a topic, it can no longer be consumed or produced to. It detaches from the active cluster while its data remains safely stored in the external object storage.","operationId":"CloudStorageService_UnmountTopics","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"string"},"required":["topics"],"type":"array"}}},"description":"List of topics to unmount.","required":true,"x-originalParamName":"topics"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnmountTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Unmount topics to object storage","tags":["Cloud Storage (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters":{"get":{"description":"List connect clusters available for being consumed by the console's kafka-connect service.","operationId":"KafkaConnectService_ListConnectClusters","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectClustersResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List connect clusters","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}":{"get":{"description":"Get information about an available Kafka Connect cluster.","operationId":"KafkaConnectService_GetConnectCluster","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectCluster"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Connect cluster not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connect cluster","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors":{"get":{"description":"List connectors managed by the Kafka Connect service.","operationId":"KafkaConnectService_ListConnectors","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Value of the next_page_token field returned by the previous response. If not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectorsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List connectors","tags":["Kafka Connect (v1alpha2)"]},"post":{"description":"Create a connector with the specified configuration.","operationId":"KafkaConnectService_CreateConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"required":true,"x-originalParamName":"connector"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}":{"delete":{"description":"Delete a connector. This operation force stops all tasks and also deletes the connector configuration.","operationId":"KafkaConnectService_DeleteConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete connector","tags":["Kafka Connect (v1alpha2)"]},"get":{"description":"Get information about a connector in a specific cluster.","operationId":"KafkaConnectService_GetConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/config":{"get":{"description":"Get the configuration for the connector.","operationId":"KafkaConnectService_GetConnectorConfig","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connector configuration","tags":["Kafka Connect (v1alpha2)"]},"put":{"description":"Update the configuration for an existing connector with the specified name, or create a new connector using the given configuration. Returns information about the connector after the change has been made.","operationId":"KafkaConnectService_UpsertConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector. If a connector with this name does not already exist, a new connector is created.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"required":["config"],"type":"object"}}},"description":"Connector configuration property.","required":true,"x-originalParamName":"config"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"Updated"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorSpec"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Upsert connector configuration","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/pause":{"put":{"description":"Pause the connector and its tasks, which stops messages from processing until the connector is resumed. This call is asynchronous and may take some time to process.","operationId":"KafkaConnectService_PauseConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{}}},"description":"Pause request accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Pause connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/restart":{"post":{"description":"Triggers a connector restart. You must specify whether or not tasks are also restarted, and whether only failed connectors are restarted.","operationId":"KafkaConnectService_RestartConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Options"}}},"required":true,"x-originalParamName":"options"},"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Restart connector request success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Restart connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/resume":{"put":{"description":"Resume a paused connector and its tasks, and resumes message processing. This call is asynchronous and may take some time to process. If the connector was not paused, this operation does not do anything.","operationId":"KafkaConnectService_ResumeConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{}}},"description":"Resume request accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Resume connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/status":{"get":{"description":"Gets the current status of the connector, including the state for each of its tasks, error information, etc.","operationId":"KafkaConnectService_GetConnectorStatus","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorStatus"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get connector status","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/stop":{"put":{"description":"Stops a connector, but does not delete it. All tasks for the connector are shut down completely. This call is asynchronous and may take some time to process.","operationId":"KafkaConnectService_StopConnector","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{}}},"description":"Request accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stop connector","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/topics":{"get":{"description":"Returns a list of connector topic names. If the connector is inactive, this call returns an empty list.","operationId":"KafkaConnectService_ListConnectorTopics","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectorTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List connector topics","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/connectors/{name}/topics/reset":{"put":{"description":"Resets the set of topic names that the connector is using.","operationId":"KafkaConnectService_ResetConnectorTopics","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Name of connector using the topics to be reset.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Reset connector topics","tags":["Kafka Connect (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/secrets":{"get":{"description":"List Kafka Connect cluster secrets. Optional: filter based on secret name and labels.","operationId":"SecretService_ListConnectSecrets","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"Substring match on secret name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.labels[string][string]","schema":{"type":"string"}},{"description":"Secret scopes to search for","in":"query","name":"filter.scopes","schema":{"items":{"enum":["SCOPE_REDPANDA_CONNECT"],"type":"string"},"type":"array"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSecretsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Connect Cluster Secrets","tags":["Secrets (v1alpha2)"]},"post":{"description":"Create a Kafka Connect cluster secret.","operationId":"SecretService_CreateConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConnectSecretBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"Secret created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Connect Cluster Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/kafka-connect/clusters/{cluster_name}/secrets/{id}":{"delete":{"description":"Delete a Kafka Connect cluster secret.","operationId":"SecretService_DeleteConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"ID of the secret to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Secret deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Connect Cluster Secret","tags":["Secrets (v1alpha2)"]},"get":{"description":"Get a specific Kafka Connect cluster secret.","operationId":"SecretService_GetConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"The ID of the secret to retrieve.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Connect Cluster Secret","tags":["Secrets (v1alpha2)"]},"put":{"description":"Update a Kafka Connect cluster secret.","operationId":"SecretService_UpdateConnectSecret","parameters":[{"description":"Unique name of target connect cluster. For Redpanda Cloud, use `redpanda`.","in":"path","name":"cluster_name","required":true,"schema":{"type":"string"}},{"description":"ID of the secret to update.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectSecretBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update Connect Cluster Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/redpanda-connect/config-schema":{"get":{"description":"The configuration schema includes available [components and processors](https://docs.redpanda.com/redpanda-cloud/develop/connect/components/about) in this Redpanda Connect instance.","operationId":"PipelineService_GetPipelineServiceConfigSchema","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPipelineServiceConfigSchemaResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Retrieve the schema for Redpanda Connect pipeline configurations.","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines":{"get":{"description":"List Redpanda Connect pipelines. Optional: filter based on pipeline name.","operationId":"PipelineService_ListPipelines","parameters":[{"description":"Substring match on pipeline name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPipelinesResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Redpanda Connect pipelines","tags":["Redpanda Connect Pipeline (v1alpha2)"]},"post":{"description":"Create a new Redpanda Connect pipeline.","operationId":"PipelineService_CreatePipeline","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineCreate"}}},"required":true,"x-originalParamName":"pipeline"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines-by-secrets":{"get":{"description":"Get Redpanda Connect pipelines by secrets.","operationId":"PipelineService_GetPipelinesBySecrets","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPipelinesBySecretsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Redpanda Connect pipelines by secrets","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines-for-secret":{"get":{"description":"Get Redpanda Connect pipelines for a given secret.","operationId":"PipelineService_GetPipelinesForSecret","parameters":[{"description":"Secret ID.","in":"query","name":"secret_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPipelinesForSecretResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Redpanda Connect pipelines for secret","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines/{id}":{"delete":{"description":"Delete a Redpanda Connect pipeline.","operationId":"PipelineService_DeletePipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]},"get":{"description":"Get a specific Redpanda Connect pipeline.","operationId":"PipelineService_GetPipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]},"put":{"description":"Update the [configuration](https://docs.redpanda.com/redpanda-cloud/develop/connect/configuration/about) of a Redpanda Connect pipeline.","operationId":"PipelineService_UpdatePipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineUpdate"}}},"required":true,"x-originalParamName":"pipeline"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines/{id}/start":{"put":{"description":"Start a stopped Redpanda Connect pipeline.","operationId":"PipelineService_StartPipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"Started"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Start a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/redpanda-connect/pipelines/{id}/stop":{"put":{"description":"Stop a running Redpanda Connect pipeline.","operationId":"PipelineService_StopPipeline","parameters":[{"description":"Pipeline ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}},"description":"Stopped"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stops a Redpanda Connect pipeline","tags":["Redpanda Connect Pipeline (v1alpha2)"]}},"/v1alpha2/secret-scopes":{"get":{"description":"List supported secret scopes.","operationId":"SecretService_ListSecretScopes","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSecretScopesResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Secret Scopes","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/secrets":{"get":{"description":"List secrets. Optional: filter based on secret name and labels.","operationId":"SecretService_ListSecrets","parameters":[{"description":"Substring match on secret name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.labels[string]","schema":{"type":"string"}},{"description":"Secret scopes to search for","in":"query","name":"filter.scopes","schema":{"items":{"enum":["SCOPE_REDPANDA_CONNECT"],"type":"string"},"type":"array"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSecretsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Secrets","tags":["Secrets (v1alpha2)"]},"post":{"description":"Create a secret.","operationId":"SecretService_CreateSecret","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecretRequest"}}},"description":"CreateSecretRequest is the request of CreateSecret.","required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"Secret created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/secrets/{id}":{"delete":{"description":"Delete a secret.","operationId":"SecretService_DeleteSecret","parameters":[{"description":"The id of the secret to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Secret deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Secret","tags":["Secrets (v1alpha2)"]},"get":{"description":"Get a secret.","operationId":"SecretService_GetSecret","parameters":[{"description":"The id of the secret to retrieve.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Secret","tags":["Secrets (v1alpha2)"]},"put":{"description":"Update a secret.","operationId":"SecretService_UpdateSecret","parameters":[{"description":"Secret identifier.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSecretBody"}}},"required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update Secret","tags":["Secrets (v1alpha2)"]}},"/v1alpha2/topics":{"get":{"description":"List topics, with partition count and replication factor. Optional: filter based on topic name.","operationId":"TopicService_ListTopics","parameters":[{"description":"Substring match on topic name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response. If not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTopicsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Topics","tags":["Topics (v1alpha2)"]},"post":{"description":"Create a [topic](https://docs.redpanda.com/current/deploy/deployment-option/cloud/create-topic/).","operationId":"TopicService_CreateTopic","parameters":[{"description":"If true, makes this request a dry run; everything is validated but\nno topics are actually created.","in":"query","name":"validate_only","schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicRequest.Topic"}}},"description":"The topic to create.","required":true,"x-originalParamName":"topic"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicResponse"}}},"description":"Topic created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create Topic","tags":["Topics (v1alpha2)"]}},"/v1alpha2/topics/{name}":{"delete":{"description":"Delete the Kafka topic with the requested name.","operationId":"TopicService_DeleteTopic","parameters":[{"description":"Topic name.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Topic deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Requested topic does not exist"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Topic","tags":["Topics (v1alpha2)"]}},"/v1alpha2/topics/{topic_name}/configurations":{"get":{"description":"Get key-value configs for a topic.","operationId":"TopicService_GetTopicConfigurations","parameters":[{"description":"Topic name","in":"path","name":"topic_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTopicConfigurationsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Topic Configurations","tags":["Topics (v1alpha2)"]},"patch":{"description":"Update a subset of the topic configurations.","operationId":"TopicService_UpdateTopicConfigurations","parameters":[{"description":"Topic name","in":"path","name":"topic_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UpdateConfiguration"},"type":"array"}}},"required":true,"x-originalParamName":"configurations"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTopicConfigurationsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update Topic Configuration","tags":["Topics (v1alpha2)"]},"put":{"description":"Update the entire set of key-value configurations for a topic. Config entries that are not provided in the request are removed and will fall back to their default values.","operationId":"TopicService_SetTopicConfigurations","parameters":[{"description":"Name of topic.","in":"path","name":"topic_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SetConfiguration"},"type":"array"}}},"required":true,"x-originalParamName":"configurations"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetTopicConfigurationsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Set Topic Configurations","tags":["Topics (v1alpha2)"]}},"/v1alpha2/transforms":{"get":{"description":"Retrieve a list of Wasm transforms. Optional: filter based on transform name.","operationId":"TransformService_ListTransforms","parameters":[{"description":"Substring match on transform name. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"next_page_token":"","transforms":[{"environment_variables":[],"input_topic_name":"topic1","name":"transform1","output_topic_names":["output-topic11","output-topic12"],"statuses":[{"broker_id":1,"lag":1,"partition_id":1,"status":"PARTITION_STATUS_RUNNING"}]},{"environment_variables":[],"input_topic_name":"topic2","name":"transform2","output_topic_names":["output-topic21","output-topic22"],"statuses":[{"broker_id":2,"lag":2,"partition_id":2,"status":"PARTITION_STATUS_RUNNING"}]}]},"schema":{"$ref":"#/components/schemas/ListTransformsResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Transforms","tags":["WASM Transforms (v1alpha2)"]},"put":{"description":"Initiate deployment of a new Wasm transform. This endpoint uses multipart/form-data encoding. Following deployment, a brief period is required before the Wasm transform becomes operational. Monitor the partition statuses to check whether the transform is active. This usually takes around 3s, but no longer than 10s.","operationId":"TransformService_DeployTransform","requestBody":{"content":{"multipart/form-data":{"schema":{"example":"{\"name\":\"redact-orders\", \"input_topic_name\":\"orders\", \"output_topic_names\":[\"orders-redacted\"], \"environment_variables\":[{\"key\":\"LOGGER_LEVEL\", \"value\":\"DEBUG\"}]}","properties":{"metadata":{"$ref":"#/components/schemas/DeployTransformRequest"},"wasm_binary":{"description":"Binary file containing the compiled WASM transform. The maximum size for this file is 10MiB.","format":"binary","type":"string"}},"type":"object"}}},"description":"Transform metadata as well as the WASM binary","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransformMetadata"}}},"description":"Created"}},"summary":"Deploy Transform","tags":["WASM Transforms (v1alpha2)"]}},"/v1alpha2/transforms/{name}":{"delete":{"description":"Delete a Wasm transform with the requested name.","operationId":"TransformService_DeleteTransform","parameters":[{"description":"Name of transform.","example":{"name":"transform1"},"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"example":{},"schema":{}}},"description":"Transform deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete Transform","tags":["WASM Transforms (v1alpha2)"]},"get":{"description":"Get a specific Wasm transform.","operationId":"TransformService_GetTransform","parameters":[{"description":"Name of transform.","example":{"name":"transform1"},"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"transform":{"environment_variables":[],"input_topic_name":"topic1","name":"transform1","output_topic_names":["output-topic1","output-topic2"],"statuses":[{"broker_id":1,"lag":1,"partition_id":1,"status":"PARTITION_STATUS_RUNNING"}]}},"schema":{"$ref":"#/components/schemas/GetTransformResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Transform","tags":["WASM Transforms (v1alpha2)"]}},"/v1alpha2/users":{"get":{"description":"List users. Optional: filter based on username.","operationId":"UserService_ListUsers","parameters":[{"description":"Username.","in":"query","name":"filter.name","schema":{"type":"string"}},{"description":"Substring match on username. Case-sensitive.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"next_page_token":"","users":[{"name":"payment-service"},{"name":"jane"}]},"schema":{"$ref":"#/components/schemas/ListUsersResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Users","tags":["Redpanda Users (v1alpha2)"]},"post":{"description":"Create a new user.","operationId":"UserService_CreateUser","requestBody":{"content":{"application/json":{"example":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","name":"payment-service","password":"secure-password"},"schema":{"$ref":"#/components/schemas/CreateUserRequest.User"}}},"required":true,"x-originalParamName":"user"},"responses":{"201":{"content":{"application/json":{"example":{"user":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","name":"payment-service"}},"schema":{"$ref":"#/components/schemas/CreateUserRequest.User"}}},"description":"User created"},"400":{"content":{"application/json":{"example":{"code":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","domain":"redpanda.com/dataplane","metadata":{},"reason":"REASON_INVALID_INPUT"},{"@type":"type.googleapis.com/google.rpc.BadRequest","field_violations":[{"description":"value length must be at least 3 characters","field":"user.password","localized_message":null,"reason":""},{"description":"value is required","field":"user.mechanism","localized_message":null,"reason":""}]}],"message":"provided parameters are invalid"},"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Bad request. Check API documentation and update request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create User","tags":["Redpanda Users (v1alpha2)"]}},"/v1alpha2/users/{name}":{"delete":{"description":"Delete the specified user","operationId":"UserService_DeleteUser","parameters":[{"description":"Username","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"example":{},"schema":{}}},"description":"User deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"404":{"content":{"application/json":{"example":{"code":"NOT_FOUND","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","domain":"redpanda.com/dataplane","metadata":{},"reason":"REASON_RESOURCE_NOT_FOUND"}],"message":"user not found"},"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete User","tags":["Redpanda Users (v1alpha2)"]}},"/v1alpha2/users/{user.name}":{"put":{"description":"Update a user's credentials.","operationId":"UserService_UpdateUser","parameters":[{"description":"Username.","in":"path","name":"user.name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"user":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","password":"new-password"}},"schema":{"properties":{"mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"password":{"description":"Password.","type":"string"}},"type":"object"}}},"required":true,"x-originalParamName":"user"},"responses":{"200":{"content":{"application/json":{"example":{"user":{"mechanism":"SASL_MECHANISM_SCRAM_SHA_256","name":"payment-service"}},"schema":{"$ref":"#/components/schemas/UpdateUserResponse.User"}}},"description":"OK"},"400":{"content":{"application/json":{"example":{"code":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","domain":"redpanda.com/dataplane","metadata":{},"reason":"REASON_INVALID_INPUT"},{"@type":"type.googleapis.com/google.rpc.BadRequest","field_violations":[{"description":"value length must be at least 3 characters","field":"user.password","localized_message":null,"reason":""},{"description":"value is required","field":"user.mechanism","localized_message":null,"reason":""}]}],"message":"provided parameters are invalid"},"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Bad request. Check API documentation and update request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Unauthenticated."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Internal Server Error. Reach out to support."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update User","tags":["Redpanda Users (v1alpha2)"]}}},"security":[{"auth0":[]}],"servers":[{"description":"Data Plane API","url":"{dataplane_api_url}","variables":{"dataplane_api_url":{"default":"https://{dataplane_api_url}","description":"Find the Data Plane API base URL of a cluster by calling the Get Cluster endpoint of the Control Plane API. The dataplane_api.url field is returned in the response body.\u003cbr\u003e\u003cbr\u003e\n\t\t\t\t\tExample (Dedicated): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.fmc.prd.cloud.redpanda.com\"\u003cbr\u003e\n\t\t\t\t\tExample (BYOC): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.byoc.prd.cloud.redpanda.com\""}}}],"tags":[{"description":"Manage Redpanda access control lists (ACLs). See [Redpanda Cloud Authorization](https://docs.redpanda.com/redpanda-cloud/security/authorization/cloud-authorization/) for more information.","name":"Redpanda ACLs (v1alpha2)"},{"description":"Manage Redpanda topics stored in object storage. See: [Mountable Topics](https://docs.redpanda.com/redpanda-cloud/manage/mountable-topics/)","name":"Cloud Storage (v1alpha2)"},{"description":"Manage Wasm transforms in Redpanda.","name":"WASM Transforms (v1alpha2)"},{"description":"Manage [connectors](https://docs.redpanda.com/redpanda-cloud/develop/managed-connectors/) and interact with the Kafka Connect API.","name":"Kafka Connect (v1alpha2)"},{"description":"Create and manage [Redpanda Connect](https://docs.redpanda.com/redpanda-cloud/develop/connect/about) pipelines and their configurations.","name":"Redpanda Connect Pipeline (v1alpha2)"},{"description":"Manage [secrets](https://docs.redpanda.com/redpanda-cloud/security/secrets) for Redpanda Cloud.","name":"Secrets (v1alpha2)"},{"description":"Manage Redpanda topics.","name":"Topics (v1alpha2)"},{"description":"Manage Redpanda users. To manage access, see the Data Plane [ACL endpoints](https://docs.redpanda.com/api/cloud-dataplane-api/#get-/v1alpha2/acls).","name":"Redpanda Users (v1alpha2)"}]} \ No newline at end of file diff --git a/proto/gen/openapi/openapi.v1alpha2.yaml b/proto/gen/openapi/openapi.v1alpha2.yaml index 89bdd1aa11..b7564813a3 100644 --- a/proto/gen/openapi/openapi.v1alpha2.yaml +++ b/proto/gen/openapi/openapi.v1alpha2.yaml @@ -4375,7 +4375,7 @@ paths: content: multipart/form-data: schema: - example: '{"name":"redact-orders","input_topic_name":"orders","output_topic_names":["orders-redacted"],"environment_variables":[{"key":"LOGGER_LEVEL","value":"DEBUG"}]}' + example: '{"name":"redact-orders", "input_topic_name":"orders", "output_topic_names":["orders-redacted"], "environment_variables":[{"key":"LOGGER_LEVEL", "value":"DEBUG"}]}' properties: metadata: $ref: '#/components/schemas/DeployTransformRequest' diff --git a/proto/gen/openapi/openapi.v1alpha3.json b/proto/gen/openapi/openapi.v1alpha3.json index bf0d52c804..564c9393aa 100644 --- a/proto/gen/openapi/openapi.v1alpha3.json +++ b/proto/gen/openapi/openapi.v1alpha3.json @@ -1 +1 @@ -{"components":{"schemas":{"AIAgent":{"description":"Defines the AI Agent resource.","properties":{"agent_card":{"$ref":"#/components/schemas/AgentCard"},"description":{"description":"Optional AI agent description.","type":"string"},"display_name":{"description":"User-friendly AI agent name.","type":"string"},"gateway":{"$ref":"#/components/schemas/GatewayConfig"},"id":{"description":"AI Agent ID.","readOnly":true,"type":"string"},"max_iterations":{"format":"int32","type":"integer"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this AI agent can use.","type":"object"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/AIAgent.Provider"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/AIAgent.ServiceAccount"},"state":{"$ref":"#/components/schemas/AIAgent.State"},"subagents":{"additionalProperties":{"$ref":"#/components/schemas/Subagent"},"description":"Map of subagents for delegating specialized tasks.\nKey is the subagent name (used for routing/invocation).","type":"object"},"system_prompt":{"description":"System instructions that define how the AI agent should behave and respond.","type":"string"},"tags":{"additionalProperties":{"type":"string"},"description":"Tags are key-value pairs that can be assigned to an AI agent resource.\nThey help organize AI agents and enable filtering when listing them.","type":"object"},"teams_bridge":{"$ref":"#/components/schemas/AIAgentTeamsBridge"},"teams_bridge_endpoint":{"description":"Messaging endpoint URL for the Teams bridge, populated by the bridge controller.","nullable":true,"readOnly":true,"type":"string"},"url":{"description":"URL to connect to the AI agent endpoint.","readOnly":true,"type":"string"}},"required":["display_name","system_prompt","provider","model","service_account"],"type":"object"},"AIAgent.MCPServer":{"description":"MCP server configuration.","properties":{"id":{"description":"ID of the Redpanda MCP server.","type":"string"},"tool_filter_regex":{"description":"Optional regex pattern to filter which tools from the MCP server should be available.\nIf not specified, all tools from the MCP server are available.\nThe pattern is matched against tool names.","type":"string"}},"type":"object"},"AIAgent.Provider":{"properties":{"anthropic":{"$ref":"#/components/schemas/Anthropic"},"bedrock":{"$ref":"#/components/schemas/Bedrock"},"google":{"$ref":"#/components/schemas/Google"},"openai":{"$ref":"#/components/schemas/AIAgent.Provider.OpenAI"},"openai_compatible":{"$ref":"#/components/schemas/OpenAICompatible"}},"type":"object"},"AIAgent.Provider.OpenAI":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"AIAgent.ServiceAccount":{"properties":{"client_id":{"type":"string"},"client_secret":{"type":"string"}},"required":["client_id","client_secret"],"type":"object"},"AIAgent.State":{"description":"State of the AI agent.\n\n - STATE_STARTING: The AI agent is starting.\n - STATE_RUNNING: The AI agent is running and ready to handle requests.\n - STATE_STOPPING: The AI agent is in the process of stopping.\n - STATE_STOPPED: The AI agent is stopped and in paused state.\n - STATE_ERROR: The AI agent encountered an error.","enum":["STATE_STARTING","STATE_RUNNING","STATE_STOPPING","STATE_STOPPED","STATE_ERROR"],"type":"string"},"AIAgentCreate":{"description":"AIAgentCreate contains the details for the AI agent creation request.","properties":{"agent_card":{"$ref":"#/components/schemas/AgentCard"},"description":{"description":"AI agent description.","type":"string"},"display_name":{"description":"User-friendly AI agent name.","type":"string"},"gateway":{"$ref":"#/components/schemas/GatewayConfig"},"max_iterations":{"format":"int32","type":"integer"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this AI agent can use.","type":"object"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/AIAgent.Provider"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/AIAgent.ServiceAccount"},"subagents":{"additionalProperties":{"$ref":"#/components/schemas/Subagent"},"description":"Map of subagents for delegating specialized tasks.","type":"object"},"system_prompt":{"description":"System instructions that define how the AI agent should behave and respond.","type":"string"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to an AI agent.","type":"object"},"teams_bridge":{"$ref":"#/components/schemas/AIAgentTeamsBridge"}},"required":["display_name","system_prompt","provider","model","service_account"],"type":"object"},"AIAgentTeamsBridge":{"description":"Microsoft Teams bridge configuration for connecting an AI agent to Teams.\nEach agent gets its own Azure Bot registration; the bridge validates\ninbound Bot Framework JWTs against the per-agent bot_app_id as audience.","properties":{"bot_app_id":{"description":"Azure Bot registration Application (client) ID.","type":"string"},"bot_app_secret_ref":{"description":"Bare secret key in the Redpanda secret store (e.g. \"TEAMS_BOT_SECRET\").\nUnlike provider api_key fields which use ${secrets.NAME} template syntax,\nthis is a plain identifier — the bridge resolves it directly via the\ntenant-scoped secret store prefix.","type":"string"},"bot_tenant_id":{"description":"AAD tenant ID the bot registration lives in.","type":"string"},"enabled":{"description":"Whether the Teams bridge is active for this agent.","type":"boolean"}},"type":"object"},"AIAgentUpdate":{"properties":{"agent_card":{"$ref":"#/components/schemas/AgentCard"},"description":{"description":"AI agent description.","type":"string"},"display_name":{"description":"User-friendly AI agent name.","type":"string"},"gateway":{"$ref":"#/components/schemas/GatewayConfig"},"max_iterations":{"format":"int32","type":"integer"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this AI agent can use.","type":"object"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/AIAgent.Provider"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/AIAgent.ServiceAccount"},"subagents":{"additionalProperties":{"$ref":"#/components/schemas/Subagent"},"description":"Map of subagents to add, update, or delete.\nIf a subagent's value is empty/null, the server interprets that as deletion.","type":"object"},"system_prompt":{"description":"System instructions that define how the AI agent should behave and respond.","type":"string"},"tags":{"additionalProperties":{"type":"string"},"description":"A map of tags to add, update or delete.\nIf a tag's value is empty, the server interprets that as a deletion.","type":"object"},"teams_bridge":{"$ref":"#/components/schemas/AIAgentTeamsBridge"}},"type":"object"},"AgentCard":{"description":"A2A agent card configuration for customizing agent discovery metadata.","properties":{"documentation_url":{"description":"URL to documentation for the agent.","type":"string"},"icon_url":{"description":"URL to an icon image for the agent.","type":"string"},"provider":{"$ref":"#/components/schemas/AgentCard.Provider"},"skills":{"description":"Skills that this agent can perform.","items":{"$ref":"#/components/schemas/Skill"},"type":"array"}},"type":"object"},"AgentCard.Provider":{"description":"Agent provider metadata.","properties":{"organization":{"description":"Organization name (default: \"Redpanda\").","type":"string"},"url":{"description":"Organization URL (default: \"https://redpanda.com\").","type":"string"}},"type":"object"},"Anthropic":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"Any":{"additionalProperties":{},"properties":{"@type":{"type":"string"}},"type":"object"},"AnyValue":{"description":"Represents any type of attribute value. AnyValue may contain a\nprimitive value such as a string or integer or it may contain an arbitrary\nnested object containing arrays, key-value lists and primitives.","properties":{"array_value":{"$ref":"#/components/schemas/ArrayValue"},"bool_value":{"type":"boolean"},"bytes_value":{"format":"byte","type":"string"},"double_value":{"format":"double","type":"number"},"int_value":{"format":"int64","type":"string"},"kvlist_value":{"$ref":"#/components/schemas/KeyValueList"},"string_value":{"type":"string"}},"type":"object"},"ArrayValue":{"description":"ArrayValue is a list of AnyValue messages. We need ArrayValue as a message\nsince oneof in AnyValue does not allow repeated fields.","properties":{"values":{"description":"Array of values. The array may be empty (contain 0 elements).","items":{"$ref":"#/components/schemas/AnyValue"},"type":"array"}},"type":"object"},"AttributeFilter":{"description":"AttributeFilter defines a filter condition for span attributes.","properties":{"key":{"description":"Span attribute key without prefix. Backend adds 'span_attributes.' prefix.","title":"Span attribute key (without \"span_attributes.\" prefix).\nBackend auto-prefixes with \"span_attributes.\" when querying.\nExample: \"gen_ai.operation.name\" queries span_attributes.gen_ai.operation.name","type":"string"},"operator":{"$ref":"#/components/schemas/AttributeOperator"},"value":{"description":"Value for EQUALS or NOT_EQUALS comparison.","type":"string"},"values":{"description":"Values for IN comparison (key matches any of these values).","items":{"type":"string"},"type":"array"}},"type":"object"},"AttributeOperator":{"description":"AttributeOperator defines comparison operators for attribute filters.\n\n - ATTRIBUTE_OPERATOR_EQUALS: Exact match: key = value.\n - ATTRIBUTE_OPERATOR_NOT_EQUALS: Negation: key != value.\n - ATTRIBUTE_OPERATOR_IN: Set membership: key IN [value1, value2, ...].","enum":["ATTRIBUTE_OPERATOR_EQUALS","ATTRIBUTE_OPERATOR_NOT_EQUALS","ATTRIBUTE_OPERATOR_IN"],"type":"string"},"Bedrock":{"properties":{"access_key_id_secret_ref":{"description":"Optional secret reference for the AWS access key ID.\nWhen omitted, uses the AWS default credential chain (IRSA, env vars, instance profile).","type":"string"},"region":{"description":"AWS region for Bedrock inference (e.g., \"us-east-1\").","type":"string"},"secret_access_key_secret_ref":{"description":"Optional secret reference for the AWS secret access key.","type":"string"}},"required":["region"],"type":"object"},"ComponentType":{"description":"Component type for this tool.","enum":["COMPONENT_TYPE_PROCESSOR","COMPONENT_TYPE_CACHE","COMPONENT_TYPE_INPUT","COMPONENT_TYPE_OUTPUT"],"type":"string"},"ConfigurationYAMLSchema":{"properties":{"component_type":{"$ref":"#/components/schemas/ComponentType"},"config_schema":{"description":"JSON schema of the configuration components that are allowed for MCP servers.","type":"string"}},"type":"object"},"CreateAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"CreateKnowledgeBaseResponse":{"properties":{"knowledge_base":{"$ref":"#/components/schemas/KnowledgeBase"}},"type":"object"},"CreateMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"DataPoint":{"description":"A single data point made of value and date when it's been measured.","properties":{"timestamp":{"format":"date-time","title":"The timestamp when this datapoint was recorded","type":"string"},"value":{"format":"double","nullable":true,"title":"The value recorded for the given timestamp. The value may be absent when not available in the\nmetrics system or when it is NaN","type":"number"}},"type":"object"},"DeleteAIAgentResponse":{"type":"object"},"DeleteKnowledgeBaseResponse":{"type":"object"},"DeleteMCPServerResponse":{"type":"object"},"Event":{"description":"Event is a time-stamped annotation of the span, consisting of user-supplied\ntext description and key-value pairs.","properties":{"attributes":{"description":"A collection of attribute key/value pairs on the event.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of dropped attributes. If the value is 0,\nthen no attributes were dropped.","format":"int64","type":"integer"},"name":{"description":"The name of the event.\nThis field is semantically required to be set to non-empty string.","type":"string"},"time_unix_nano":{"description":"The time the event occurred.","format":"uint64","type":"string"}},"type":"object"},"ExecuteInstantQueryParams":{"description":"Parameters for executing an instant query.","properties":{"filters":{"additionalProperties":{"type":"string"},"title":"Optional filter values to apply to the query, if the query supports them","type":"object"},"time":{"format":"date-time","nullable":true,"title":"Time at which to evaluate the query (defaults to current time if not provided)","type":"string"}},"type":"object"},"ExecuteInstantQueryResponse":{"description":"Response of an ExecuteInstantQuery operation.","properties":{"metadata":{"$ref":"#/components/schemas/QueryMetadata"},"results":{"items":{"$ref":"#/components/schemas/InstantResult"},"title":"Instant query results, each with a single data point at the requested time","type":"array"}},"type":"object"},"ExecuteRangeQueryParams":{"description":"Parameters for executing a range query.","properties":{"end":{"format":"date-time","nullable":true,"title":"End time for the range query (defaults to current time if not provided)","type":"string"},"filters":{"additionalProperties":{"type":"string"},"title":"Optional filter values to apply to the query, if the query supports them","type":"object"},"start":{"format":"date-time","title":"Start time for the range query","type":"string"}},"type":"object"},"ExecuteRangeQueryResponse":{"description":"Response of an ExecuteRangeQuery operation.","properties":{"metadata":{"$ref":"#/components/schemas/QueryMetadata"},"results":{"items":{"$ref":"#/components/schemas/TimeSeries"},"title":"Time series data with multiple data points over the time range","type":"array"}},"type":"object"},"FilterMetadata":{"description":"Description of a filter that may be available in a query.","properties":{"description":{"title":"A description of the filter","type":"string"},"key":{"title":"What key to use to provide a value for this filter when executing","type":"string"}},"type":"object"},"GatewayConfig":{"description":"Optional gateway configuration for routing requests through an AI Gateway.","properties":{"llm_provider":{"title":"Name of the configured LLMProvider in the AI Gateway (aigw).\nUsed to determine which provider to route requests through.\nExample: \"my-openai-provider\"","type":"string"},"virtual_gateway_id":{"description":"Deprecated: No longer needed — there is always one gateway per cluster.","type":"string"}},"type":"object"},"GetAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"GetKnowledgeBaseResponse":{"properties":{"knowledge_base":{"$ref":"#/components/schemas/KnowledgeBase"}},"type":"object"},"GetMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"GetMCPServerServiceConfigSchemaResponse":{"properties":{"configuration_yamls":{"description":"The configuration schema for the MCP server.","items":{"$ref":"#/components/schemas/ConfigurationYAMLSchema"},"type":"array"}},"type":"object"},"GetTraceHistogramResponse":{"description":"GetTraceHistogramResponse is the response message for getting the trace histogram.","properties":{"histogram":{"$ref":"#/components/schemas/TraceHistogram"},"total_count":{"description":"Total number of traces in the time range.","format":"int32","readOnly":true,"type":"integer"}},"type":"object"},"GetTraceResponse":{"description":"GetTraceResponse is the response message for retrieving a single trace.","properties":{"trace":{"$ref":"#/components/schemas/Trace"}},"type":"object"},"GetTranscriptResponse":{"properties":{"error":{"$ref":"#/components/schemas/TranscriptError"},"summary":{"$ref":"#/components/schemas/TranscriptSummary"},"system_prompt":{"description":"System prompt / instructions provided to the agent.","type":"string"},"turns":{"description":"Ordered list of conversation turns.","items":{"$ref":"#/components/schemas/TranscriptTurn"},"type":"array"}},"type":"object"},"Google":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"InstantResult":{"description":"A single data point for a label combination at a specific point in time.","properties":{"labels":{"additionalProperties":{"type":"string"},"title":"Labels associated to the result","type":"object"},"name":{"title":"Name is a human friendly name for the result, computed from labels","type":"string"},"value":{"$ref":"#/components/schemas/DataPoint"}},"type":"object"},"InstrumentationScope":{"description":"InstrumentationScope is a message representing the instrumentation scope\ninformation such as the fully qualified name and version.","properties":{"attributes":{"description":"Additional attributes that describe the scope. [Optional].\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of attributes that were discarded. Attributes\ncan be discarded because their keys are too long or because there are too\nmany attributes. If this value is 0, then no attributes were dropped.","format":"int64","type":"integer"},"name":{"description":"A name denoting the Instrumentation scope.\nAn empty instrumentation scope name means the name is unknown.","type":"string"},"version":{"description":"Defines the version of the instrumentation scope.\nAn empty instrumentation scope version means the version is unknown.","type":"string"}},"type":"object"},"KeyValue":{"description":"Represents a key-value pair that is used to store Span attributes, Link\nattributes, etc.","properties":{"key":{"description":"The key name of the pair.","type":"string"},"value":{"$ref":"#/components/schemas/AnyValue"}},"type":"object"},"KeyValueList":{"description":"KeyValueList is a list of KeyValue messages. We need KeyValueList as a\nmessage since `oneof` in AnyValue does not allow repeated fields. Everywhere\nelse where we need a list of KeyValue messages (e.g. in Span) we use\n`repeated KeyValue` directly to avoid unnecessary extra wrapping (which slows\ndown the protocol). The 2 approaches are semantically equivalent.","properties":{"values":{"description":"A collection of key/value pairs of key-value pairs. The list may be empty\n(may contain 0 elements).\n\nThe keys MUST be unique (it is not allowed to have more than one\nvalue with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"}},"type":"object"},"KnowledgeBase":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"embedding_generator":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator"},"generation":{"$ref":"#/components/schemas/KnowledgeBase.Generation"},"id":{"readOnly":true,"type":"string"},"indexer":{"$ref":"#/components/schemas/KnowledgeBase.Indexer"},"retrieval_api_url":{"readOnly":true,"type":"string"},"retriever":{"$ref":"#/components/schemas/KnowledgeBase.Retriever"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a pipeline.","type":"object"},"vector_database":{"$ref":"#/components/schemas/KnowledgeBase.VectorDatabase"}},"required":["id","display_name","vector_database","embedding_generator","generation"],"type":"object"},"KnowledgeBase.EmbeddingGenerator":{"properties":{"dimensions":{"format":"int32","type":"integer"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator.Provider"}},"required":["provider","dimensions","model"],"type":"object"},"KnowledgeBase.EmbeddingGenerator.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator.Provider.Cohere"},"openai":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator.Provider.OpenAI"}},"type":"object"},"KnowledgeBase.EmbeddingGenerator.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"required":["api_key"],"type":"object"},"KnowledgeBase.EmbeddingGenerator.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBase.Generation":{"properties":{"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBase.Generation.Provider"}},"required":["provider","model"],"type":"object"},"KnowledgeBase.Generation.Provider":{"properties":{"openai":{"$ref":"#/components/schemas/KnowledgeBase.Generation.Provider.OpenAI"}},"type":"object"},"KnowledgeBase.Generation.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBase.Indexer":{"properties":{"chunk_overlap":{"format":"int32","type":"integer"},"chunk_size":{"format":"int32","type":"integer"},"input_topics":{"items":{"type":"string"},"type":"array"},"redpanda_password":{"type":"string"},"redpanda_sasl_mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"redpanda_username":{"type":"string"}},"required":["input_topics"],"type":"object"},"KnowledgeBase.Retriever":{"properties":{"reranker":{"$ref":"#/components/schemas/KnowledgeBase.Retriever.Reranker"}},"type":"object"},"KnowledgeBase.Retriever.Reranker":{"properties":{"enabled":{"type":"boolean"},"provider":{"$ref":"#/components/schemas/KnowledgeBase.Retriever.Reranker.Provider"}},"type":"object"},"KnowledgeBase.Retriever.Reranker.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBase.Retriever.Reranker.Provider.Cohere"}},"type":"object"},"KnowledgeBase.Retriever.Reranker.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"model":{"type":"string"}},"required":["api_key","model"],"type":"object"},"KnowledgeBase.VectorDatabase":{"properties":{"postgres":{"$ref":"#/components/schemas/KnowledgeBase.VectorDatabase.Postgres"}},"type":"object"},"KnowledgeBase.VectorDatabase.Postgres":{"properties":{"dsn":{"type":"string"},"table":{"type":"string"}},"required":["dsn","table"],"type":"object"},"KnowledgeBaseCreate":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"embedding_generator":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator"},"generation":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Generation"},"indexer":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Indexer"},"retriever":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a pipeline.","type":"object"},"vector_database":{"$ref":"#/components/schemas/KnowledgeBaseCreate.VectorDatabase"}},"required":["display_name","vector_database","embedding_generator"],"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator":{"properties":{"dimensions":{"format":"int32","type":"integer"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator.Provider"}},"required":["provider","dimensions","model"],"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator.Provider.Cohere"},"openai":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"required":["api_key"],"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseCreate.Generation":{"properties":{"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Generation.Provider"}},"required":["provider","model"],"type":"object"},"KnowledgeBaseCreate.Generation.Provider":{"properties":{"openai":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Generation.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseCreate.Generation.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseCreate.Indexer":{"properties":{"chunk_overlap":{"format":"int32","type":"integer"},"chunk_size":{"format":"int32","type":"integer"},"input_topics":{"items":{"type":"string"},"type":"array"},"redpanda_password":{"type":"string"},"redpanda_sasl_mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"redpanda_username":{"type":"string"}},"required":["input_topics"],"type":"object"},"KnowledgeBaseCreate.Retriever":{"properties":{"reranker":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever.Reranker"}},"type":"object"},"KnowledgeBaseCreate.Retriever.Reranker":{"properties":{"enabled":{"type":"boolean"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever.Reranker.Provider"}},"type":"object"},"KnowledgeBaseCreate.Retriever.Reranker.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever.Reranker.Provider.Cohere"}},"type":"object"},"KnowledgeBaseCreate.Retriever.Reranker.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"model":{"type":"string"}},"required":["api_key","model"],"type":"object"},"KnowledgeBaseCreate.VectorDatabase":{"properties":{"postgres":{"$ref":"#/components/schemas/KnowledgeBaseCreate.VectorDatabase.Postgres"}},"type":"object"},"KnowledgeBaseCreate.VectorDatabase.Postgres":{"properties":{"dsn":{"type":"string"},"table":{"type":"string"}},"required":["dsn","table"],"type":"object"},"KnowledgeBaseUpdate":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"embedding_generator":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator"},"generation":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Generation"},"indexer":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Indexer"},"retriever":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a pipeline.","type":"object"},"vector_database":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.VectorDatabase"}},"required":["display_name","vector_database","embedding_generator"],"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator":{"properties":{"provider":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator.Provider"}},"required":["provider"],"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator.Provider.Cohere"},"openai":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseUpdate.Generation":{"properties":{"provider":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Generation.Provider"}},"required":["provider"],"type":"object"},"KnowledgeBaseUpdate.Generation.Provider":{"properties":{"openai":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Generation.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseUpdate.Generation.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseUpdate.Indexer":{"properties":{"chunk_overlap":{"format":"int32","type":"integer"},"chunk_size":{"format":"int32","type":"integer"},"input_topics":{"items":{"type":"string"},"type":"array"},"redpanda_password":{"type":"string"},"redpanda_sasl_mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"redpanda_username":{"type":"string"}},"required":["input_topics"],"type":"object"},"KnowledgeBaseUpdate.Retriever":{"properties":{"reranker":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever.Reranker"}},"type":"object"},"KnowledgeBaseUpdate.Retriever.Reranker":{"properties":{"enabled":{"type":"boolean"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever.Reranker.Provider"}},"type":"object"},"KnowledgeBaseUpdate.Retriever.Reranker.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever.Reranker.Provider.Cohere"}},"type":"object"},"KnowledgeBaseUpdate.Retriever.Reranker.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"model":{"type":"string"}},"required":["api_key","model"],"type":"object"},"KnowledgeBaseUpdate.VectorDatabase":{"properties":{"postgres":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.VectorDatabase.Postgres"}},"type":"object"},"KnowledgeBaseUpdate.VectorDatabase.Postgres":{"properties":{"dsn":{"type":"string"}},"required":["dsn"],"type":"object"},"Link":{"description":"A pointer from the current span to another span in the same trace or in a\ndifferent trace. For example, this can be used in batching operations,\nwhere a single batch handler processes multiple requests from different\ntraces or when the handler receives a request from a different project.","properties":{"attributes":{"description":"A collection of attribute key/value pairs on the link.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of dropped attributes. If the value is 0,\nthen no attributes were dropped.","format":"int64","type":"integer"},"flags":{"description":"Flags, a bit field.\n\nBits 0-7 (8 least significant bits) are the trace flags as defined in W3C\nTrace Context specification. To read the 8-bit W3C trace flag, use `flags\n\u0026 SPAN_FLAGS_TRACE_FLAGS_MASK`.\n\nSee https://www.w3.org/TR/trace-context-2/#trace-flags for the flag\ndefinitions.\n\nBits 8 and 9 represent the 3 states of whether the link is remote.\nThe states are (unknown, is not remote, is remote).\nTo read whether the value is known, use `(flags \u0026\nSPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`. To read whether the link is\nremote, use `(flags \u0026 SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\nReaders MUST NOT assume that bits 10-31 (22 most significant bits) will\nbe zero. When creating new spans, bits 10-31 (most-significant 22-bits)\nMUST be zero.\n\n[Optional].","format":"int64","type":"integer"},"span_id":{"description":"A unique identifier for the linked span. The ID is an 8-byte array.","format":"byte","type":"string"},"trace_id":{"description":"A unique identifier of a trace that this linked span is part of. The ID\nis a 16-byte array.","format":"byte","type":"string"},"trace_state":{"description":"The trace_state associated with the link.","type":"string"}},"type":"object"},"LintHint":{"description":"LintHint is a generic linting hint.","properties":{"column":{"description":"Column number of the lint.","format":"int32","type":"integer"},"hint":{"description":"The hint message.","type":"string"},"line":{"description":"Line number of the lint.","format":"int32","type":"integer"},"lint_type":{"description":"Optional lint type or enum.","type":"string"}},"type":"object"},"LintMCPConfigRequest":{"properties":{"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool contains YAML configuration.","type":"object"}},"required":["tools"],"type":"object"},"LintMCPConfigResponse":{"properties":{"lint_hints":{"additionalProperties":{"$ref":"#/components/schemas/LintHint"},"description":"Map of tool names to their linting issues. Empty if no issues are found.","type":"object"}},"type":"object"},"ListAIAgentsRequest.Filter":{"properties":{"mcp_server_id":{"type":"string"},"name_contains":{"description":"Any AI agents that partially match this name will be returned.","type":"string"},"secret_id":{"type":"string"},"tags[string]":{"additionalProperties":{"type":"string"},"description":"AI agents that match all the provided tags will be returned.","type":"object"}},"type":"object"},"ListAIAgentsResponse":{"properties":{"ai_agents":{"items":{"$ref":"#/components/schemas/AIAgent"},"type":"array"},"next_page_token":{"type":"string"}},"type":"object"},"ListKnowledgeBasesRequest.Filter":{"properties":{"name_contains":{"description":"Any KnowledgeBase that partially match this name will be returned.","type":"string"},"tags[string]":{"additionalProperties":{"type":"string"},"description":"KnowledgeBases that match all the provided tags will be returned.","type":"object"}},"type":"object"},"ListKnowledgeBasesResponse":{"properties":{"knowledge_bases":{"items":{"$ref":"#/components/schemas/KnowledgeBase"},"type":"array"},"next_page_token":{"type":"string"}},"type":"object"},"ListMCPServersRequest.Filter":{"properties":{"display_name_contains":{"description":"Returns MCP servers that partially match this name.","type":"string"},"secret_id":{"description":"Filters MCP servers that reference this secret ID in their tool configurations.","type":"string"},"tags[string]":{"additionalProperties":{"type":"string"},"description":"Filters by tags using exact match. Returns only MCP servers that have all the specified key-value pairs.","type":"object"}},"type":"object"},"ListMCPServersResponse":{"properties":{"mcp_servers":{"items":{"$ref":"#/components/schemas/v1alpha3.MCPServer"},"type":"array"},"next_page_token":{"description":"Token to retrieve the next page of results. Empty if there are no more results.","type":"string"}},"type":"object"},"ListQueriesRequest.Filter":{"description":"Filter criteria for listing queries.","properties":{"tags[string]":{"additionalProperties":{"type":"string"},"description":"Queries that match all the provided tags will be returned.","title":"Filter queries that contain all of these key/value pairs","type":"object"}},"type":"object"},"ListQueriesResponse":{"description":"Response of the ListQueries operation.","properties":{"queries":{"items":{"$ref":"#/components/schemas/QueryMetadata"},"title":"A description for each available predefined query","type":"array"}},"type":"object"},"ListTracesRequest.Filter":{"properties":{"attribute_filters":{"description":"Span attribute filters. Key is auto-prefixed with 'span_attributes.' by backend. All filters use AND logic.","items":{"$ref":"#/components/schemas/AttributeFilter"},"type":"array"},"end_time":{"description":"End time for the query (exclusive). Defaults to current time + 5 minutes if not provided.","format":"date-time","type":"string"},"has_errors":{"description":"When true, filter for spans with error status.","nullable":true,"type":"boolean"},"min_duration_ns":{"description":"Filter for spans with duration greater than this value in nanoseconds.","format":"int64","nullable":true,"type":"string"},"service_names":{"description":"Filter by service name (from resource attributes). OR logic - matches if root service is any of these.","items":{"type":"string"},"type":"array"},"span_ids":{"description":"Filter by span ID. Returns traces containing any of these spans.","items":{"type":"string"},"type":"array"},"start_time":{"description":"Start time for the query (inclusive). Defaults to Unix epoch (1970-01-01) if not provided.","format":"date-time","type":"string"}},"title":"Filter criteria for listing traces including time range.\nDefault behavior:\n- start_time: defaults to Unix epoch (1970-01-01) if not provided\n- end_time: defaults to current time + 5 minutes if not provided","type":"object"},"ListTracesResponse":{"description":"ListTracesResponse is the response message for listing traces.","properties":{"matched_spans":{"additionalProperties":{"$ref":"#/components/schemas/MatchedSpanIds"},"description":"Map of trace_id to span IDs that matched the filters. Only populated when attribute filters are active.","readOnly":true,"type":"object"},"next_page_token":{"description":"Opaque token to retrieve the next page of results. Empty if this is the last page.","type":"string"},"returned_end_time":{"description":"End time of the newest trace in this page. Use with returned_start_time to highlight the current view window in a timeline.","format":"date-time","readOnly":true,"type":"string"},"returned_start_time":{"description":"Start time of the oldest trace in this page. Use with returned_end_time to highlight the current view window in a timeline.","format":"date-time","readOnly":true,"type":"string"},"total_count":{"description":"Total number of traces matching the time range filter, regardless of pagination. Use this to display 'Showing X of Y traces'.","format":"int32","readOnly":true,"type":"integer"},"traces":{"description":"List of trace summaries matching the query (sorted by start_time, newest first).","items":{"$ref":"#/components/schemas/TraceSummary"},"type":"array"}},"type":"object"},"ListTranscriptsRequest.Filter":{"description":"Optional filters for narrowing the transcript list.","properties":{"end_time":{"description":"Filter conversations that started before this time (exclusive).","format":"date-time","type":"string"},"has_errors":{"description":"Filter for conversations that contain errors.","nullable":true,"type":"boolean"},"query":{"description":"Free-text search across conversation titles and content.","type":"string"},"start_time":{"description":"Filter conversations that started after this time (inclusive).","format":"date-time","type":"string"},"status":{"$ref":"#/components/schemas/TranscriptStatus"}},"type":"object"},"ListTranscriptsResponse":{"properties":{"next_page_token":{"description":"Token for fetching the next page. Empty if no more results.","type":"string"},"transcripts":{"description":"List of conversation summaries.","items":{"$ref":"#/components/schemas/TranscriptSummary"},"type":"array"}},"type":"object"},"MCPServer.State":{"description":"State of the MCP server.\n\n - STATE_STARTING: The MCP server is starting.\n - STATE_RUNNING: The MCP server is running.\n - STATE_STOPPING: The MCP server is in the process of stopping.\n - STATE_STOPPED: The MCP server is stopped and in paused state.\n - STATE_ERROR: The MCP server encountered an error.","enum":["STATE_STARTING","STATE_RUNNING","STATE_STOPPING","STATE_STOPPED","STATE_ERROR"],"type":"string"},"MCPServer.Status":{"description":"MCP server status may contain an error message.","properties":{"error":{"description":"Error message if the MCP server is in an error state. Empty if no error.","type":"string"}},"type":"object"},"MCPServerCreate":{"description":"MCPServerCreate contains the details for the MCP server creation request.","properties":{"description":{"description":"Optional MCP server description.","type":"string"},"display_name":{"description":"User-friendly MCP server name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a MCP server.","type":"object"},"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool defines a capability that the MCP server exposes.","type":"object"}},"required":["display_name","tools"],"type":"object"},"MCPServerUpdate":{"properties":{"description":{"description":"MCP server description.","type":"string"},"display_name":{"description":"User-friendly MCP server name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"tags":{"additionalProperties":{"type":"string"},"description":"A map of tags to add, update or delete.\nIf a tag's value is empty, the server interprets that as a deletion.","type":"object"},"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool defines a capability that the MCP server exposes.","type":"object"}},"type":"object"},"MatchedSpanIds":{"description":"MatchedSpanIds contains the list of span IDs within a trace that matched the filters.","properties":{"span_ids":{"description":"Span IDs that matched the attribute filters within this trace.","items":{"type":"string"},"type":"array"}},"type":"object"},"OpenAICompatible":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"required":["base_url"],"type":"object"},"QueryMetadata":{"description":"A description of a predefined query available in the system.","properties":{"description":{"title":"A description of what this query returns","type":"string"},"filters":{"items":{"$ref":"#/components/schemas/FilterMetadata"},"title":"Available filters for this query","type":"array"},"name":{"title":"Name of the query that can be used in the service to execute it","type":"string"},"tags":{"additionalProperties":{"type":"string"},"title":"Tags for grouping queries (e.g., category, type, component)","type":"object"},"unit":{"title":"Unit of measurement for the returned time series","type":"string"}},"type":"object"},"Resource":{"description":"Resource information.","properties":{"attributes":{"description":"Set of attributes that describe the resource.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of dropped attributes. If the value is 0, then\nno attributes were dropped.","format":"int64","type":"integer"}},"type":"object"},"Resources":{"properties":{"cpu_shares":{"description":"`cpu_shares` is a string specifying the amount of CPU to allocate for the\npipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable\nunits include:\n- Decimal SI units: \"m\" (e.g., \"500m\" for 500 millicores, \"2\" for 2 cores)\nCPU shares can be specified in millicores (1 core = 1000 millicores).\nIf you don't specify a unit, the value is interpreted as the number of cores.","type":"string"},"memory_shares":{"description":"`memory_shares` is a string specifying the amount of memory to allocate for\nthe pipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable units\ninclude:\n- Decimal SI units: \"K\", \"M\", \"G\", \"T\", \"P\", \"E\" (e.g., \"128M\" for 128\n megabytes)\n- Binary SI units: \"Ki\", \"Mi\", \"Gi\", \"Ti\", \"Pi\", \"Ei\" (e.g., \"512Mi\" for\n512 mebibytes) If you don't specify a unit, the value is interpreted as\nbytes.","type":"string"}},"required":["memory_shares","cpu_shares"],"type":"object"},"SASLMechanism":{"description":"SASL mechanism to use for authentication.","enum":["SASL_MECHANISM_SCRAM_SHA_256","SASL_MECHANISM_SCRAM_SHA_512"],"type":"string"},"Skill":{"description":"A skill that the agent can perform.","properties":{"description":{"description":"Description of what the skill does.","type":"string"},"examples":{"description":"Example prompts that demonstrate the skill.","items":{"type":"string"},"type":"array"},"id":{"description":"Unique identifier for the skill.","type":"string"},"input_modes":{"description":"Supported input modes (e.g., \"text\", \"file\").","items":{"type":"string"},"type":"array"},"name":{"description":"Human-readable name for the skill.","type":"string"},"output_modes":{"description":"Supported output modes (e.g., \"text\", \"file\").","items":{"type":"string"},"type":"array"},"tags":{"description":"Tags for categorizing the skill.","items":{"type":"string"},"type":"array"}},"required":["id","name","description"],"type":"object"},"Span":{"description":"A Span represents a single operation performed by a single component of the\nsystem.","properties":{"attributes":{"description":"\"/http/user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2)\n AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98\n Safari/537.36\"\n \"/http/server_latency\": 300\n \"example.com/myattribute\": true\n \"example.com/score\": 10.239\n\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"title":"A collection of key/value pairs. Note, global attributes\nlike server name can be set using the resource API. Examples of attributes:","type":"array"},"dropped_attributes_count":{"description":"The number of attributes that were discarded. Attributes\ncan be discarded because their keys are too long or because there are too\nmany attributes. If this value is 0, then no attributes were dropped.","format":"int64","type":"integer"},"dropped_events_count":{"description":"The number of dropped events. If the value is 0, then no\nevents were dropped.","format":"int64","type":"integer"},"dropped_links_count":{"description":"The number of dropped links after the maximum size was\nenforced. If this value is 0, then no links were dropped.","format":"int64","type":"integer"},"end_time_unix_nano":{"description":"The end time of the span. On the client side, this is the time\nkept by the local machine where the span execution ends. On the server\nside, this is the time when the server application handler stops running.\nValue is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January\n1970.\n\nThis field is semantically required and it is expected that end_time \u003e=\nstart_time.","format":"uint64","type":"string"},"events":{"description":"A collection of Event items.","items":{"$ref":"#/components/schemas/Event"},"type":"array"},"flags":{"description":"Flags, a bit field.\n\nBits 0-7 (8 least significant bits) are the trace flags as defined in W3C\nTrace Context specification. To read the 8-bit W3C trace flag, use `flags \u0026\nSPAN_FLAGS_TRACE_FLAGS_MASK`.\n\nSee https://www.w3.org/TR/trace-context-2/#trace-flags for the flag\ndefinitions.\n\nBits 8 and 9 represent the 3 states of whether a span's parent\nis remote. The states are (unknown, is not remote, is remote).\nTo read whether the value is known, use `(flags \u0026\nSPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`. To read whether the span is\nremote, use `(flags \u0026 SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\nWhen creating span messages, if the message is logically forwarded from\nanother source with an equivalent flags fields (i.e., usually another OTLP\nspan message), the field SHOULD be copied as-is. If creating from a source\nthat does not have an equivalent flags field (such as a runtime\nrepresentation of an OpenTelemetry span), the high 22 bits MUST be set to\nzero. Readers MUST NOT assume that bits 10-31 (22 most significant bits)\nwill be zero.\n\n[Optional].","format":"int64","type":"integer"},"kind":{"$ref":"#/components/schemas/SpanKind"},"links":{"description":"A collection of Links, which are references from this span to a span\nin the same or different trace.","items":{"$ref":"#/components/schemas/Link"},"type":"array"},"name":{"description":"A description of the span's operation.\n\nFor example, the name can be a qualified method name or a file name\nand a line number where the operation is called. A best practice is to use\nthe same display name at the same call point in an application.\nThis makes it easier to correlate spans in different traces.\n\nThis field is semantically required to be set to non-empty string.\nEmpty value is equivalent to an unknown span name.\n\nThis field is required.","type":"string"},"parent_span_id":{"description":"The `span_id` of this span's parent span. If this is a root span, then this\nfield must be empty. The ID is an 8-byte array.","format":"byte","type":"string"},"resource":{"$ref":"#/components/schemas/Resource"},"resource_schema_url":{"description":"The Resource Schema URL, if known. This is the identifier of the Schema\nthat the resource data is recorded in. Notably, the last part of the URL\npath is the version number of the schema:\nhttp[s]://server[:port]/path/\u003cversion\u003e. To learn more about Schema URL see\nhttps://opentelemetry.io/docs/specs/otel/schemas/#schema-url\nThis schema_url applies to the data in the \"resource\" field only.","type":"string"},"scope":{"$ref":"#/components/schemas/InstrumentationScope"},"scope_schema_url":{"description":"The Scope Schema URL, if known. This is the identifier of the Schema that\nthe log data is recorded in. Notably, the last part of the URL path is the\nversion number of the schema: http[s]://server[:port]/path/\u003cversion\u003e. To\nlearn more about Schema URL see\nhttps://opentelemetry.io/docs/specs/otel/schemas/#schema-url\nThis schema_url applies to the data in the \"scope\" field and the rest of\nthe data in this proto.","type":"string"},"span_id":{"description":"A unique identifier for a span within a trace, assigned when the span\nis created. The ID is an 8-byte array. An ID with all zeroes OR of length\nother than 8 bytes is considered invalid (empty string in OTLP/JSON\nis zero-length and thus is also invalid).\n\nThis field is required.","format":"byte","type":"string"},"start_time_unix_nano":{"description":"The start time of the span. On the client side, this is the time\nkept by the local machine where the span execution starts. On the server\nside, this is the time when the server's application handler starts\nrunning. Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1\nJanuary 1970.\n\nThis field is semantically required and it is expected that end_time \u003e=\nstart_time.","format":"uint64","type":"string"},"status":{"$ref":"#/components/schemas/v1.Status"},"trace_id":{"description":"A unique identifier for a trace. All spans from the same trace share\nthe same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR\nof length other than 16 bytes is considered invalid (empty string in\nOTLP/JSON is zero-length and thus is also invalid).\n\nThis field is required.","format":"byte","type":"string"},"trace_state":{"description":"trace_state conveys information about request position in multiple\ndistributed tracing graphs. It is a trace_state in w3c-trace-context\nformat: https://www.w3.org/TR/trace-context/#tracestate-header See also\nhttps://github.com/w3c/distributed-tracing for more details about this\nfield.","type":"string"}},"type":"object"},"SpanKind":{"description":"SpanKind is the type of span. Can be used to specify additional\nrelationships between spans in addition to a parent/child relationship.\n\n - SPAN_KIND_INTERNAL: Indicates that the span represents an internal operation within an\napplication, as opposed to an operation happening at the boundaries.\nDefault value.\n - SPAN_KIND_SERVER: Indicates that the span covers server-side handling of an RPC or other\nremote network request.\n - SPAN_KIND_CLIENT: Indicates that the span describes a request to some remote service.\n - SPAN_KIND_PRODUCER: Indicates that the span describes a producer sending a message to a\nbroker. Unlike CLIENT and SERVER, there is often no direct critical path\nlatency relationship between producer and consumer spans. A PRODUCER span\nends when the message was accepted by the broker while the logical\nprocessing of the message might span a much longer time.\n - SPAN_KIND_CONSUMER: Indicates that the span describes consumer receiving a message from a\nbroker. Like the PRODUCER kind, there is often no direct critical path\nlatency relationship between producer and consumer spans.","enum":["SPAN_KIND_INTERNAL","SPAN_KIND_SERVER","SPAN_KIND_CLIENT","SPAN_KIND_PRODUCER","SPAN_KIND_CONSUMER"],"type":"string"},"StartAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"StartMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"StatusCode":{"description":"- STATUS_CODE_OK: The Span has been validated by an Application developer or Operator to\nhave completed successfully.\n - STATUS_CODE_ERROR: The Span contains an error.","enum":["STATUS_CODE_OK","STATUS_CODE_ERROR"],"title":"For the semantics of status codes see\nhttps://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status","type":"string"},"StopAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"StopMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"Subagent":{"description":"Subagent configuration for delegating specialized tasks.","properties":{"description":{"description":"Optional subagent description.","type":"string"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this subagent can use.\nReferences Redpanda MCP servers by ID.","type":"object"},"system_prompt":{"description":"System instructions that define how this subagent should behave. The subagent inherits the provider and model from its parent agent.","type":"string"}},"required":["system_prompt"],"type":"object"},"TimeSeries":{"description":"A sequence of data points for a label combination.","properties":{"labels":{"additionalProperties":{"type":"string"},"title":"Labels associated to the time series","type":"object"},"name":{"title":"Name is a human friendly name for the series, computed from labels","type":"string"},"values":{"items":{"$ref":"#/components/schemas/DataPoint"},"title":"The sequence of data points associated with the time series","type":"array"}},"type":"object"},"Tool":{"description":"A configuration tool for the MCP server.","properties":{"component_type":{"$ref":"#/components/schemas/ComponentType"},"config_yaml":{"description":"The contents of the configuration tool in YAML format.","type":"string"}},"required":["config_yaml"],"type":"object"},"Trace":{"description":"Trace represents a complete distributed trace with all its spans.","properties":{"spans":{"description":"List of all spans belonging to this trace. Use the parent_span_id field to reconstruct the span hierarchy.","items":{"$ref":"#/components/schemas/Span"},"type":"array"},"summary":{"$ref":"#/components/schemas/TraceSummary"},"trace_id":{"description":"Unique trace identifier as a 32-character hexadecimal string.","pattern":"^[0-9a-f]{32}$","type":"string"}},"type":"object"},"TraceHistogram":{"description":"TraceHistogram contains bucketed trace counts for timeline visualization.","properties":{"bucket_duration":{"description":"Duration of each histogram bucket.","type":"string"},"buckets":{"description":"Time-ordered buckets covering the query range.","items":{"$ref":"#/components/schemas/TraceHistogramBucket"},"type":"array"}},"type":"object"},"TraceHistogramBucket":{"description":"TraceHistogramBucket represents a single time bucket in the histogram.","properties":{"count":{"description":"Number of traces that started within this bucket.","format":"int32","type":"integer"},"error_count":{"description":"Number of traces with errors in this bucket.","format":"int32","type":"integer"},"start_time":{"description":"Start time of this bucket (inclusive).","format":"date-time","type":"string"}},"type":"object"},"TraceSummary":{"description":"TraceSummary contains high-level metadata about a trace.","properties":{"duration":{"description":"Total duration of the trace, calculated as (latest span end time) - (earliest span start time).","readOnly":true,"type":"string"},"error_count":{"description":"Number of spans in this trace that have an error status.","format":"int32","readOnly":true,"type":"integer"},"root_service_name":{"description":"Service name extracted from the root span's 'service.name' resource attribute. May be empty if the root span is unavailable or lacks the attribute.","type":"string"},"root_span_name":{"description":"Name of the root span (the span with no parent). May be empty if the root span is not yet available.","type":"string"},"span_count":{"description":"Total number of spans that belong to this trace.","format":"int32","readOnly":true,"type":"integer"},"start_time":{"description":"Start time of the trace (earliest span start time).","format":"date-time","readOnly":true,"type":"string"},"trace_id":{"description":"Unique trace identifier as a 32-character hexadecimal string.","pattern":"^[0-9a-f]{32}$","type":"string"}},"type":"object"},"TranscriptError":{"description":"Error information associated with a transcript or turn.\nSourced from OTel span status_code = ERROR and status_message.","properties":{"code":{"description":"Error code or category.","type":"string"},"message":{"description":"Human-readable error description. From OTel span status_message.","type":"string"}},"type":"object"},"TranscriptStatus":{"description":"Transcript execution status.\nDerived from the OTel span status_code of the root agent span.\n\n - TRANSCRIPT_STATUS_RUNNING: The conversation is still in progress (root span has not ended).\n - TRANSCRIPT_STATUS_COMPLETED: The conversation completed successfully (status_code = OK or UNSET).\n - TRANSCRIPT_STATUS_ERROR: The conversation ended with an error (status_code = ERROR).","enum":["TRANSCRIPT_STATUS_RUNNING","TRANSCRIPT_STATUS_COMPLETED","TRANSCRIPT_STATUS_ERROR"],"type":"string"},"TranscriptSummary":{"description":"Summary information for a single transcript (conversation).\nAggregated from the spans sharing the same gen_ai.conversation.id.","properties":{"agent_id":{"description":"Agent that produced this conversation. For managed agents this is the\nRedpanda agent ID; for BYOA this is the agent identifier from the\nspan's resource or span attributes.","readOnly":true,"type":"string"},"conversation_id":{"description":"Conversation ID from the OTel GenAI semantic conventions\n(gen_ai.conversation.id).","type":"string"},"duration":{"description":"Total conversation duration (end_time - start_time).","type":"string"},"end_time":{"description":"When the conversation ended. From the latest span end_time.","format":"date-time","type":"string"},"has_errors":{"description":"Whether any turn in the conversation had an error.","type":"boolean"},"start_time":{"description":"When the conversation started. From the earliest span start_time.","format":"date-time","type":"string"},"status":{"$ref":"#/components/schemas/TranscriptStatus"},"title":{"description":"Short description of the conversation, e.g. derived from the first\nuser message or set by the agent.","type":"string"},"turn_count":{"description":"Number of user turns (interactions) in the conversation.","format":"int32","type":"integer"},"usage":{"$ref":"#/components/schemas/TranscriptUsage"},"user_id":{"description":"Identifier of the user who initiated the conversation.","type":"string"}},"required":["conversation_id"],"type":"object"},"TranscriptToolCall":{"description":"Tool call information associated with a transcript turn.\nEach tool call corresponds to a child span with\ngen_ai.operation.name = \"execute_tool\".","properties":{"error":{"$ref":"#/components/schemas/TranscriptError"},"input":{"description":"Tool invocation parameters (JSON-encoded).","type":"string"},"latency":{"description":"Tool execution duration. Derived from the span's duration.","type":"string"},"name":{"description":"Tool name. From gen_ai.tool.name span attribute.","type":"string"},"output":{"description":"Tool execution result (JSON-encoded).","type":"string"},"status":{"$ref":"#/components/schemas/TranscriptToolCallStatus"},"tool_call_id":{"description":"Unique tool call identifier. Sourced from the OTel span ID.","type":"string"}},"required":["name"],"type":"object"},"TranscriptToolCallStatus":{"description":"Tool call status within a transcript turn.\nDerived from the OTel span status_code of the tool execution span.\n\n - TRANSCRIPT_TOOL_CALL_STATUS_RUNNING: Tool call is currently executing (span has not ended).\n - TRANSCRIPT_TOOL_CALL_STATUS_COMPLETED: Tool call completed successfully.\n - TRANSCRIPT_TOOL_CALL_STATUS_ERROR: Tool call ended with an error.","enum":["TRANSCRIPT_TOOL_CALL_STATUS_RUNNING","TRANSCRIPT_TOOL_CALL_STATUS_COMPLETED","TRANSCRIPT_TOOL_CALL_STATUS_ERROR"],"type":"string"},"TranscriptTurn":{"description":"A single transcript turn representing one message in the conversation.\nEach turn corresponds to an OTel span within the conversation trace.","properties":{"content":{"description":"Message content (user prompt, assistant response, or tool result).","type":"string"},"error":{"$ref":"#/components/schemas/TranscriptError"},"is_reconstructed":{"description":"Whether this turn was reconstructed from conversation history embedded\nin a later span's input messages. This happens when earlier spans were\nevicted (e.g. due to retention) but the full conversation history was\npreserved in subsequent LLM calls. Reconstructed turns lack precise\ntimestamps, latency, and usage metrics.","type":"boolean"},"latency":{"description":"Turn duration. Derived from the span's duration.","type":"string"},"model":{"description":"LLM model used for this turn. From gen_ai.request.model.","type":"string"},"role":{"$ref":"#/components/schemas/TranscriptTurnRole"},"timestamp":{"description":"When this turn occurred. From the span's start_time.","format":"date-time","type":"string"},"tool_calls":{"description":"Tool calls made during this turn (assistant turns only).\nEach entry corresponds to a child span with gen_ai.operation.name = \"execute_tool\".","items":{"$ref":"#/components/schemas/TranscriptToolCall"},"type":"array"},"turn_id":{"description":"Unique turn identifier. Sourced from the OTel span ID.","type":"string"},"usage":{"$ref":"#/components/schemas/TranscriptUsage"}},"required":["turn_id"],"type":"object"},"TranscriptTurnRole":{"description":"Transcript turn role.\nInferred from gen_ai.operation.name and the span's position in the hierarchy.\n\n - TRANSCRIPT_TURN_ROLE_SYSTEM: System prompt / instructions.\n - TRANSCRIPT_TURN_ROLE_USER: User input message.\n - TRANSCRIPT_TURN_ROLE_ASSISTANT: LLM assistant response (gen_ai.operation.name = \"chat\").\n - TRANSCRIPT_TURN_ROLE_TOOL: Tool execution result (gen_ai.operation.name = \"execute_tool\").","enum":["TRANSCRIPT_TURN_ROLE_SYSTEM","TRANSCRIPT_TURN_ROLE_USER","TRANSCRIPT_TURN_ROLE_ASSISTANT","TRANSCRIPT_TURN_ROLE_TOOL"],"type":"string"},"TranscriptUsage":{"description":"Token and cost usage for a transcript or turn.\nSourced from gen_ai.usage.input_tokens and gen_ai.usage.output_tokens\nspan attributes. For the summary level, values are aggregated across all turns.","properties":{"estimated_cost_usd":{"description":"Estimated cost in USD. May not be available for all providers.","format":"double","type":"number"},"input_tokens":{"description":"Number of input/prompt tokens. From gen_ai.usage.input_tokens.","format":"int64","type":"string"},"output_tokens":{"description":"Number of output/completion tokens. From gen_ai.usage.output_tokens.","format":"int64","type":"string"},"total_tokens":{"description":"Sum of input and output tokens.","format":"int64","type":"string"}},"type":"object"},"UpdateAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"UpdateKnowledgeBaseResponse":{"properties":{"knowledge_base":{"$ref":"#/components/schemas/KnowledgeBase"}},"type":"object"},"UpdateMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"rpc.Status":{"properties":{"code":{"format":"int32","type":"integer"},"details":{"items":{"$ref":"#/components/schemas/Any"},"type":"array"},"message":{"type":"string"}},"type":"object"},"v1.Status":{"description":"The Status type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs.","properties":{"code":{"$ref":"#/components/schemas/StatusCode"},"message":{"description":"A developer-facing human readable error message.","type":"string"}},"type":"object"},"v1alpha3.MCPServer":{"description":"Defines the MCP server resource.","properties":{"description":{"description":"Optional MCP server description.","type":"string"},"display_name":{"description":"User-friendly MCP server name.","type":"string"},"id":{"description":"Unique identifier for the MCP server.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"state":{"$ref":"#/components/schemas/MCPServer.State"},"status":{"$ref":"#/components/schemas/MCPServer.Status"},"tags":{"additionalProperties":{"type":"string"},"description":"Tags are key-value pairs that can be assigned to a MCP server resource.\nThey help organize MCP servers and enable filtering when listing them.","type":"object"},"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool defines a capability that the MCP server exposes.","type":"object"},"url":{"description":"URL to connect to the MCP server.","readOnly":true,"type":"string"}},"required":["id","display_name","tools"],"type":"object"}},"securitySchemes":{"auth0":{"description":"RedpandaCloud","flows":{"implicit":{"authorizationUrl":"https://auth.prd.cloud.redpanda.com/oauth/authorize","scopes":{},"x-client-id":"dQjapNIAHhF7EQqQToRla3yEII9sUSap"}},"type":"oauth2"}}},"info":{"title":"Redpanda Cloud Data Plane API","version":"v1"},"openapi":"3.0.3","paths":{"/v1alpha3/ai-agents":{"get":{"description":"List AI agents. Optional: filter based on AI agent name.","operationId":"AIAgentService_ListAIAgents","parameters":[{"description":"Any AI agents that partially match this name will be returned.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}},{"in":"query","name":"filter.secret_id","schema":{"type":"string"}},{"in":"query","name":"filter.mcp_server_id","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 50. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAIAgentsResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List AI Agents","tags":["AI Agents"]},"post":{"description":"Create a new AI agent.","operationId":"AIAgentService_CreateAIAgent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgentCreate"}}},"required":true,"x-originalParamName":"ai_agent"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"Created"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create AI Agent","tags":["AI Agents"]}},"/v1alpha3/ai-agents/{id}":{"delete":{"description":"Delete an AI agent.","operationId":"AIAgentService_DeleteAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete AI Agent","tags":["AI Agents"]},"get":{"description":"Get a specific AI agent.","operationId":"AIAgentService_GetAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get AI Agent","tags":["AI Agents"]},"put":{"description":"Update the configuration of an AI agent.","operationId":"AIAgentService_UpdateAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Specifies which fields should be updated. If not provided,\nall fields will be updated.","in":"query","name":"update_mask","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgentUpdate"}}},"required":true,"x-originalParamName":"ai_agent"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update AI Agent","tags":["AI Agents"]}},"/v1alpha3/ai-agents/{id}:start":{"put":{"description":"Start a stopped AI agent.","operationId":"AIAgentService_StartAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"Started"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Start AI Agent","tags":["AI Agents"]}},"/v1alpha3/ai-agents/{id}:stop":{"put":{"description":"Stop a running AI agent.","operationId":"AIAgentService_StopAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"Stopped"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stop AI Agent","tags":["AI Agents"]}},"/v1alpha3/knowledge-bases":{"get":{"operationId":"KnowledgeBaseService_ListKnowledgeBases","parameters":[{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Any KnowledgeBase that partially match this name will be returned.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]},"post":{"operationId":"KnowledgeBaseService_CreateKnowledgeBase","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseCreate"}}},"required":true,"x-originalParamName":"knowledge_base"},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]}},"/v1alpha3/knowledge-bases/{id}":{"delete":{"operationId":"KnowledgeBaseService_DeleteKnowledgeBase","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]},"get":{"operationId":"KnowledgeBaseService_GetKnowledgeBase","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]},"put":{"operationId":"KnowledgeBaseService_UpdateKnowledgeBase","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"update_mask","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseUpdate"}}},"required":true,"x-originalParamName":"knowledge_base"},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]}},"/v1alpha3/observability/queries":{"get":{"description":"List all available predefined queries with their metadata (name, description, unit, and available filters).","operationId":"ObservabilityService_ListQueries","parameters":[{"description":"Filter queries that contain all of these key/value pairs\n\nThis is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListQueriesResponse"}}},"description":"Queries metadata"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Available Queries","tags":["Observability"]}},"/v1alpha3/observability/queries/{query_name}:executeInstant":{"post":{"description":"Execute a predefined query at a single point in time. Returns a single data point for each time series. If time is not specified, defaults to current time. Optional filters can be applied as key-value pairs.","operationId":"ObservabilityService_ExecuteInstantQuery","parameters":[{"description":"Predefined query to request data from","in":"path","name":"query_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteInstantQueryParams"}}},"description":"Instant query execution parameters","required":true,"x-originalParamName":"params"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteInstantQueryResponse"}}},"description":"Instant query results"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Execute Instant Query","tags":["Observability"]}},"/v1alpha3/observability/queries/{query_name}:executeRange":{"post":{"description":"Execute a predefined query over a time range. Returns multiple data points between the start and end times. Optional filters can be applied as key-value pairs.","operationId":"ObservabilityService_ExecuteRangeQuery","parameters":[{"description":"Predefined query to request data from","in":"path","name":"query_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRangeQueryParams"}}},"description":"Range query execution parameters","required":true,"x-originalParamName":"params"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRangeQueryResponse"}}},"description":"Range query results"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Execute Range Query","tags":["Observability"]}},"/v1alpha3/redpanda-connect/mcp-servers":{"get":{"description":"Lists MCP servers. Optionally filter by display name, tags, or secret ID.","operationId":"MCPServerService_ListMCPServers","parameters":[{"description":"Returns MCP servers that partially match this name.","in":"query","name":"filter.display_name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}},{"description":"Filters MCP servers that reference this secret ID in their tool configurations.","in":"query","name":"filter.secret_id","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMCPServersResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List MCP servers","tags":["Remote MCP"]},"post":{"description":"Create a new MCP server.","operationId":"MCPServerService_CreateMCPServer","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerCreate"}}},"required":true,"x-originalParamName":"mcp_server"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers/{id}":{"delete":{"description":"Delete an MCP server.","operationId":"MCPServerService_DeleteMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete an MCP server","tags":["Remote MCP"]},"get":{"description":"Get a specific MCP server.","operationId":"MCPServerService_GetMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get MCP server","tags":["Remote MCP"]},"put":{"description":"Update the configuration of an MCP server.","operationId":"MCPServerService_UpdateMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Specifies which fields to update. If not provided, updates all fields.","in":"query","name":"update_mask","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerUpdate"}}},"required":true,"x-originalParamName":"mcp_server"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update an MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers/{id}:start":{"post":{"description":"Start a stopped MCP server.","operationId":"MCPServerService_StartMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"Started"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Start an MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers/{id}:stop":{"post":{"description":"Stop a running MCP server.","operationId":"MCPServerService_StopMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"Stopped"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stop an MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers:getConfigSchema":{"get":{"description":"Returns the configuration schema for MCP server tools, including available components and processors.","operationId":"MCPServerService_GetMCPServerServiceConfigSchema","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMCPServerServiceConfigSchemaResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get MCP server configuration schema","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers:lint-config":{"post":{"description":"Validates a given MCP tool's configuration and returns linting hints. Each tool's YAML configuration is validated. If no problems are found, the response is empty.","operationId":"MCPServerService_LintMCPConfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LintMCPConfigRequest"}}},"required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LintMCPConfigResponse"}}},"description":"Linting finished. See `lint_hints` for details."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Lint a MCP tools configuration","tags":["Remote MCP"]}},"/v1alpha3/traces":{"get":{"description":"Returns a paginated list of trace summaries for the specified time range.","operationId":"TracingService_ListTraces","parameters":[{"description":"Maximum number of traces to return per page. Defaults to 100 if not specified or set to 0. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Opaque token from a previous ListTracesResponse to fetch the next page. Leave empty for the first page.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Start time for the query (inclusive). Defaults to Unix epoch (1970-01-01) if not provided.","in":"query","name":"filter.start_time","schema":{"format":"date-time","type":"string"}},{"description":"End time for the query (exclusive). Defaults to current time + 5 minutes if not provided.","in":"query","name":"filter.end_time","schema":{"format":"date-time","type":"string"}},{"description":"When true, filter for spans with error status.","in":"query","name":"filter.has_errors","schema":{"type":"boolean"}},{"description":"Filter for spans with duration greater than this value in nanoseconds.","in":"query","name":"filter.min_duration_ns","schema":{"format":"int64","type":"string"}},{"description":"Filter by service name (from resource attributes). OR logic - matches if root service is any of these.","in":"query","name":"filter.service_names","schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by span ID. Returns traces containing any of these spans.","in":"query","name":"filter.span_ids","schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List traces","tags":["Tracing"]}},"/v1alpha3/traces/{trace_id}":{"get":{"description":"Retrieves a complete trace with all its spans by trace ID.","operationId":"TracingService_GetTrace","parameters":[{"description":"Unique trace identifier as a 32-character hexadecimal string.","in":"path","name":"trace_id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get trace","tags":["Tracing"]}},"/v1alpha3/traces:histogram":{"get":{"description":"Returns the distribution of traces over a time range for timeline visualization.","operationId":"TracingService_GetTraceHistogram","parameters":[{"description":"Start time for the query (inclusive). Defaults to Unix epoch (1970-01-01) if not provided.","in":"query","name":"filter.start_time","schema":{"format":"date-time","type":"string"}},{"description":"End time for the query (exclusive). Defaults to current time + 5 minutes if not provided.","in":"query","name":"filter.end_time","schema":{"format":"date-time","type":"string"}},{"description":"When true, filter for spans with error status.","in":"query","name":"filter.has_errors","schema":{"type":"boolean"}},{"description":"Filter for spans with duration greater than this value in nanoseconds.","in":"query","name":"filter.min_duration_ns","schema":{"format":"int64","type":"string"}},{"description":"Filter by service name (from resource attributes). OR logic - matches if root service is any of these.","in":"query","name":"filter.service_names","schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by span ID. Returns traces containing any of these spans.","in":"query","name":"filter.span_ids","schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get trace histogram","tags":["Tracing"]}},"/v1alpha3/transcripts":{"get":{"description":"List transcripts for a specific AI agent. The agent_id query parameter is required and can refer to either a managed Redpanda agent or a bring-your-own-agent (BYOA) deployment.","operationId":"TranscriptService_ListTranscripts","parameters":[{"description":"Agent ID to list conversations for. Required. Can be a managed Redpanda\nagent ID or a BYOA agent identifier.","in":"query","name":"agent_id","required":true,"schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 50. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Pagination token from a previous ListTranscriptsResponse.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Filter conversations that started after this time (inclusive).","in":"query","name":"filter.start_time","schema":{"format":"date-time","type":"string"}},{"description":"Filter conversations that started before this time (exclusive).","in":"query","name":"filter.end_time","schema":{"format":"date-time","type":"string"}},{"description":"Filter by conversation status.\n\n - TRANSCRIPT_STATUS_RUNNING: The conversation is still in progress (root span has not ended).\n - TRANSCRIPT_STATUS_COMPLETED: The conversation completed successfully (status_code = OK or UNSET).\n - TRANSCRIPT_STATUS_ERROR: The conversation ended with an error (status_code = ERROR).","in":"query","name":"filter.status","schema":{"enum":["TRANSCRIPT_STATUS_RUNNING","TRANSCRIPT_STATUS_COMPLETED","TRANSCRIPT_STATUS_ERROR"],"type":"string"}},{"description":"Free-text search across conversation titles and content.","in":"query","name":"filter.query","schema":{"type":"string"}},{"description":"Filter for conversations that contain errors.","in":"query","name":"filter.has_errors","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTranscriptsResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Transcripts","tags":["Transcripts"]}},"/v1alpha3/transcripts/{conversation_id}":{"get":{"description":"Get a single transcript by ID. The agent_id query parameter is required and can refer to either a managed Redpanda agent or a bring-your-own-agent (BYOA) deployment.","operationId":"TranscriptService_GetTranscript","parameters":[{"description":"Conversation ID (gen_ai.conversation.id) to retrieve.","in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}},{"description":"Agent ID the conversation belongs to. Required. Can be a managed Redpanda\nagent ID or a BYOA agent identifier.","in":"query","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTranscriptResponse"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Transcript","tags":["Transcripts"]}}},"security":[{"auth0":[]}],"servers":[{"description":"Data Plane API","url":"{dataplane_api_url}","variables":{"dataplane_api_url":{"default":"https://{dataplane_api_url}","description":"Find the Data Plane API base URL of a cluster by calling the Get Cluster endpoint of the Control Plane API. The dataplane_api.url field is returned in the response body.\u003cbr\u003e\u003cbr\u003e\n\t\t\t\t\tExample (Dedicated): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.fmc.prd.cloud.redpanda.com\"\u003cbr\u003e\n\t\t\t\t\tExample (BYOC): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.byoc.prd.cloud.redpanda.com\""}}}],"tags":[{"description":"Create and manage AI agents and their configurations.","name":"AI Agents"},{"description":"Create and manage retrieval-augmented generation (RAG) knowledge bases.","name":"Redpanda AI KnowledgeBase"},{"description":"Create and manage MCP servers and their configurations.","name":"Remote MCP"},{"description":"Observability operations for Redpanda.","name":"Observability"},{"description":"Query and retrieve OpenTelemetry traces from Redpanda.","name":"Tracing"},{"description":"Access and retrieve AI agent conversation transcripts, including turn-by-turn interaction history, tool calls, and usage metrics.","name":"Transcripts"}]} \ No newline at end of file +{"components":{"schemas":{"AIAgent":{"description":"Defines the AI Agent resource.","properties":{"agent_card":{"$ref":"#/components/schemas/AgentCard"},"description":{"description":"Optional AI agent description.","type":"string"},"display_name":{"description":"User-friendly AI agent name.","type":"string"},"gateway":{"$ref":"#/components/schemas/GatewayConfig"},"id":{"description":"AI Agent ID.","readOnly":true,"type":"string"},"max_iterations":{"format":"int32","type":"integer"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this AI agent can use.","type":"object"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/AIAgent.Provider"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/AIAgent.ServiceAccount"},"state":{"$ref":"#/components/schemas/AIAgent.State"},"subagents":{"additionalProperties":{"$ref":"#/components/schemas/Subagent"},"description":"Map of subagents for delegating specialized tasks.\nKey is the subagent name (used for routing/invocation).","type":"object"},"system_prompt":{"description":"System instructions that define how the AI agent should behave and respond.","type":"string"},"tags":{"additionalProperties":{"type":"string"},"description":"Tags are key-value pairs that can be assigned to an AI agent resource.\nThey help organize AI agents and enable filtering when listing them.","type":"object"},"teams_bridge":{"$ref":"#/components/schemas/AIAgentTeamsBridge"},"teams_bridge_endpoint":{"description":"Messaging endpoint URL for the Teams bridge, populated by the bridge controller.","nullable":true,"readOnly":true,"type":"string"},"url":{"description":"URL to connect to the AI agent endpoint.","readOnly":true,"type":"string"}},"required":["display_name","system_prompt","provider","model","service_account"],"type":"object"},"AIAgent.MCPServer":{"description":"MCP server configuration.","properties":{"id":{"description":"ID of the Redpanda MCP server.","type":"string"},"tool_filter_regex":{"description":"Optional regex pattern to filter which tools from the MCP server should be available.\nIf not specified, all tools from the MCP server are available.\nThe pattern is matched against tool names.","type":"string"}},"type":"object"},"AIAgent.Provider":{"properties":{"anthropic":{"$ref":"#/components/schemas/Anthropic"},"bedrock":{"$ref":"#/components/schemas/Bedrock"},"google":{"$ref":"#/components/schemas/Google"},"openai":{"$ref":"#/components/schemas/AIAgent.Provider.OpenAI"},"openai_compatible":{"$ref":"#/components/schemas/OpenAICompatible"}},"type":"object"},"AIAgent.Provider.OpenAI":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"AIAgent.ServiceAccount":{"properties":{"client_id":{"type":"string"},"client_secret":{"type":"string"}},"required":["client_id","client_secret"],"type":"object"},"AIAgent.State":{"description":"State of the AI agent.\n\n - STATE_STARTING: The AI agent is starting.\n - STATE_RUNNING: The AI agent is running and ready to handle requests.\n - STATE_STOPPING: The AI agent is in the process of stopping.\n - STATE_STOPPED: The AI agent is stopped and in paused state.\n - STATE_ERROR: The AI agent encountered an error.","enum":["STATE_STARTING","STATE_RUNNING","STATE_STOPPING","STATE_STOPPED","STATE_ERROR"],"type":"string"},"AIAgentCreate":{"description":"AIAgentCreate contains the details for the AI agent creation request.","properties":{"agent_card":{"$ref":"#/components/schemas/AgentCard"},"description":{"description":"AI agent description.","type":"string"},"display_name":{"description":"User-friendly AI agent name.","type":"string"},"gateway":{"$ref":"#/components/schemas/GatewayConfig"},"max_iterations":{"format":"int32","type":"integer"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this AI agent can use.","type":"object"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/AIAgent.Provider"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/AIAgent.ServiceAccount"},"subagents":{"additionalProperties":{"$ref":"#/components/schemas/Subagent"},"description":"Map of subagents for delegating specialized tasks.","type":"object"},"system_prompt":{"description":"System instructions that define how the AI agent should behave and respond.","type":"string"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to an AI agent.","type":"object"},"teams_bridge":{"$ref":"#/components/schemas/AIAgentTeamsBridge"}},"required":["display_name","system_prompt","provider","model","service_account"],"type":"object"},"AIAgentTeamsBridge":{"description":"Microsoft Teams bridge configuration for connecting an AI agent to Teams.\nEach agent gets its own Azure Bot registration; the bridge validates\ninbound Bot Framework JWTs against the per-agent bot_app_id as audience.","properties":{"bot_app_id":{"description":"Azure Bot registration Application (client) ID.","type":"string"},"bot_app_secret_ref":{"description":"Bare secret key in the Redpanda secret store (e.g. \"TEAMS_BOT_SECRET\").\nUnlike provider api_key fields which use ${secrets.NAME} template syntax,\nthis is a plain identifier — the bridge resolves it directly via the\ntenant-scoped secret store prefix.","type":"string"},"bot_tenant_id":{"description":"AAD tenant ID the bot registration lives in.","type":"string"},"enabled":{"description":"Whether the Teams bridge is active for this agent.","type":"boolean"}},"type":"object"},"AIAgentUpdate":{"properties":{"agent_card":{"$ref":"#/components/schemas/AgentCard"},"description":{"description":"AI agent description.","type":"string"},"display_name":{"description":"User-friendly AI agent name.","type":"string"},"gateway":{"$ref":"#/components/schemas/GatewayConfig"},"max_iterations":{"format":"int32","type":"integer"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this AI agent can use.","type":"object"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/AIAgent.Provider"},"resources":{"$ref":"#/components/schemas/Resources"},"service_account":{"$ref":"#/components/schemas/AIAgent.ServiceAccount"},"subagents":{"additionalProperties":{"$ref":"#/components/schemas/Subagent"},"description":"Map of subagents to add, update, or delete.\nIf a subagent's value is empty/null, the server interprets that as deletion.","type":"object"},"system_prompt":{"description":"System instructions that define how the AI agent should behave and respond.","type":"string"},"tags":{"additionalProperties":{"type":"string"},"description":"A map of tags to add, update or delete.\nIf a tag's value is empty, the server interprets that as a deletion.","type":"object"},"teams_bridge":{"$ref":"#/components/schemas/AIAgentTeamsBridge"}},"type":"object"},"AgentCard":{"description":"A2A agent card configuration for customizing agent discovery metadata.","properties":{"documentation_url":{"description":"URL to documentation for the agent.","type":"string"},"icon_url":{"description":"URL to an icon image for the agent.","type":"string"},"provider":{"$ref":"#/components/schemas/AgentCard.Provider"},"skills":{"description":"Skills that this agent can perform.","items":{"$ref":"#/components/schemas/Skill"},"type":"array"}},"type":"object"},"AgentCard.Provider":{"description":"Agent provider metadata.","properties":{"organization":{"description":"Organization name (default: \"Redpanda\").","type":"string"},"url":{"description":"Organization URL (default: \"https://redpanda.com\").","type":"string"}},"type":"object"},"Anthropic":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"Any":{"additionalProperties":{},"properties":{"@type":{"type":"string"}},"type":"object"},"AnyValue":{"description":"Represents any type of attribute value. AnyValue may contain a\nprimitive value such as a string or integer or it may contain an arbitrary\nnested object containing arrays, key-value lists and primitives.","properties":{"array_value":{"$ref":"#/components/schemas/ArrayValue"},"bool_value":{"type":"boolean"},"bytes_value":{"format":"byte","type":"string"},"double_value":{"format":"double","type":"number"},"int_value":{"format":"int64","type":"string"},"kvlist_value":{"$ref":"#/components/schemas/KeyValueList"},"string_value":{"type":"string"}},"type":"object"},"ArrayValue":{"description":"ArrayValue is a list of AnyValue messages. We need ArrayValue as a message\nsince oneof in AnyValue does not allow repeated fields.","properties":{"values":{"description":"Array of values. The array may be empty (contain 0 elements).","items":{"$ref":"#/components/schemas/AnyValue"},"type":"array"}},"type":"object"},"AttributeFilter":{"description":"AttributeFilter defines a filter condition for span attributes.","properties":{"key":{"description":"Span attribute key without prefix. Backend adds 'span_attributes.' prefix.","title":"Span attribute key (without \"span_attributes.\" prefix).\nBackend auto-prefixes with \"span_attributes.\" when querying.\nExample: \"gen_ai.operation.name\" queries span_attributes.gen_ai.operation.name","type":"string"},"operator":{"$ref":"#/components/schemas/AttributeOperator"},"value":{"description":"Value for EQUALS or NOT_EQUALS comparison.","type":"string"},"values":{"description":"Values for IN comparison (key matches any of these values).","items":{"type":"string"},"type":"array"}},"type":"object"},"AttributeOperator":{"description":"AttributeOperator defines comparison operators for attribute filters.\n\n - ATTRIBUTE_OPERATOR_EQUALS: Exact match: key = value.\n - ATTRIBUTE_OPERATOR_NOT_EQUALS: Negation: key != value.\n - ATTRIBUTE_OPERATOR_IN: Set membership: key IN [value1, value2, ...].","enum":["ATTRIBUTE_OPERATOR_EQUALS","ATTRIBUTE_OPERATOR_NOT_EQUALS","ATTRIBUTE_OPERATOR_IN"],"type":"string"},"Bedrock":{"properties":{"access_key_id_secret_ref":{"description":"Optional secret reference for the AWS access key ID.\nWhen omitted, uses the AWS default credential chain (IRSA, env vars, instance profile).","type":"string"},"region":{"description":"AWS region for Bedrock inference (e.g., \"us-east-1\").","type":"string"},"secret_access_key_secret_ref":{"description":"Optional secret reference for the AWS secret access key.","type":"string"}},"required":["region"],"type":"object"},"Catalog":{"properties":{"name":{"type":"string"},"namespace_name":{"type":"string"},"type":{"$ref":"#/components/schemas/CatalogType"}},"type":"object"},"CatalogType":{"description":"Catalog backing-storage type. Sourced from `system.catalogs.type`.","enum":["CATALOG_TYPE_REDPANDA"],"type":"string"},"Column":{"description":"Column descriptor as reported by the Postgres driver.","properties":{"name":{"type":"string"},"type":{"description":"Postgres type name (e.g. \"INT8\", \"TEXT\", \"TIMESTAMPTZ\").","type":"string"}},"type":"object"},"ComponentType":{"description":"Component type for this tool.","enum":["COMPONENT_TYPE_PROCESSOR","COMPONENT_TYPE_CACHE","COMPONENT_TYPE_INPUT","COMPONENT_TYPE_OUTPUT"],"type":"string"},"ConfigurationYAMLSchema":{"properties":{"component_type":{"$ref":"#/components/schemas/ComponentType"},"config_schema":{"description":"JSON schema of the configuration components that are allowed for MCP servers.","type":"string"}},"type":"object"},"CreateAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"CreateKnowledgeBaseResponse":{"properties":{"knowledge_base":{"$ref":"#/components/schemas/KnowledgeBase"}},"type":"object"},"CreateMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"DataPoint":{"description":"A single data point made of value and date when it's been measured.","properties":{"timestamp":{"format":"date-time","title":"The timestamp when this datapoint was recorded","type":"string"},"value":{"format":"double","nullable":true,"title":"The value recorded for the given timestamp. The value may be absent when not available in the\nmetrics system or when it is NaN","type":"number"}},"type":"object"},"DeleteAIAgentResponse":{"type":"object"},"DeleteKnowledgeBaseResponse":{"type":"object"},"DeleteMCPServerResponse":{"type":"object"},"DescribeTableResponse":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/Column"},"type":"array"},"table":{"$ref":"#/components/schemas/Table"}},"type":"object"},"Event":{"description":"Event is a time-stamped annotation of the span, consisting of user-supplied\ntext description and key-value pairs.","properties":{"attributes":{"description":"A collection of attribute key/value pairs on the event.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of dropped attributes. If the value is 0,\nthen no attributes were dropped.","format":"int64","type":"integer"},"name":{"description":"The name of the event.\nThis field is semantically required to be set to non-empty string.","type":"string"},"time_unix_nano":{"description":"The time the event occurred.","format":"uint64","type":"string"}},"type":"object"},"ExecuteInstantQueryParams":{"description":"Parameters for executing an instant query.","properties":{"filters":{"additionalProperties":{"type":"string"},"title":"Optional filter values to apply to the query, if the query supports them","type":"object"},"time":{"format":"date-time","nullable":true,"title":"Time at which to evaluate the query (defaults to current time if not provided)","type":"string"}},"type":"object"},"ExecuteInstantQueryResponse":{"description":"Response of an ExecuteInstantQuery operation.","properties":{"metadata":{"$ref":"#/components/schemas/QueryMetadata"},"results":{"items":{"$ref":"#/components/schemas/InstantResult"},"title":"Instant query results, each with a single data point at the requested time","type":"array"}},"type":"object"},"ExecuteQueryRequest":{"properties":{"row_limit":{"description":"Override the server row cap for this query. When unset, the server\ndefault applies.","format":"int32","nullable":true,"type":"integer"},"statement":{"type":"string"},"timeout":{"description":"Per-query timeout. When unset, the server default applies.","nullable":true,"type":"string"}},"type":"object"},"ExecuteQueryResponse":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/Column"},"type":"array"},"rows":{"items":{"$ref":"#/components/schemas/Row"},"type":"array"},"truncated":{"description":"True if the server row cap fired before the result set was\nexhausted.","type":"boolean"}},"type":"object"},"ExecuteRangeQueryParams":{"description":"Parameters for executing a range query.","properties":{"end":{"format":"date-time","nullable":true,"title":"End time for the range query (defaults to current time if not provided)","type":"string"},"filters":{"additionalProperties":{"type":"string"},"title":"Optional filter values to apply to the query, if the query supports them","type":"object"},"start":{"format":"date-time","title":"Start time for the range query","type":"string"}},"type":"object"},"ExecuteRangeQueryResponse":{"description":"Response of an ExecuteRangeQuery operation.","properties":{"metadata":{"$ref":"#/components/schemas/QueryMetadata"},"results":{"items":{"$ref":"#/components/schemas/TimeSeries"},"title":"Time series data with multiple data points over the time range","type":"array"}},"type":"object"},"FilterMetadata":{"description":"Description of a filter that may be available in a query.","properties":{"description":{"title":"A description of the filter","type":"string"},"key":{"title":"What key to use to provide a value for this filter when executing","type":"string"}},"type":"object"},"GatewayConfig":{"description":"Optional gateway configuration for routing requests through an AI Gateway.","properties":{"llm_provider":{"title":"Name of the configured LLMProvider in the AI Gateway (aigw).\nUsed to determine which provider to route requests through.\nExample: \"my-openai-provider\"","type":"string"},"virtual_gateway_id":{"description":"Deprecated: No longer needed — there is always one gateway per cluster.","type":"string"}},"type":"object"},"GetAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"GetKnowledgeBaseResponse":{"properties":{"knowledge_base":{"$ref":"#/components/schemas/KnowledgeBase"}},"type":"object"},"GetMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"GetMCPServerServiceConfigSchemaResponse":{"properties":{"configuration_yamls":{"description":"The configuration schema for the MCP server.","items":{"$ref":"#/components/schemas/ConfigurationYAMLSchema"},"type":"array"}},"type":"object"},"GetTraceHistogramResponse":{"description":"GetTraceHistogramResponse is the response message for getting the trace histogram.","properties":{"histogram":{"$ref":"#/components/schemas/TraceHistogram"},"total_count":{"description":"Total number of traces in the time range.","format":"int32","readOnly":true,"type":"integer"}},"type":"object"},"GetTraceResponse":{"description":"GetTraceResponse is the response message for retrieving a single trace.","properties":{"trace":{"$ref":"#/components/schemas/Trace"}},"type":"object"},"GetTranscriptResponse":{"properties":{"error":{"$ref":"#/components/schemas/TranscriptError"},"summary":{"$ref":"#/components/schemas/TranscriptSummary"},"system_prompt":{"description":"System prompt / instructions provided to the agent.","type":"string"},"turns":{"description":"Ordered list of conversation turns.","items":{"$ref":"#/components/schemas/TranscriptTurn"},"type":"array"}},"type":"object"},"Google":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"InstantResult":{"description":"A single data point for a label combination at a specific point in time.","properties":{"labels":{"additionalProperties":{"type":"string"},"title":"Labels associated to the result","type":"object"},"name":{"title":"Name is a human friendly name for the result, computed from labels","type":"string"},"value":{"$ref":"#/components/schemas/DataPoint"}},"type":"object"},"InstrumentationScope":{"description":"InstrumentationScope is a message representing the instrumentation scope\ninformation such as the fully qualified name and version.","properties":{"attributes":{"description":"Additional attributes that describe the scope. [Optional].\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of attributes that were discarded. Attributes\ncan be discarded because their keys are too long or because there are too\nmany attributes. If this value is 0, then no attributes were dropped.","format":"int64","type":"integer"},"name":{"description":"A name denoting the Instrumentation scope.\nAn empty instrumentation scope name means the name is unknown.","type":"string"},"version":{"description":"Defines the version of the instrumentation scope.\nAn empty instrumentation scope version means the version is unknown.","type":"string"}},"type":"object"},"KeyValue":{"description":"Represents a key-value pair that is used to store Span attributes, Link\nattributes, etc.","properties":{"key":{"description":"The key name of the pair.","type":"string"},"value":{"$ref":"#/components/schemas/AnyValue"}},"type":"object"},"KeyValueList":{"description":"KeyValueList is a list of KeyValue messages. We need KeyValueList as a\nmessage since `oneof` in AnyValue does not allow repeated fields. Everywhere\nelse where we need a list of KeyValue messages (e.g. in Span) we use\n`repeated KeyValue` directly to avoid unnecessary extra wrapping (which slows\ndown the protocol). The 2 approaches are semantically equivalent.","properties":{"values":{"description":"A collection of key/value pairs of key-value pairs. The list may be empty\n(may contain 0 elements).\n\nThe keys MUST be unique (it is not allowed to have more than one\nvalue with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"}},"type":"object"},"KnowledgeBase":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"embedding_generator":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator"},"generation":{"$ref":"#/components/schemas/KnowledgeBase.Generation"},"id":{"readOnly":true,"type":"string"},"indexer":{"$ref":"#/components/schemas/KnowledgeBase.Indexer"},"retrieval_api_url":{"readOnly":true,"type":"string"},"retriever":{"$ref":"#/components/schemas/KnowledgeBase.Retriever"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a pipeline.","type":"object"},"vector_database":{"$ref":"#/components/schemas/KnowledgeBase.VectorDatabase"}},"required":["id","display_name","vector_database","embedding_generator","generation"],"type":"object"},"KnowledgeBase.EmbeddingGenerator":{"properties":{"dimensions":{"format":"int32","type":"integer"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator.Provider"}},"required":["provider","dimensions","model"],"type":"object"},"KnowledgeBase.EmbeddingGenerator.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator.Provider.Cohere"},"openai":{"$ref":"#/components/schemas/KnowledgeBase.EmbeddingGenerator.Provider.OpenAI"}},"type":"object"},"KnowledgeBase.EmbeddingGenerator.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"required":["api_key"],"type":"object"},"KnowledgeBase.EmbeddingGenerator.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBase.Generation":{"properties":{"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBase.Generation.Provider"}},"required":["provider","model"],"type":"object"},"KnowledgeBase.Generation.Provider":{"properties":{"openai":{"$ref":"#/components/schemas/KnowledgeBase.Generation.Provider.OpenAI"}},"type":"object"},"KnowledgeBase.Generation.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBase.Indexer":{"properties":{"chunk_overlap":{"format":"int32","type":"integer"},"chunk_size":{"format":"int32","type":"integer"},"input_topics":{"items":{"type":"string"},"type":"array"},"redpanda_password":{"type":"string"},"redpanda_sasl_mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"redpanda_username":{"type":"string"}},"required":["input_topics"],"type":"object"},"KnowledgeBase.Retriever":{"properties":{"reranker":{"$ref":"#/components/schemas/KnowledgeBase.Retriever.Reranker"}},"type":"object"},"KnowledgeBase.Retriever.Reranker":{"properties":{"enabled":{"type":"boolean"},"provider":{"$ref":"#/components/schemas/KnowledgeBase.Retriever.Reranker.Provider"}},"type":"object"},"KnowledgeBase.Retriever.Reranker.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBase.Retriever.Reranker.Provider.Cohere"}},"type":"object"},"KnowledgeBase.Retriever.Reranker.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"model":{"type":"string"}},"required":["api_key","model"],"type":"object"},"KnowledgeBase.VectorDatabase":{"properties":{"postgres":{"$ref":"#/components/schemas/KnowledgeBase.VectorDatabase.Postgres"}},"type":"object"},"KnowledgeBase.VectorDatabase.Postgres":{"properties":{"dsn":{"type":"string"},"table":{"type":"string"}},"required":["dsn","table"],"type":"object"},"KnowledgeBaseCreate":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"embedding_generator":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator"},"generation":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Generation"},"indexer":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Indexer"},"retriever":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a pipeline.","type":"object"},"vector_database":{"$ref":"#/components/schemas/KnowledgeBaseCreate.VectorDatabase"}},"required":["display_name","vector_database","embedding_generator"],"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator":{"properties":{"dimensions":{"format":"int32","type":"integer"},"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator.Provider"}},"required":["provider","dimensions","model"],"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator.Provider.Cohere"},"openai":{"$ref":"#/components/schemas/KnowledgeBaseCreate.EmbeddingGenerator.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"required":["api_key"],"type":"object"},"KnowledgeBaseCreate.EmbeddingGenerator.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseCreate.Generation":{"properties":{"model":{"type":"string"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Generation.Provider"}},"required":["provider","model"],"type":"object"},"KnowledgeBaseCreate.Generation.Provider":{"properties":{"openai":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Generation.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseCreate.Generation.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseCreate.Indexer":{"properties":{"chunk_overlap":{"format":"int32","type":"integer"},"chunk_size":{"format":"int32","type":"integer"},"input_topics":{"items":{"type":"string"},"type":"array"},"redpanda_password":{"type":"string"},"redpanda_sasl_mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"redpanda_username":{"type":"string"}},"required":["input_topics"],"type":"object"},"KnowledgeBaseCreate.Retriever":{"properties":{"reranker":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever.Reranker"}},"type":"object"},"KnowledgeBaseCreate.Retriever.Reranker":{"properties":{"enabled":{"type":"boolean"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever.Reranker.Provider"}},"type":"object"},"KnowledgeBaseCreate.Retriever.Reranker.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseCreate.Retriever.Reranker.Provider.Cohere"}},"type":"object"},"KnowledgeBaseCreate.Retriever.Reranker.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"model":{"type":"string"}},"required":["api_key","model"],"type":"object"},"KnowledgeBaseCreate.VectorDatabase":{"properties":{"postgres":{"$ref":"#/components/schemas/KnowledgeBaseCreate.VectorDatabase.Postgres"}},"type":"object"},"KnowledgeBaseCreate.VectorDatabase.Postgres":{"properties":{"dsn":{"type":"string"},"table":{"type":"string"}},"required":["dsn","table"],"type":"object"},"KnowledgeBaseUpdate":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"embedding_generator":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator"},"generation":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Generation"},"indexer":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Indexer"},"retriever":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a pipeline.","type":"object"},"vector_database":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.VectorDatabase"}},"required":["display_name","vector_database","embedding_generator"],"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator":{"properties":{"provider":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator.Provider"}},"required":["provider"],"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator.Provider.Cohere"},"openai":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.EmbeddingGenerator.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"type":"object"},"KnowledgeBaseUpdate.EmbeddingGenerator.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseUpdate.Generation":{"properties":{"provider":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Generation.Provider"}},"required":["provider"],"type":"object"},"KnowledgeBaseUpdate.Generation.Provider":{"properties":{"openai":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Generation.Provider.OpenAI"}},"type":"object"},"KnowledgeBaseUpdate.Generation.Provider.OpenAI":{"properties":{"api_key":{"type":"string"}},"type":"object"},"KnowledgeBaseUpdate.Indexer":{"properties":{"chunk_overlap":{"format":"int32","type":"integer"},"chunk_size":{"format":"int32","type":"integer"},"input_topics":{"items":{"type":"string"},"type":"array"},"redpanda_password":{"type":"string"},"redpanda_sasl_mechanism":{"$ref":"#/components/schemas/SASLMechanism"},"redpanda_username":{"type":"string"}},"required":["input_topics"],"type":"object"},"KnowledgeBaseUpdate.Retriever":{"properties":{"reranker":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever.Reranker"}},"type":"object"},"KnowledgeBaseUpdate.Retriever.Reranker":{"properties":{"enabled":{"type":"boolean"},"provider":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever.Reranker.Provider"}},"type":"object"},"KnowledgeBaseUpdate.Retriever.Reranker.Provider":{"properties":{"cohere":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.Retriever.Reranker.Provider.Cohere"}},"type":"object"},"KnowledgeBaseUpdate.Retriever.Reranker.Provider.Cohere":{"properties":{"api_key":{"type":"string"},"model":{"type":"string"}},"required":["api_key","model"],"type":"object"},"KnowledgeBaseUpdate.VectorDatabase":{"properties":{"postgres":{"$ref":"#/components/schemas/KnowledgeBaseUpdate.VectorDatabase.Postgres"}},"type":"object"},"KnowledgeBaseUpdate.VectorDatabase.Postgres":{"properties":{"dsn":{"type":"string"}},"required":["dsn"],"type":"object"},"Link":{"description":"A pointer from the current span to another span in the same trace or in a\ndifferent trace. For example, this can be used in batching operations,\nwhere a single batch handler processes multiple requests from different\ntraces or when the handler receives a request from a different project.","properties":{"attributes":{"description":"A collection of attribute key/value pairs on the link.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of dropped attributes. If the value is 0,\nthen no attributes were dropped.","format":"int64","type":"integer"},"flags":{"description":"Flags, a bit field.\n\nBits 0-7 (8 least significant bits) are the trace flags as defined in W3C\nTrace Context specification. To read the 8-bit W3C trace flag, use `flags\n\u0026 SPAN_FLAGS_TRACE_FLAGS_MASK`.\n\nSee https://www.w3.org/TR/trace-context-2/#trace-flags for the flag\ndefinitions.\n\nBits 8 and 9 represent the 3 states of whether the link is remote.\nThe states are (unknown, is not remote, is remote).\nTo read whether the value is known, use `(flags \u0026\nSPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`. To read whether the link is\nremote, use `(flags \u0026 SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\nReaders MUST NOT assume that bits 10-31 (22 most significant bits) will\nbe zero. When creating new spans, bits 10-31 (most-significant 22-bits)\nMUST be zero.\n\n[Optional].","format":"int64","type":"integer"},"span_id":{"description":"A unique identifier for the linked span. The ID is an 8-byte array.","format":"byte","type":"string"},"trace_id":{"description":"A unique identifier of a trace that this linked span is part of. The ID\nis a 16-byte array.","format":"byte","type":"string"},"trace_state":{"description":"The trace_state associated with the link.","type":"string"}},"type":"object"},"LintHint":{"description":"LintHint is a generic linting hint.","properties":{"column":{"description":"Column number of the lint.","format":"int32","type":"integer"},"hint":{"description":"The hint message.","type":"string"},"line":{"description":"Line number of the lint.","format":"int32","type":"integer"},"lint_type":{"description":"Optional lint type or enum.","type":"string"}},"type":"object"},"LintMCPConfigRequest":{"properties":{"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool contains YAML configuration.","type":"object"}},"required":["tools"],"type":"object"},"LintMCPConfigResponse":{"properties":{"lint_hints":{"additionalProperties":{"$ref":"#/components/schemas/LintHint"},"description":"Map of tool names to their linting issues. Empty if no issues are found.","type":"object"}},"type":"object"},"ListAIAgentsRequest.Filter":{"properties":{"mcp_server_id":{"type":"string"},"name_contains":{"description":"Any AI agents that partially match this name will be returned.","type":"string"},"secret_id":{"type":"string"},"tags[string]":{"additionalProperties":{"type":"string"},"description":"AI agents that match all the provided tags will be returned.","type":"object"}},"type":"object"},"ListAIAgentsResponse":{"properties":{"ai_agents":{"items":{"$ref":"#/components/schemas/AIAgent"},"type":"array"},"next_page_token":{"type":"string"}},"type":"object"},"ListCatalogsResponse":{"properties":{"catalogs":{"items":{"$ref":"#/components/schemas/Catalog"},"type":"array"},"next_page_token":{"type":"string"}},"type":"object"},"ListKnowledgeBasesRequest.Filter":{"properties":{"name_contains":{"description":"Any KnowledgeBase that partially match this name will be returned.","type":"string"},"tags[string]":{"additionalProperties":{"type":"string"},"description":"KnowledgeBases that match all the provided tags will be returned.","type":"object"}},"type":"object"},"ListKnowledgeBasesResponse":{"properties":{"knowledge_bases":{"items":{"$ref":"#/components/schemas/KnowledgeBase"},"type":"array"},"next_page_token":{"type":"string"}},"type":"object"},"ListMCPServersRequest.Filter":{"properties":{"display_name_contains":{"description":"Returns MCP servers that partially match this name.","type":"string"},"secret_id":{"description":"Filters MCP servers that reference this secret ID in their tool configurations.","type":"string"},"tags[string]":{"additionalProperties":{"type":"string"},"description":"Filters by tags using exact match. Returns only MCP servers that have all the specified key-value pairs.","type":"object"}},"type":"object"},"ListMCPServersResponse":{"properties":{"mcp_servers":{"items":{"$ref":"#/components/schemas/v1alpha3.MCPServer"},"type":"array"},"next_page_token":{"description":"Token to retrieve the next page of results. Empty if there are no more results.","type":"string"}},"type":"object"},"ListQueriesRequest.Filter":{"description":"Filter criteria for listing queries.","properties":{"tags[string]":{"additionalProperties":{"type":"string"},"description":"Queries that match all the provided tags will be returned.","title":"Filter queries that contain all of these key/value pairs","type":"object"}},"type":"object"},"ListQueriesResponse":{"description":"Response of the ListQueries operation.","properties":{"queries":{"items":{"$ref":"#/components/schemas/QueryMetadata"},"title":"A description for each available predefined query","type":"array"}},"type":"object"},"ListTablesResponse":{"properties":{"next_page_token":{"type":"string"},"tables":{"items":{"$ref":"#/components/schemas/Table"},"type":"array"}},"type":"object"},"ListTracesRequest.Filter":{"properties":{"attribute_filters":{"description":"Span attribute filters. Key is auto-prefixed with 'span_attributes.' by backend. All filters use AND logic.","items":{"$ref":"#/components/schemas/AttributeFilter"},"type":"array"},"end_time":{"description":"End time for the query (exclusive). Defaults to current time + 5 minutes if not provided.","format":"date-time","type":"string"},"has_errors":{"description":"When true, filter for spans with error status.","nullable":true,"type":"boolean"},"min_duration_ns":{"description":"Filter for spans with duration greater than this value in nanoseconds.","format":"int64","nullable":true,"type":"string"},"service_names":{"description":"Filter by service name (from resource attributes). OR logic - matches if root service is any of these.","items":{"type":"string"},"type":"array"},"span_ids":{"description":"Filter by span ID. Returns traces containing any of these spans.","items":{"type":"string"},"type":"array"},"start_time":{"description":"Start time for the query (inclusive). Defaults to Unix epoch (1970-01-01) if not provided.","format":"date-time","type":"string"}},"title":"Filter criteria for listing traces including time range.\nDefault behavior:\n- start_time: defaults to Unix epoch (1970-01-01) if not provided\n- end_time: defaults to current time + 5 minutes if not provided","type":"object"},"ListTracesResponse":{"description":"ListTracesResponse is the response message for listing traces.","properties":{"matched_spans":{"additionalProperties":{"$ref":"#/components/schemas/MatchedSpanIds"},"description":"Map of trace_id to span IDs that matched the filters. Only populated when attribute filters are active.","readOnly":true,"type":"object"},"next_page_token":{"description":"Opaque token to retrieve the next page of results. Empty if this is the last page.","type":"string"},"returned_end_time":{"description":"End time of the newest trace in this page. Use with returned_start_time to highlight the current view window in a timeline.","format":"date-time","readOnly":true,"type":"string"},"returned_start_time":{"description":"Start time of the oldest trace in this page. Use with returned_end_time to highlight the current view window in a timeline.","format":"date-time","readOnly":true,"type":"string"},"total_count":{"description":"Total number of traces matching the time range filter, regardless of pagination. Use this to display 'Showing X of Y traces'.","format":"int32","readOnly":true,"type":"integer"},"traces":{"description":"List of trace summaries matching the query (sorted by start_time, newest first).","items":{"$ref":"#/components/schemas/TraceSummary"},"type":"array"}},"type":"object"},"ListTranscriptsRequest.Filter":{"description":"Optional filters for narrowing the transcript list.","properties":{"end_time":{"description":"Filter conversations that started before this time (exclusive).","format":"date-time","type":"string"},"has_errors":{"description":"Filter for conversations that contain errors.","nullable":true,"type":"boolean"},"query":{"description":"Free-text search across conversation titles and content.","type":"string"},"start_time":{"description":"Filter conversations that started after this time (inclusive).","format":"date-time","type":"string"},"status":{"$ref":"#/components/schemas/TranscriptStatus"}},"type":"object"},"ListTranscriptsResponse":{"properties":{"next_page_token":{"description":"Token for fetching the next page. Empty if no more results.","type":"string"},"transcripts":{"description":"List of conversation summaries.","items":{"$ref":"#/components/schemas/TranscriptSummary"},"type":"array"}},"type":"object"},"MCPServer.State":{"description":"State of the MCP server.\n\n - STATE_STARTING: The MCP server is starting.\n - STATE_RUNNING: The MCP server is running.\n - STATE_STOPPING: The MCP server is in the process of stopping.\n - STATE_STOPPED: The MCP server is stopped and in paused state.\n - STATE_ERROR: The MCP server encountered an error.","enum":["STATE_STARTING","STATE_RUNNING","STATE_STOPPING","STATE_STOPPED","STATE_ERROR"],"type":"string"},"MCPServer.Status":{"description":"MCP server status may contain an error message.","properties":{"error":{"description":"Error message if the MCP server is in an error state. Empty if no error.","type":"string"}},"type":"object"},"MCPServerCreate":{"description":"MCPServerCreate contains the details for the MCP server creation request.","properties":{"description":{"description":"Optional MCP server description.","type":"string"},"display_name":{"description":"User-friendly MCP server name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"tags":{"additionalProperties":{"type":"string"},"description":"Optional list of tags to attach to a MCP server.","type":"object"},"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool defines a capability that the MCP server exposes.","type":"object"}},"required":["display_name","tools"],"type":"object"},"MCPServerUpdate":{"properties":{"description":{"description":"MCP server description.","type":"string"},"display_name":{"description":"User-friendly MCP server name.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"tags":{"additionalProperties":{"type":"string"},"description":"A map of tags to add, update or delete.\nIf a tag's value is empty, the server interprets that as a deletion.","type":"object"},"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool defines a capability that the MCP server exposes.","type":"object"}},"type":"object"},"MatchedSpanIds":{"description":"MatchedSpanIds contains the list of span IDs within a trace that matched the filters.","properties":{"span_ids":{"description":"Span IDs that matched the attribute filters within this trace.","items":{"type":"string"},"type":"array"}},"type":"object"},"OpenAICompatible":{"properties":{"api_key":{"type":"string"},"base_url":{"type":"string"}},"required":["base_url"],"type":"object"},"QueryMetadata":{"description":"A description of a predefined query available in the system.","properties":{"description":{"title":"A description of what this query returns","type":"string"},"filters":{"items":{"$ref":"#/components/schemas/FilterMetadata"},"title":"Available filters for this query","type":"array"},"name":{"title":"Name of the query that can be used in the service to execute it","type":"string"},"tags":{"additionalProperties":{"type":"string"},"title":"Tags for grouping queries (e.g., category, type, component)","type":"object"},"unit":{"title":"Unit of measurement for the returned time series","type":"string"}},"type":"object"},"Resource":{"description":"Resource information.","properties":{"attributes":{"description":"Set of attributes that describe the resource.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"type":"array"},"dropped_attributes_count":{"description":"The number of dropped attributes. If the value is 0, then\nno attributes were dropped.","format":"int64","type":"integer"}},"type":"object"},"Resources":{"properties":{"cpu_shares":{"description":"`cpu_shares` is a string specifying the amount of CPU to allocate for the\npipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable\nunits include:\n- Decimal SI units: \"m\" (e.g., \"500m\" for 500 millicores, \"2\" for 2 cores)\nCPU shares can be specified in millicores (1 core = 1000 millicores).\nIf you don't specify a unit, the value is interpreted as the number of cores.","type":"string"},"memory_shares":{"description":"`memory_shares` is a string specifying the amount of memory to allocate for\nthe pipeline.\n\nThis follows the [Kubernetes quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/) format. Acceptable units\ninclude:\n- Decimal SI units: \"K\", \"M\", \"G\", \"T\", \"P\", \"E\" (e.g., \"128M\" for 128\n megabytes)\n- Binary SI units: \"Ki\", \"Mi\", \"Gi\", \"Ti\", \"Pi\", \"Ei\" (e.g., \"512Mi\" for\n512 mebibytes) If you don't specify a unit, the value is interpreted as\nbytes.","type":"string"}},"required":["memory_shares","cpu_shares"],"type":"object"},"Row":{"properties":{"values":{"items":{"$ref":"#/components/schemas/v1alpha3.Value"},"type":"array"}},"type":"object"},"SASLMechanism":{"description":"SASL mechanism to use for authentication.","enum":["SASL_MECHANISM_SCRAM_SHA_256","SASL_MECHANISM_SCRAM_SHA_512"],"type":"string"},"Skill":{"description":"A skill that the agent can perform.","properties":{"description":{"description":"Description of what the skill does.","type":"string"},"examples":{"description":"Example prompts that demonstrate the skill.","items":{"type":"string"},"type":"array"},"id":{"description":"Unique identifier for the skill.","type":"string"},"input_modes":{"description":"Supported input modes (e.g., \"text\", \"file\").","items":{"type":"string"},"type":"array"},"name":{"description":"Human-readable name for the skill.","type":"string"},"output_modes":{"description":"Supported output modes (e.g., \"text\", \"file\").","items":{"type":"string"},"type":"array"},"tags":{"description":"Tags for categorizing the skill.","items":{"type":"string"},"type":"array"}},"required":["id","name","description"],"type":"object"},"Span":{"description":"A Span represents a single operation performed by a single component of the\nsystem.","properties":{"attributes":{"description":"\"/http/user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2)\n AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98\n Safari/537.36\"\n \"/http/server_latency\": 300\n \"example.com/myattribute\": true\n \"example.com/score\": 10.239\n\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).\nThe behavior of software that receives duplicated keys can be\nunpredictable.","items":{"$ref":"#/components/schemas/KeyValue"},"title":"A collection of key/value pairs. Note, global attributes\nlike server name can be set using the resource API. Examples of attributes:","type":"array"},"dropped_attributes_count":{"description":"The number of attributes that were discarded. Attributes\ncan be discarded because their keys are too long or because there are too\nmany attributes. If this value is 0, then no attributes were dropped.","format":"int64","type":"integer"},"dropped_events_count":{"description":"The number of dropped events. If the value is 0, then no\nevents were dropped.","format":"int64","type":"integer"},"dropped_links_count":{"description":"The number of dropped links after the maximum size was\nenforced. If this value is 0, then no links were dropped.","format":"int64","type":"integer"},"end_time_unix_nano":{"description":"The end time of the span. On the client side, this is the time\nkept by the local machine where the span execution ends. On the server\nside, this is the time when the server application handler stops running.\nValue is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January\n1970.\n\nThis field is semantically required and it is expected that end_time \u003e=\nstart_time.","format":"uint64","type":"string"},"events":{"description":"A collection of Event items.","items":{"$ref":"#/components/schemas/Event"},"type":"array"},"flags":{"description":"Flags, a bit field.\n\nBits 0-7 (8 least significant bits) are the trace flags as defined in W3C\nTrace Context specification. To read the 8-bit W3C trace flag, use `flags \u0026\nSPAN_FLAGS_TRACE_FLAGS_MASK`.\n\nSee https://www.w3.org/TR/trace-context-2/#trace-flags for the flag\ndefinitions.\n\nBits 8 and 9 represent the 3 states of whether a span's parent\nis remote. The states are (unknown, is not remote, is remote).\nTo read whether the value is known, use `(flags \u0026\nSPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`. To read whether the span is\nremote, use `(flags \u0026 SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\nWhen creating span messages, if the message is logically forwarded from\nanother source with an equivalent flags fields (i.e., usually another OTLP\nspan message), the field SHOULD be copied as-is. If creating from a source\nthat does not have an equivalent flags field (such as a runtime\nrepresentation of an OpenTelemetry span), the high 22 bits MUST be set to\nzero. Readers MUST NOT assume that bits 10-31 (22 most significant bits)\nwill be zero.\n\n[Optional].","format":"int64","type":"integer"},"kind":{"$ref":"#/components/schemas/SpanKind"},"links":{"description":"A collection of Links, which are references from this span to a span\nin the same or different trace.","items":{"$ref":"#/components/schemas/Link"},"type":"array"},"name":{"description":"A description of the span's operation.\n\nFor example, the name can be a qualified method name or a file name\nand a line number where the operation is called. A best practice is to use\nthe same display name at the same call point in an application.\nThis makes it easier to correlate spans in different traces.\n\nThis field is semantically required to be set to non-empty string.\nEmpty value is equivalent to an unknown span name.\n\nThis field is required.","type":"string"},"parent_span_id":{"description":"The `span_id` of this span's parent span. If this is a root span, then this\nfield must be empty. The ID is an 8-byte array.","format":"byte","type":"string"},"resource":{"$ref":"#/components/schemas/Resource"},"resource_schema_url":{"description":"The Resource Schema URL, if known. This is the identifier of the Schema\nthat the resource data is recorded in. Notably, the last part of the URL\npath is the version number of the schema:\nhttp[s]://server[:port]/path/\u003cversion\u003e. To learn more about Schema URL see\nhttps://opentelemetry.io/docs/specs/otel/schemas/#schema-url\nThis schema_url applies to the data in the \"resource\" field only.","type":"string"},"scope":{"$ref":"#/components/schemas/InstrumentationScope"},"scope_schema_url":{"description":"The Scope Schema URL, if known. This is the identifier of the Schema that\nthe log data is recorded in. Notably, the last part of the URL path is the\nversion number of the schema: http[s]://server[:port]/path/\u003cversion\u003e. To\nlearn more about Schema URL see\nhttps://opentelemetry.io/docs/specs/otel/schemas/#schema-url\nThis schema_url applies to the data in the \"scope\" field and the rest of\nthe data in this proto.","type":"string"},"span_id":{"description":"A unique identifier for a span within a trace, assigned when the span\nis created. The ID is an 8-byte array. An ID with all zeroes OR of length\nother than 8 bytes is considered invalid (empty string in OTLP/JSON\nis zero-length and thus is also invalid).\n\nThis field is required.","format":"byte","type":"string"},"start_time_unix_nano":{"description":"The start time of the span. On the client side, this is the time\nkept by the local machine where the span execution starts. On the server\nside, this is the time when the server's application handler starts\nrunning. Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1\nJanuary 1970.\n\nThis field is semantically required and it is expected that end_time \u003e=\nstart_time.","format":"uint64","type":"string"},"status":{"$ref":"#/components/schemas/v1.Status"},"trace_id":{"description":"A unique identifier for a trace. All spans from the same trace share\nthe same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR\nof length other than 16 bytes is considered invalid (empty string in\nOTLP/JSON is zero-length and thus is also invalid).\n\nThis field is required.","format":"byte","type":"string"},"trace_state":{"description":"trace_state conveys information about request position in multiple\ndistributed tracing graphs. It is a trace_state in w3c-trace-context\nformat: https://www.w3.org/TR/trace-context/#tracestate-header See also\nhttps://github.com/w3c/distributed-tracing for more details about this\nfield.","type":"string"}},"type":"object"},"SpanKind":{"description":"SpanKind is the type of span. Can be used to specify additional\nrelationships between spans in addition to a parent/child relationship.\n\n - SPAN_KIND_INTERNAL: Indicates that the span represents an internal operation within an\napplication, as opposed to an operation happening at the boundaries.\nDefault value.\n - SPAN_KIND_SERVER: Indicates that the span covers server-side handling of an RPC or other\nremote network request.\n - SPAN_KIND_CLIENT: Indicates that the span describes a request to some remote service.\n - SPAN_KIND_PRODUCER: Indicates that the span describes a producer sending a message to a\nbroker. Unlike CLIENT and SERVER, there is often no direct critical path\nlatency relationship between producer and consumer spans. A PRODUCER span\nends when the message was accepted by the broker while the logical\nprocessing of the message might span a much longer time.\n - SPAN_KIND_CONSUMER: Indicates that the span describes consumer receiving a message from a\nbroker. Like the PRODUCER kind, there is often no direct critical path\nlatency relationship between producer and consumer spans.","enum":["SPAN_KIND_INTERNAL","SPAN_KIND_SERVER","SPAN_KIND_CLIENT","SPAN_KIND_PRODUCER","SPAN_KIND_CONSUMER"],"type":"string"},"StartAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"StartMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"StatusCode":{"description":"- STATUS_CODE_OK: The Span has been validated by an Application developer or Operator to\nhave completed successfully.\n - STATUS_CODE_ERROR: The Span contains an error.","enum":["STATUS_CODE_OK","STATUS_CODE_ERROR"],"title":"For the semantics of status codes see\nhttps://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status","type":"string"},"StopAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"StopMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"Subagent":{"description":"Subagent configuration for delegating specialized tasks.","properties":{"description":{"description":"Optional subagent description.","type":"string"},"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/AIAgent.MCPServer"},"description":"Map of MCP servers that this subagent can use.\nReferences Redpanda MCP servers by ID.","type":"object"},"system_prompt":{"description":"System instructions that define how this subagent should behave. The subagent inherits the provider and model from its parent agent.","type":"string"}},"required":["system_prompt"],"type":"object"},"Table":{"description":"Table mirrors a row from `SHOW TABLES FROM \u003ccatalog\u003e`. Backing-specific\nfields (connection_name, topic_name, *_policy) are only populated for\nKafka-backed tables.","properties":{"connection_name":{"nullable":true,"type":"string"},"error_handling_policy":{"nullable":true,"type":"string"},"lookup_policy":{"nullable":true,"type":"string"},"name":{"type":"string"},"namespace_name":{"type":"string"},"output_schema_full_message_name":{"nullable":true,"type":"string"},"struct_mapping_policy":{"nullable":true,"type":"string"},"subject_name":{"nullable":true,"type":"string"},"topic_name":{"nullable":true,"type":"string"}},"type":"object"},"TimeSeries":{"description":"A sequence of data points for a label combination.","properties":{"labels":{"additionalProperties":{"type":"string"},"title":"Labels associated to the time series","type":"object"},"name":{"title":"Name is a human friendly name for the series, computed from labels","type":"string"},"values":{"items":{"$ref":"#/components/schemas/DataPoint"},"title":"The sequence of data points associated with the time series","type":"array"}},"type":"object"},"Tool":{"description":"A configuration tool for the MCP server.","properties":{"component_type":{"$ref":"#/components/schemas/ComponentType"},"config_yaml":{"description":"The contents of the configuration tool in YAML format.","type":"string"}},"required":["config_yaml"],"type":"object"},"Trace":{"description":"Trace represents a complete distributed trace with all its spans.","properties":{"spans":{"description":"List of all spans belonging to this trace. Use the parent_span_id field to reconstruct the span hierarchy.","items":{"$ref":"#/components/schemas/Span"},"type":"array"},"summary":{"$ref":"#/components/schemas/TraceSummary"},"trace_id":{"description":"Unique trace identifier as a 32-character hexadecimal string.","pattern":"^[0-9a-f]{32}$","type":"string"}},"type":"object"},"TraceHistogram":{"description":"TraceHistogram contains bucketed trace counts for timeline visualization.","properties":{"bucket_duration":{"description":"Duration of each histogram bucket.","type":"string"},"buckets":{"description":"Time-ordered buckets covering the query range.","items":{"$ref":"#/components/schemas/TraceHistogramBucket"},"type":"array"}},"type":"object"},"TraceHistogramBucket":{"description":"TraceHistogramBucket represents a single time bucket in the histogram.","properties":{"count":{"description":"Number of traces that started within this bucket.","format":"int32","type":"integer"},"error_count":{"description":"Number of traces with errors in this bucket.","format":"int32","type":"integer"},"start_time":{"description":"Start time of this bucket (inclusive).","format":"date-time","type":"string"}},"type":"object"},"TraceSummary":{"description":"TraceSummary contains high-level metadata about a trace.","properties":{"duration":{"description":"Total duration of the trace, calculated as (latest span end time) - (earliest span start time).","readOnly":true,"type":"string"},"error_count":{"description":"Number of spans in this trace that have an error status.","format":"int32","readOnly":true,"type":"integer"},"root_service_name":{"description":"Service name extracted from the root span's 'service.name' resource attribute. May be empty if the root span is unavailable or lacks the attribute.","type":"string"},"root_span_name":{"description":"Name of the root span (the span with no parent). May be empty if the root span is not yet available.","type":"string"},"span_count":{"description":"Total number of spans that belong to this trace.","format":"int32","readOnly":true,"type":"integer"},"start_time":{"description":"Start time of the trace (earliest span start time).","format":"date-time","readOnly":true,"type":"string"},"trace_id":{"description":"Unique trace identifier as a 32-character hexadecimal string.","pattern":"^[0-9a-f]{32}$","type":"string"}},"type":"object"},"TranscriptError":{"description":"Error information associated with a transcript or turn.\nSourced from OTel span status_code = ERROR and status_message.","properties":{"code":{"description":"Error code or category.","type":"string"},"message":{"description":"Human-readable error description. From OTel span status_message.","type":"string"}},"type":"object"},"TranscriptStatus":{"description":"Transcript execution status.\nDerived from the OTel span status_code of the root agent span.\n\n - TRANSCRIPT_STATUS_RUNNING: The conversation is still in progress (root span has not ended).\n - TRANSCRIPT_STATUS_COMPLETED: The conversation completed successfully (status_code = OK or UNSET).\n - TRANSCRIPT_STATUS_ERROR: The conversation ended with an error (status_code = ERROR).","enum":["TRANSCRIPT_STATUS_RUNNING","TRANSCRIPT_STATUS_COMPLETED","TRANSCRIPT_STATUS_ERROR"],"type":"string"},"TranscriptSummary":{"description":"Summary information for a single transcript (conversation).\nAggregated from the spans sharing the same gen_ai.conversation.id.","properties":{"agent_id":{"description":"Agent that produced this conversation. For managed agents this is the\nRedpanda agent ID; for BYOA this is the agent identifier from the\nspan's resource or span attributes.","readOnly":true,"type":"string"},"conversation_id":{"description":"Conversation ID from the OTel GenAI semantic conventions\n(gen_ai.conversation.id).","type":"string"},"duration":{"description":"Total conversation duration (end_time - start_time).","type":"string"},"end_time":{"description":"When the conversation ended. From the latest span end_time.","format":"date-time","type":"string"},"has_errors":{"description":"Whether any turn in the conversation had an error.","type":"boolean"},"start_time":{"description":"When the conversation started. From the earliest span start_time.","format":"date-time","type":"string"},"status":{"$ref":"#/components/schemas/TranscriptStatus"},"title":{"description":"Short description of the conversation, e.g. derived from the first\nuser message or set by the agent.","type":"string"},"turn_count":{"description":"Number of user turns (interactions) in the conversation.","format":"int32","type":"integer"},"usage":{"$ref":"#/components/schemas/TranscriptUsage"},"user_id":{"description":"Identifier of the user who initiated the conversation.","type":"string"}},"required":["conversation_id"],"type":"object"},"TranscriptToolCall":{"description":"Tool call information associated with a transcript turn.\nEach tool call corresponds to a child span with\ngen_ai.operation.name = \"execute_tool\".","properties":{"error":{"$ref":"#/components/schemas/TranscriptError"},"input":{"description":"Tool invocation parameters (JSON-encoded).","type":"string"},"latency":{"description":"Tool execution duration. Derived from the span's duration.","type":"string"},"name":{"description":"Tool name. From gen_ai.tool.name span attribute.","type":"string"},"output":{"description":"Tool execution result (JSON-encoded).","type":"string"},"status":{"$ref":"#/components/schemas/TranscriptToolCallStatus"},"tool_call_id":{"description":"Unique tool call identifier. Sourced from the OTel span ID.","type":"string"}},"required":["name"],"type":"object"},"TranscriptToolCallStatus":{"description":"Tool call status within a transcript turn.\nDerived from the OTel span status_code of the tool execution span.\n\n - TRANSCRIPT_TOOL_CALL_STATUS_RUNNING: Tool call is currently executing (span has not ended).\n - TRANSCRIPT_TOOL_CALL_STATUS_COMPLETED: Tool call completed successfully.\n - TRANSCRIPT_TOOL_CALL_STATUS_ERROR: Tool call ended with an error.","enum":["TRANSCRIPT_TOOL_CALL_STATUS_RUNNING","TRANSCRIPT_TOOL_CALL_STATUS_COMPLETED","TRANSCRIPT_TOOL_CALL_STATUS_ERROR"],"type":"string"},"TranscriptTurn":{"description":"A single transcript turn representing one message in the conversation.\nEach turn corresponds to an OTel span within the conversation trace.","properties":{"content":{"description":"Message content (user prompt, assistant response, or tool result).","type":"string"},"error":{"$ref":"#/components/schemas/TranscriptError"},"is_reconstructed":{"description":"Whether this turn was reconstructed from conversation history embedded\nin a later span's input messages. This happens when earlier spans were\nevicted (e.g. due to retention) but the full conversation history was\npreserved in subsequent LLM calls. Reconstructed turns lack precise\ntimestamps, latency, and usage metrics.","type":"boolean"},"latency":{"description":"Turn duration. Derived from the span's duration.","type":"string"},"model":{"description":"LLM model used for this turn. From gen_ai.request.model.","type":"string"},"role":{"$ref":"#/components/schemas/TranscriptTurnRole"},"timestamp":{"description":"When this turn occurred. From the span's start_time.","format":"date-time","type":"string"},"tool_calls":{"description":"Tool calls made during this turn (assistant turns only).\nEach entry corresponds to a child span with gen_ai.operation.name = \"execute_tool\".","items":{"$ref":"#/components/schemas/TranscriptToolCall"},"type":"array"},"turn_id":{"description":"Unique turn identifier. Sourced from the OTel span ID.","type":"string"},"usage":{"$ref":"#/components/schemas/TranscriptUsage"}},"required":["turn_id"],"type":"object"},"TranscriptTurnRole":{"description":"Transcript turn role.\nInferred from gen_ai.operation.name and the span's position in the hierarchy.\n\n - TRANSCRIPT_TURN_ROLE_SYSTEM: System prompt / instructions.\n - TRANSCRIPT_TURN_ROLE_USER: User input message.\n - TRANSCRIPT_TURN_ROLE_ASSISTANT: LLM assistant response (gen_ai.operation.name = \"chat\").\n - TRANSCRIPT_TURN_ROLE_TOOL: Tool execution result (gen_ai.operation.name = \"execute_tool\").","enum":["TRANSCRIPT_TURN_ROLE_SYSTEM","TRANSCRIPT_TURN_ROLE_USER","TRANSCRIPT_TURN_ROLE_ASSISTANT","TRANSCRIPT_TURN_ROLE_TOOL"],"type":"string"},"TranscriptUsage":{"description":"Token and cost usage for a transcript or turn.\nSourced from gen_ai.usage.input_tokens and gen_ai.usage.output_tokens\nspan attributes. For the summary level, values are aggregated across all turns.","properties":{"estimated_cost_usd":{"description":"Estimated cost in USD. May not be available for all providers.","format":"double","type":"number"},"input_tokens":{"description":"Number of input/prompt tokens. From gen_ai.usage.input_tokens.","format":"int64","type":"string"},"output_tokens":{"description":"Number of output/completion tokens. From gen_ai.usage.output_tokens.","format":"int64","type":"string"},"total_tokens":{"description":"Sum of input and output tokens.","format":"int64","type":"string"}},"type":"object"},"UpdateAIAgentResponse":{"properties":{"ai_agent":{"$ref":"#/components/schemas/AIAgent"}},"type":"object"},"UpdateKnowledgeBaseResponse":{"properties":{"knowledge_base":{"$ref":"#/components/schemas/KnowledgeBase"}},"type":"object"},"UpdateMCPServerResponse":{"properties":{"mcp_server":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}},"type":"object"},"rpc.Status":{"properties":{"code":{"format":"int32","type":"integer"},"details":{"items":{"$ref":"#/components/schemas/Any"},"type":"array"},"message":{"type":"string"}},"type":"object"},"v1.Status":{"description":"The Status type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs.","properties":{"code":{"$ref":"#/components/schemas/StatusCode"},"message":{"description":"A developer-facing human readable error message.","type":"string"}},"type":"object"},"v1alpha3.MCPServer":{"description":"Defines the MCP server resource.","properties":{"description":{"description":"Optional MCP server description.","type":"string"},"display_name":{"description":"User-friendly MCP server name.","type":"string"},"id":{"description":"Unique identifier for the MCP server.","type":"string"},"resources":{"$ref":"#/components/schemas/Resources"},"state":{"$ref":"#/components/schemas/MCPServer.State"},"status":{"$ref":"#/components/schemas/MCPServer.Status"},"tags":{"additionalProperties":{"type":"string"},"description":"Tags are key-value pairs that can be assigned to a MCP server resource.\nThey help organize MCP servers and enable filtering when listing them.","type":"object"},"tools":{"additionalProperties":{"$ref":"#/components/schemas/Tool"},"description":"Map of tool names to their configurations. Each tool defines a capability that the MCP server exposes.","type":"object"},"url":{"description":"URL to connect to the MCP server.","readOnly":true,"type":"string"}},"required":["id","display_name","tools"],"type":"object"},"v1alpha3.Value":{"description":"Value is a single cell. `null_value` distinguishes SQL NULL from an\nempty string; `value` is unset when `null_value` is true.","properties":{"null_value":{"type":"boolean"},"value":{"nullable":true,"type":"string"}},"type":"object"}},"securitySchemes":{"auth0":{"description":"RedpandaCloud","flows":{"implicit":{"authorizationUrl":"https://auth.prd.cloud.redpanda.com/oauth/authorize","scopes":{},"x-client-id":"dQjapNIAHhF7EQqQToRla3yEII9sUSap"}},"type":"oauth2"}}},"info":{"title":"Redpanda Cloud Data Plane API","version":"v1"},"openapi":"3.0.3","paths":{"/v1alpha3/ai-agents":{"get":{"description":"List AI agents. Optional: filter based on AI agent name.","operationId":"AIAgentService_ListAIAgents","parameters":[{"description":"Any AI agents that partially match this name will be returned.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}},{"in":"query","name":"filter.secret_id","schema":{"type":"string"}},{"in":"query","name":"filter.mcp_server_id","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 50. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAIAgentsResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List AI Agents","tags":["AI Agents"]},"post":{"description":"Create a new AI agent.","operationId":"AIAgentService_CreateAIAgent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgentCreate"}}},"required":true,"x-originalParamName":"ai_agent"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"Created"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create AI Agent","tags":["AI Agents"]}},"/v1alpha3/ai-agents/{id}":{"delete":{"description":"Delete an AI agent.","operationId":"AIAgentService_DeleteAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete AI Agent","tags":["AI Agents"]},"get":{"description":"Get a specific AI agent.","operationId":"AIAgentService_GetAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get AI Agent","tags":["AI Agents"]},"put":{"description":"Update the configuration of an AI agent.","operationId":"AIAgentService_UpdateAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Specifies which fields should be updated. If not provided,\nall fields will be updated.","in":"query","name":"update_mask","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgentUpdate"}}},"required":true,"x-originalParamName":"ai_agent"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update AI Agent","tags":["AI Agents"]}},"/v1alpha3/ai-agents/{id}:start":{"put":{"description":"Start a stopped AI agent.","operationId":"AIAgentService_StartAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"Started"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Start AI Agent","tags":["AI Agents"]}},"/v1alpha3/ai-agents/{id}:stop":{"put":{"description":"Stop a running AI agent.","operationId":"AIAgentService_StopAIAgent","parameters":[{"description":"AI Agent ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIAgent"}}},"description":"Stopped"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stop AI Agent","tags":["AI Agents"]}},"/v1alpha3/knowledge-bases":{"get":{"operationId":"KnowledgeBaseService_ListKnowledgeBases","parameters":[{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Any KnowledgeBase that partially match this name will be returned.","in":"query","name":"filter.name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]},"post":{"operationId":"KnowledgeBaseService_CreateKnowledgeBase","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseCreate"}}},"required":true,"x-originalParamName":"knowledge_base"},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]}},"/v1alpha3/knowledge-bases/{id}":{"delete":{"operationId":"KnowledgeBaseService_DeleteKnowledgeBase","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]},"get":{"operationId":"KnowledgeBaseService_GetKnowledgeBase","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]},"put":{"operationId":"KnowledgeBaseService_UpdateKnowledgeBase","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"update_mask","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseUpdate"}}},"required":true,"x-originalParamName":"knowledge_base"},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"tags":["KnowledgeBaseService"]}},"/v1alpha3/observability/queries":{"get":{"description":"List all available predefined queries with their metadata (name, description, unit, and available filters).","operationId":"ObservabilityService_ListQueries","parameters":[{"description":"Filter queries that contain all of these key/value pairs\n\nThis is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListQueriesResponse"}}},"description":"Queries metadata"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Available Queries","tags":["Observability"]}},"/v1alpha3/observability/queries/{query_name}:executeInstant":{"post":{"description":"Execute a predefined query at a single point in time. Returns a single data point for each time series. If time is not specified, defaults to current time. Optional filters can be applied as key-value pairs.","operationId":"ObservabilityService_ExecuteInstantQuery","parameters":[{"description":"Predefined query to request data from","in":"path","name":"query_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteInstantQueryParams"}}},"description":"Instant query execution parameters","required":true,"x-originalParamName":"params"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteInstantQueryResponse"}}},"description":"Instant query results"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Execute Instant Query","tags":["Observability"]}},"/v1alpha3/observability/queries/{query_name}:executeRange":{"post":{"description":"Execute a predefined query over a time range. Returns multiple data points between the start and end times. Optional filters can be applied as key-value pairs.","operationId":"ObservabilityService_ExecuteRangeQuery","parameters":[{"description":"Predefined query to request data from","in":"path","name":"query_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRangeQueryParams"}}},"description":"Range query execution parameters","required":true,"x-originalParamName":"params"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRangeQueryResponse"}}},"description":"Range query results"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Execute Range Query","tags":["Observability"]}},"/v1alpha3/redpanda-connect/mcp-servers":{"get":{"description":"Lists MCP servers. Optionally filter by display name, tags, or secret ID.","operationId":"MCPServerService_ListMCPServers","parameters":[{"description":"Returns MCP servers that partially match this name.","in":"query","name":"filter.display_name_contains","schema":{"type":"string"}},{"description":"This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18","in":"query","name":"filter.tags[string]","schema":{"type":"string"}},{"description":"Filters MCP servers that reference this secret ID in their tool configurations.","in":"query","name":"filter.secret_id","schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Value of the next_page_token field returned by the previous response.\nIf not provided, the system assumes the first page is requested.","in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMCPServersResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List MCP servers","tags":["Remote MCP"]},"post":{"description":"Create a new MCP server.","operationId":"MCPServerService_CreateMCPServer","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerCreate"}}},"required":true,"x-originalParamName":"mcp_server"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Create MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers/{id}":{"delete":{"description":"Delete an MCP server.","operationId":"MCPServerService_DeleteMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{}}},"description":"Deleted"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Delete an MCP server","tags":["Remote MCP"]},"get":{"description":"Get a specific MCP server.","operationId":"MCPServerService_GetMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get MCP server","tags":["Remote MCP"]},"put":{"description":"Update the configuration of an MCP server.","operationId":"MCPServerService_UpdateMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Specifies which fields to update. If not provided, updates all fields.","in":"query","name":"update_mask","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPServerUpdate"}}},"required":true,"x-originalParamName":"mcp_server"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Update an MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers/{id}:start":{"post":{"description":"Start a stopped MCP server.","operationId":"MCPServerService_StartMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"Started"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Start an MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers/{id}:stop":{"post":{"description":"Stop a running MCP server.","operationId":"MCPServerService_StopMCPServer","parameters":[{"description":"MCP server ID.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v1alpha3.MCPServer"}}},"description":"Stopped"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Stop an MCP server","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers:getConfigSchema":{"get":{"description":"Returns the configuration schema for MCP server tools, including available components and processors.","operationId":"MCPServerService_GetMCPServerServiceConfigSchema","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMCPServerServiceConfigSchemaResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get MCP server configuration schema","tags":["Remote MCP"]}},"/v1alpha3/redpanda-connect/mcp-servers:lint-config":{"post":{"description":"Validates a given MCP tool's configuration and returns linting hints. Each tool's YAML configuration is validated. If no problems are found, the response is empty.","operationId":"MCPServerService_LintMCPConfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LintMCPConfigRequest"}}},"required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LintMCPConfigResponse"}}},"description":"Linting finished. See `lint_hints` for details."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Lint a MCP tools configuration","tags":["Remote MCP"]}},"/v1alpha3/sql/catalogs":{"get":{"operationId":"SQLService_ListCatalogs","parameters":[{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"in":"query","name":"page_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogsResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List catalogs","tags":["SQL"]}},"/v1alpha3/sql/catalogs/{catalog}/tables":{"get":{"operationId":"SQLService_ListTables","parameters":[{"in":"path","name":"catalog","required":true,"schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Optional SQL LIKE pattern matched against table name (e.g. 'orders_%').","in":"query","name":"filter","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTablesResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List tables","tags":["SQL"]}},"/v1alpha3/sql/catalogs/{catalog}/tables/{name}":{"get":{"operationId":"SQLService_DescribeTable","parameters":[{"in":"path","name":"catalog","required":true,"schema":{"type":"string"}},{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DescribeTableResponse"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Catalog or table not found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Describe table","tags":["SQL"]}},"/v1alpha3/sql/queries":{"post":{"operationId":"SQLService_ExecuteQuery","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteQueryRequest"}}},"required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteQueryResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Execute query","tags":["SQL"]}},"/v1alpha3/traces":{"get":{"description":"Returns a paginated list of trace summaries for the specified time range.","operationId":"TracingService_ListTraces","parameters":[{"description":"Maximum number of traces to return per page. Defaults to 100 if not specified or set to 0. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Opaque token from a previous ListTracesResponse to fetch the next page. Leave empty for the first page.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Start time for the query (inclusive). Defaults to Unix epoch (1970-01-01) if not provided.","in":"query","name":"filter.start_time","schema":{"format":"date-time","type":"string"}},{"description":"End time for the query (exclusive). Defaults to current time + 5 minutes if not provided.","in":"query","name":"filter.end_time","schema":{"format":"date-time","type":"string"}},{"description":"When true, filter for spans with error status.","in":"query","name":"filter.has_errors","schema":{"type":"boolean"}},{"description":"Filter for spans with duration greater than this value in nanoseconds.","in":"query","name":"filter.min_duration_ns","schema":{"format":"int64","type":"string"}},{"description":"Filter by service name (from resource attributes). OR logic - matches if root service is any of these.","in":"query","name":"filter.service_names","schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by span ID. Returns traces containing any of these spans.","in":"query","name":"filter.span_ids","schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List traces","tags":["Tracing"]}},"/v1alpha3/traces/{trace_id}":{"get":{"description":"Retrieves a complete trace with all its spans by trace ID.","operationId":"TracingService_GetTrace","parameters":[{"description":"Unique trace identifier as a 32-character hexadecimal string.","in":"path","name":"trace_id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get trace","tags":["Tracing"]}},"/v1alpha3/traces:histogram":{"get":{"description":"Returns the distribution of traces over a time range for timeline visualization.","operationId":"TracingService_GetTraceHistogram","parameters":[{"description":"Start time for the query (inclusive). Defaults to Unix epoch (1970-01-01) if not provided.","in":"query","name":"filter.start_time","schema":{"format":"date-time","type":"string"}},{"description":"End time for the query (exclusive). Defaults to current time + 5 minutes if not provided.","in":"query","name":"filter.end_time","schema":{"format":"date-time","type":"string"}},{"description":"When true, filter for spans with error status.","in":"query","name":"filter.has_errors","schema":{"type":"boolean"}},{"description":"Filter for spans with duration greater than this value in nanoseconds.","in":"query","name":"filter.min_duration_ns","schema":{"format":"int64","type":"string"}},{"description":"Filter by service name (from resource attributes). OR logic - matches if root service is any of these.","in":"query","name":"filter.service_names","schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by span ID. Returns traces containing any of these spans.","in":"query","name":"filter.span_ids","schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get trace histogram","tags":["Tracing"]}},"/v1alpha3/transcripts":{"get":{"description":"List transcripts for a specific AI agent. The agent_id query parameter is required and can refer to either a managed Redpanda agent or a bring-your-own-agent (BYOA) deployment.","operationId":"TranscriptService_ListTranscripts","parameters":[{"description":"Agent ID to list conversations for. Required. Can be a managed Redpanda\nagent ID or a BYOA agent identifier.","in":"query","name":"agent_id","required":true,"schema":{"type":"string"}},{"description":"Limit the paginated response to a number of items. Defaults to 50. Use -1 to disable pagination.","in":"query","name":"page_size","schema":{"format":"int32","type":"integer"}},{"description":"Pagination token from a previous ListTranscriptsResponse.","in":"query","name":"page_token","schema":{"type":"string"}},{"description":"Filter conversations that started after this time (inclusive).","in":"query","name":"filter.start_time","schema":{"format":"date-time","type":"string"}},{"description":"Filter conversations that started before this time (exclusive).","in":"query","name":"filter.end_time","schema":{"format":"date-time","type":"string"}},{"description":"Filter by conversation status.\n\n - TRANSCRIPT_STATUS_RUNNING: The conversation is still in progress (root span has not ended).\n - TRANSCRIPT_STATUS_COMPLETED: The conversation completed successfully (status_code = OK or UNSET).\n - TRANSCRIPT_STATUS_ERROR: The conversation ended with an error (status_code = ERROR).","in":"query","name":"filter.status","schema":{"enum":["TRANSCRIPT_STATUS_RUNNING","TRANSCRIPT_STATUS_COMPLETED","TRANSCRIPT_STATUS_ERROR"],"type":"string"}},{"description":"Free-text search across conversation titles and content.","in":"query","name":"filter.query","schema":{"type":"string"}},{"description":"Filter for conversations that contain errors.","in":"query","name":"filter.has_errors","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTranscriptsResponse"}}},"description":"OK"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"List Transcripts","tags":["Transcripts"]}},"/v1alpha3/transcripts/{conversation_id}":{"get":{"description":"Get a single transcript by ID. The agent_id query parameter is required and can refer to either a managed Redpanda agent or a bring-your-own-agent (BYOA) deployment.","operationId":"TranscriptService_GetTranscript","parameters":[{"description":"Conversation ID (gen_ai.conversation.id) to retrieve.","in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}},{"description":"Agent ID the conversation belongs to. Required. Can be a managed Redpanda\nagent ID or a BYOA agent identifier.","in":"query","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTranscriptResponse"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"Not Found"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpc.Status"}}},"description":"An unexpected error response."}},"summary":"Get Transcript","tags":["Transcripts"]}}},"security":[{"auth0":[]}],"servers":[{"description":"Data Plane API","url":"{dataplane_api_url}","variables":{"dataplane_api_url":{"default":"https://{dataplane_api_url}","description":"Find the Data Plane API base URL of a cluster by calling the Get Cluster endpoint of the Control Plane API. The dataplane_api.url field is returned in the response body.\u003cbr\u003e\u003cbr\u003e\n\t\t\t\t\tExample (Dedicated): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.fmc.prd.cloud.redpanda.com\"\u003cbr\u003e\n\t\t\t\t\tExample (BYOC): \"https://api-a4cb21.ck09mi9c4vs17hng9gig.byoc.prd.cloud.redpanda.com\""}}}],"tags":[{"description":"Create and manage AI agents and their configurations.","name":"AI Agents"},{"description":"Create and manage retrieval-augmented generation (RAG) knowledge bases.","name":"Redpanda AI KnowledgeBase"},{"description":"Create and manage MCP servers and their configurations.","name":"Remote MCP"},{"description":"Observability operations for Redpanda.","name":"Observability"},{"description":"Interact with Redpanda SQL by browsing catalogs, tables and executing queries.","name":"SQL"},{"description":"Query and retrieve OpenTelemetry traces from Redpanda.","name":"Tracing"},{"description":"Access and retrieve AI agent conversation transcripts, including turn-by-turn interaction history, tool calls, and usage metrics.","name":"Transcripts"}]} \ No newline at end of file diff --git a/proto/gen/openapi/openapi.v1alpha3.yaml b/proto/gen/openapi/openapi.v1alpha3.yaml index 1bc3966230..26216e47fe 100644 --- a/proto/gen/openapi/openapi.v1alpha3.yaml +++ b/proto/gen/openapi/openapi.v1alpha3.yaml @@ -375,6 +375,29 @@ components: required: - region type: object + Catalog: + properties: + name: + type: string + namespace_name: + type: string + type: + $ref: '#/components/schemas/CatalogType' + type: object + CatalogType: + description: Catalog backing-storage type. Sourced from `system.catalogs.type`. + enum: + - CATALOG_TYPE_REDPANDA + type: string + Column: + description: Column descriptor as reported by the Postgres driver. + properties: + name: + type: string + type: + description: Postgres type name (e.g. "INT8", "TEXT", "TIMESTAMPTZ"). + type: string + type: object ComponentType: description: Component type for this tool. enum: @@ -427,6 +450,15 @@ components: type: object DeleteMCPServerResponse: type: object + DescribeTableResponse: + properties: + columns: + items: + $ref: '#/components/schemas/Column' + type: array + table: + $ref: '#/components/schemas/Table' + type: object Event: description: |- Event is a time-stamped annotation of the span, consisting of user-supplied @@ -483,6 +515,38 @@ components: title: Instant query results, each with a single data point at the requested time type: array type: object + ExecuteQueryRequest: + properties: + row_limit: + description: |- + Override the server row cap for this query. When unset, the server + default applies. + format: int32 + nullable: true + type: integer + statement: + type: string + timeout: + description: Per-query timeout. When unset, the server default applies. + nullable: true + type: string + type: object + ExecuteQueryResponse: + properties: + columns: + items: + $ref: '#/components/schemas/Column' + type: array + rows: + items: + $ref: '#/components/schemas/Row' + type: array + truncated: + description: |- + True if the server row cap fired before the result set was + exhausted. + type: boolean + type: object ExecuteRangeQueryParams: description: Parameters for executing a range query. properties: @@ -1222,6 +1286,15 @@ components: next_page_token: type: string type: object + ListCatalogsResponse: + properties: + catalogs: + items: + $ref: '#/components/schemas/Catalog' + type: array + next_page_token: + type: string + type: object ListKnowledgeBasesRequest.Filter: properties: name_contains: @@ -1285,6 +1358,15 @@ components: title: A description for each available predefined query type: array type: object + ListTablesResponse: + properties: + next_page_token: + type: string + tables: + items: + $ref: '#/components/schemas/Table' + type: array + type: object ListTracesRequest.Filter: properties: attribute_filters: @@ -1552,6 +1634,13 @@ components: - memory_shares - cpu_shares type: object + Row: + properties: + values: + items: + $ref: '#/components/schemas/v1alpha3.Value' + type: array + type: object SASLMechanism: description: SASL mechanism to use for authentication. enum: @@ -1855,6 +1944,38 @@ components: required: - system_prompt type: object + Table: + description: |- + Table mirrors a row from `SHOW TABLES FROM `. Backing-specific + fields (connection_name, topic_name, *_policy) are only populated for + Kafka-backed tables. + properties: + connection_name: + nullable: true + type: string + error_handling_policy: + nullable: true + type: string + lookup_policy: + nullable: true + type: string + name: + type: string + namespace_name: + type: string + output_schema_full_message_name: + nullable: true + type: string + struct_mapping_policy: + nullable: true + type: string + subject_name: + nullable: true + type: string + topic_name: + nullable: true + type: string + type: object TimeSeries: description: A sequence of data points for a label combination. properties: @@ -2235,6 +2356,17 @@ components: - display_name - tools type: object + v1alpha3.Value: + description: |- + Value is a single cell. `null_value` distinguishes SQL NULL from an + empty string; `value` is unset when `null_value` is true. + properties: + null_value: + type: boolean + value: + nullable: true + type: string + type: object securitySchemes: auth0: description: RedpandaCloud @@ -3000,6 +3132,138 @@ paths: summary: Lint a MCP tools configuration tags: - Remote MCP + /v1alpha3/sql/catalogs: + get: + operationId: SQLService_ListCatalogs + parameters: + - description: Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination. + in: query + name: page_size + schema: + format: int32 + type: integer + - in: query + name: page_token + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListCatalogsResponse' + description: OK + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpc.Status' + description: An unexpected error response. + summary: List catalogs + tags: + - SQL + /v1alpha3/sql/catalogs/{catalog}/tables: + get: + operationId: SQLService_ListTables + parameters: + - in: path + name: catalog + required: true + schema: + type: string + - description: Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination. + in: query + name: page_size + schema: + format: int32 + type: integer + - in: query + name: page_token + schema: + type: string + - description: Optional SQL LIKE pattern matched against table name (e.g. 'orders_%'). + in: query + name: filter + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListTablesResponse' + description: OK + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpc.Status' + description: An unexpected error response. + summary: List tables + tags: + - SQL + /v1alpha3/sql/catalogs/{catalog}/tables/{name}: + get: + operationId: SQLService_DescribeTable + parameters: + - in: path + name: catalog + required: true + schema: + type: string + - in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/DescribeTableResponse' + description: OK + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/rpc.Status' + description: Catalog or table not found + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpc.Status' + description: An unexpected error response. + summary: Describe table + tags: + - SQL + /v1alpha3/sql/queries: + post: + operationId: SQLService_ExecuteQuery + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExecuteQueryRequest' + required: true + x-originalParamName: body + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ExecuteQueryResponse' + description: OK + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpc.Status' + description: An unexpected error response. + summary: Execute query + tags: + - SQL /v1alpha3/traces: get: description: Returns a paginated list of trace summaries for the specified time range. @@ -3274,6 +3538,8 @@ tags: name: Remote MCP - description: Observability operations for Redpanda. name: Observability + - description: Interact with Redpanda SQL by browsing catalogs, tables and executing queries. + name: SQL - description: Query and retrieve OpenTelemetry traces from Redpanda. name: Tracing - description: Access and retrieve AI agent conversation transcripts, including turn-by-turn interaction history, tool calls, and usage metrics. diff --git a/proto/redpanda/api/auth/v1/authorization.proto b/proto/redpanda/api/auth/v1/authorization.proto index fb1cbcbbb3..3b2e9be836 100644 --- a/proto/redpanda/api/auth/v1/authorization.proto +++ b/proto/redpanda/api/auth/v1/authorization.proto @@ -26,6 +26,7 @@ enum API { API_AI_AGENT = 8; API_AI_GATEWAY = 9; API_PROMETHEUS = 10; + API_REDPANDA_SQL = 11; } // AuthorizationRole defines the primitive pre-defined roles a user can have. diff --git a/proto/redpanda/api/dataplane/v1alpha3/sql.proto b/proto/redpanda/api/dataplane/v1alpha3/sql.proto new file mode 100644 index 0000000000..04ec571363 --- /dev/null +++ b/proto/redpanda/api/dataplane/v1alpha3/sql.proto @@ -0,0 +1,260 @@ +syntax = "proto3"; + +package redpanda.api.dataplane.v1alpha3; + +import "buf/validate/validate.proto"; +import "google/api/annotations.proto"; +import "google/protobuf/duration.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +import "redpanda/api/auth/v1/authorization.proto"; + +// SQLService provides catalog/table introspection and SQL execution +// against Redpanda SQL over the Postgres wire protocol. +service SQLService { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_tag) = { + name: "SQL" + description: "Interact with Redpanda SQL by browsing catalogs, tables and executing queries." + }; + + // ListCatalogs lists all catalogs visible to the caller. + rpc ListCatalogs(ListCatalogsRequest) returns (ListCatalogsResponse) { + option (google.api.http) = {get: "/v1alpha3/sql/catalogs"}; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "List catalogs" + responses: { + key: "200" + value: { + description: "OK" + schema: { + json_schema: {ref: ".redpanda.api.dataplane.v1alpha3.ListCatalogsResponse"} + } + } + } + }; + option (redpanda.api.auth.v1.authorization) = { + required_permission: PERMISSION_VIEW + api: API_REDPANDA_SQL + }; + } + + // ListTables lists tables in a catalog. + rpc ListTables(ListTablesRequest) returns (ListTablesResponse) { + option (google.api.http) = {get: "/v1alpha3/sql/catalogs/{catalog}/tables"}; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "List tables" + responses: { + key: "200" + value: { + description: "OK" + schema: { + json_schema: {ref: ".redpanda.api.dataplane.v1alpha3.ListTablesResponse"} + } + } + } + }; + option (redpanda.api.auth.v1.authorization) = { + required_permission: PERMISSION_VIEW + api: API_REDPANDA_SQL + }; + } + + // DescribeTable returns metadata and column shape for a single table. + rpc DescribeTable(DescribeTableRequest) returns (DescribeTableResponse) { + option (google.api.http) = {get: "/v1alpha3/sql/catalogs/{catalog}/tables/{name}"}; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Describe table" + responses: { + key: "200" + value: { + description: "OK" + schema: { + json_schema: {ref: ".redpanda.api.dataplane.v1alpha3.DescribeTableResponse"} + } + } + } + responses: { + key: "404" + value: { + description: "Catalog or table not found" + schema: { + json_schema: {ref: ".google.rpc.Status"} + } + } + } + }; + option (redpanda.api.auth.v1.authorization) = { + required_permission: PERMISSION_VIEW + api: API_REDPANDA_SQL + }; + } + + // ExecuteQuery runs a single SQL statement. Rows returned are capped + // server-side; `truncated` indicates the cap fired. + rpc ExecuteQuery(ExecuteQueryRequest) returns (ExecuteQueryResponse) { + option (google.api.http) = { + post: "/v1alpha3/sql/queries" + body: "*" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Execute query" + responses: { + key: "200" + value: { + description: "OK" + schema: { + json_schema: {ref: ".redpanda.api.dataplane.v1alpha3.ExecuteQueryResponse"} + } + } + } + }; + option (redpanda.api.auth.v1.authorization) = { + required_permission: PERMISSION_VIEW + api: API_REDPANDA_SQL + }; + } +} + +// Catalog backing-storage type. Sourced from `system.catalogs.type`. +enum CatalogType { + reserved 2; + reserved "CATALOG_TYPE_ICEBERG"; + CATALOG_TYPE_UNSPECIFIED = 0; + CATALOG_TYPE_REDPANDA = 1; +} + +message Catalog { + string name = 1; + string namespace_name = 2; + CatalogType type = 3; +} + +// Table mirrors a row from `SHOW TABLES FROM `. Backing-specific +// fields (connection_name, topic_name, *_policy) are only populated for +// Kafka-backed tables. +message Table { + reserved 1; + reserved "database_name"; + string namespace_name = 2; + string name = 3; + optional string connection_name = 4; + optional string topic_name = 5; + optional string subject_name = 6; + optional string lookup_policy = 7; + optional string error_handling_policy = 8; + optional string struct_mapping_policy = 9; + optional string output_schema_full_message_name = 10; +} + +// Column descriptor as reported by the Postgres driver. +message Column { + string name = 1; + // Postgres type name (e.g. "INT8", "TEXT", "TIMESTAMPTZ"). + string type = 2; +} + +// Value is a single cell. `null_value` distinguishes SQL NULL from an +// empty string; `value` is unset when `null_value` is true. +message Value { + optional string value = 1; + bool null_value = 2; +} + +message Row { + repeated Value values = 1; +} + +message ListCatalogsRequest { + int32 page_size = 1 [ + (buf.validate.field).int32 = { + gte: -1 + lte: 1000 + }, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination." + minimum: -1 + maximum: 1000 + } + ]; + string page_token = 2; +} + +message ListCatalogsResponse { + repeated Catalog catalogs = 1; + string next_page_token = 2; +} + +message ListTablesRequest { + string catalog = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1, + (buf.validate.field).string.max_len = 255 + ]; + int32 page_size = 2 [ + (buf.validate.field).int32 = { + gte: -1 + lte: 1000 + }, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "Limit the paginated response to a number of items. Defaults to 100. Use -1 to disable pagination." + minimum: -1 + maximum: 1000 + } + ]; + string page_token = 3; + // Optional SQL LIKE pattern matched against table name (e.g. + // 'orders_%'). When unset, all tables in the catalog are returned. + optional string filter = 4 [ + (buf.validate.field).string.max_len = 255, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Optional SQL LIKE pattern matched against table name (e.g. 'orders_%')."} + ]; +} + +message ListTablesResponse { + repeated Table tables = 1; + string next_page_token = 2; +} + +message DescribeTableRequest { + string catalog = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1, + (buf.validate.field).string.max_len = 255 + ]; + string name = 2 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1, + (buf.validate.field).string.max_len = 255 + ]; +} + +message DescribeTableResponse { + Table table = 1; + repeated Column columns = 2; +} + +message ExecuteQueryRequest { + string statement = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1, + (buf.validate.field).string.max_len = 262144 + ]; + // Override the server row cap for this query. When unset, the server + // default applies. + optional int32 row_limit = 2 [(buf.validate.field).int32 = { + gte: 1 + lte: 10000 + }]; + // Per-query timeout. When unset, the server default applies. + optional google.protobuf.Duration timeout = 3 [(buf.validate.field).duration = { + gte: {seconds: 1} + lte: {seconds: 300} + }]; +} + +message ExecuteQueryResponse { + repeated Column columns = 1; + repeated Row rows = 2; + // True if the server row cap fired before the result set was + // exhausted. + bool truncated = 3; +}